深入浅析Python代码规范性检测


Posted in Python onJuly 31, 2020

一定要注重代码规范,按照平时的代码管理,可以将Python代码规范检测分为两种:

  1. 静态本地检测:可以借助静态检查工具,比如:Flake8,Pylint等,调研了一下,用Flake8的相对较多,功能满足,本文将使用Flake8
  2. git:可借助git hooks,本文推荐使用pre-commit。

 静态本地检测

Flake8包装了Pyflakes、Pycodestyle和McCabe,也可以自定义插件。功能包括:

  • 检查代码是否符合PEP8
  • 检查是否包含语法错误和未使用的变量和导入
  • 检查代码的复杂度

pip install flake8

配置

推荐在pycharm中配置flake8:

深入浅析Python代码规范性检测

参数说明:

  • Program中填写Flake可执行文件的具体路径
  • arguments中可添加自定义参数,比如设置每行的最大字符数,过滤某些文件(夹)等。

安装完了之后单击就可以检测了:

深入浅析Python代码规范性检测

执行检测之后,如果出现 exit code 0 就说明代码规范,否则可按照提示进行整改。

pre-commit

官网: https://pre-commit.com/

介绍:

使用git的话,可以使用pre-commit钩子,在调用 git commit 命令时会自动执行脚本进行检测,若代码出错,则不会commit成功。

作用:

  • git commit命令之前对代码进行规范性检测
  • 按照配置,对一些不符合规范的代码自动更新为规范的(比如:填充空格、更新import等)
  • 提示更新之后仍不符合规范的代码

安装

pip install pre-commit

Linux中安装完成即可执行pre-commit命令,Windows中需将.exe的路径添加至环境变量,方可执行pre-commit命令。

配置

在项目根目录下添加.pre-commit-config.yaml文件。

可参考官网样例,:

repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
 rev: v2.3.0
 hooks:
 - id: check-yaml
 - id: end-of-file-fixer
 - id: trailing-whitespace
- repo: https://github.com/psf/black
 rev: 19.3b0
 hooks:
 - id: black
- repo: https://github.com/pre-commit/pre-commit-hooks
 rev: v2.3.0
 hooks:
 - id: flake8
  args:
  - --max-line-length=120

具体的配置可结合官网或github中的说明文档进行相关配置更新。

安装

执行 pre-commit install 命令,会在.git/hook路径下生成pre-commit文件,这样就保证了pre-commit安装成功,可以正常使用了。

然后执行:

更新配置文件只需要执行 pre-commit install 即可。

使用

配置完成之后,在 git commit 之前都会执行刚才的配置,可根据执行的结果来更新或者提交代码。

到此这篇关于Python代码规范性检测的文章就介绍到这了,更多相关Python代码规范性检测内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python处理xml文件的方法小结
May 02 Python
详解Python3操作Mongodb简明易懂教程
May 25 Python
Python向MySQL批量插数据的实例讲解
Mar 31 Python
python中实现字符串翻转的方法
Jul 11 Python
解决pycharm 工具栏Tool中找不到Run manager.py Task的问题
Jul 01 Python
解决Python安装时报缺少DLL问题【两种解决方法】
Jul 15 Python
Python实现基于SVM的分类器的方法
Jul 19 Python
Python 读取用户指令和格式化打印实现解析
Sep 02 Python
python实现计算器功能
Oct 31 Python
Django认证系统user对象实现过程解析
Mar 02 Python
python如何使用腾讯云发送短信
Sep 17 Python
Python使用struct处理二进制(pack和unpack用法)
Nov 12 Python
python使用Word2Vec进行情感分析解析
Jul 31 #Python
Python爬虫基于lxml解决数据编码乱码问题
Jul 31 #Python
Python如何定义有可选参数的元类
Jul 31 #Python
Python爬虫爬取糗事百科段子实例分享
Jul 31 #Python
Python如何对齐字符串
Jul 30 #Python
Python3爬虫关于代理池的维护详解
Jul 30 #Python
Python读写压缩文件的方法
Jul 30 #Python
You might like
PHP批量获取网页中所有固定种子链接的方法
2016/11/18 PHP
PHP简单实现循环链表功能示例
2017/11/10 PHP
基于jQuery的消息提示插件之旅 DivAlert(三)
2010/04/01 Javascript
JS中把字符转成ASCII值的函数示例代码
2013/11/21 Javascript
js 获取浏览器版本以此来调整CSS的样式
2014/06/03 Javascript
jQuery切换网页皮肤并保存到Cookie示例代码
2014/06/16 Javascript
javascript实现验证身份证号的有效性并提示
2015/04/30 Javascript
JavaScript中的setMilliseconds()方法使用详解
2015/06/11 Javascript
jq实现左侧显示图片右侧文字滑动切换效果
2015/08/04 Javascript
JavaScript判断FileUpload控件上传文件类型
2015/09/28 Javascript
jquery自定义表格样式
2015/11/23 Javascript
js调用webservice构造SOAP进行身份验证
2016/04/27 Javascript
bootstrap组件之按钮式下拉菜单小结
2017/01/19 Javascript
jQuery第一次运行页面默认触发点击事件的实例
2018/01/10 jQuery
angular2模块和共享模块详解
2018/04/08 Javascript
vue+webpack中配置ESLint
2018/11/07 Javascript
Vue+penlayers实现多边形绘制及展示
2020/12/24 Vue.js
[02:29]大剑、皮鞭、女装,这届DOTA2勇士令状里都有
2020/07/17 DOTA
Python实现过滤单个Android程序日志脚本分享
2015/01/16 Python
python轻松查到删除自己的微信好友
2016/01/10 Python
python 批量添加的button 使用同一点击事件的方法
2019/07/17 Python
python3的数据类型及数据类型转换实例详解
2019/08/20 Python
Numpy之将矩阵拉成向量的实例
2019/11/30 Python
Python基于当前时间批量创建文件
2020/05/07 Python
详解HTML5中rel属性的prefetch预加载功能使用
2016/05/06 HTML / CSS
印尼旅游网站:via
2017/11/12 全球购物
英国花园药房: The Garden Pharmacy
2017/12/28 全球购物
排序都有哪几种方法?请列举。用JAVA实现一个快速排序
2014/02/16 面试题
本科生的职业生涯规划范文
2014/01/09 职场文书
预备党员承诺书
2014/03/25 职场文书
加入学生会演讲稿
2014/04/24 职场文书
乡镇党建工作汇报材料
2014/08/14 职场文书
简单的辞职信范文(2016最新版)
2015/05/12 职场文书
保护环境的宣传语
2015/07/13 职场文书
Log4j.properties配置及其使用
2021/08/02 Java/Android
Vue如何清空对象
2022/03/03 Vue.js