深入浅析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之一个免费的实验室
Sep 14 Python
django模板语法学习之include示例详解
Dec 17 Python
python版学生管理系统
Jan 10 Python
Python OpenCV处理图像之图像像素点操作
Jul 10 Python
python实现顺序表的简单代码
Sep 28 Python
Python 按字典dict的键排序,并取出相应的键值放于list中的实例
Feb 12 Python
python IDLE 背景以及字体大小的修改方法
Jul 12 Python
Django中间件拦截未登录url实例详解
Sep 03 Python
Python实现把类当做字典来访问
Dec 16 Python
PyCharm无法引用自身项目解决方式
Feb 12 Python
解决python中显示图片的plt.imshow plt.show()内存泄漏问题
Apr 24 Python
python 数据库查询返回list或tuple实例
May 15 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
深入了解php4(2)--重访过去
2006/10/09 PHP
PHP中去掉字符串首尾空格的方法
2012/05/19 PHP
使用PHP获取汉字的拼音(全部与首字母)
2013/06/27 PHP
php计算两个文件相对路径的方法
2015/03/14 PHP
浅谈PHP接收POST数据方式
2015/06/05 PHP
yii2分页之实现跳转到具体某页的实例代码
2016/06/02 PHP
PHP实现求连续子数组最大和问题2种解决方法
2017/12/26 PHP
thinkphp5框架路由原理与用法详解
2020/02/11 PHP
javascript 正则替换 replace(regExp, function)用法
2010/05/22 Javascript
jQuery下通过replace字符串替换实现大小图片切换
2012/05/22 Javascript
js获取url中"?"后面的字串方法
2014/05/15 Javascript
js控制输入框获得和失去焦点时状态显示的方法
2015/01/30 Javascript
详解JavaScript的回调函数
2015/11/20 Javascript
javascript定义类和类的实现实例详解
2015/12/01 Javascript
ajax实现加载页面、删除、查看详细信息 bootstrap美化页面!
2017/03/14 Javascript
JavaScript阻止表单提交方法(附代码)
2017/08/15 Javascript
vue-cli配置文件——config篇
2018/01/04 Javascript
JavaScript实现连连看连线算法
2019/01/05 Javascript
基于JQuery实现页面定时弹出广告
2020/05/08 jQuery
vue页面引入three.js实现3d动画场景操作
2020/08/10 Javascript
Python记录详细调用堆栈日志的方法
2015/05/05 Python
python sys.argv[]用法实例详解
2018/05/25 Python
Pyqt QImage 与 np array 转换方法
2019/06/27 Python
python 错误处理 assert详解
2020/04/20 Python
python使用nibabel和sitk读取保存nii.gz文件实例
2020/07/01 Python
美国综合购物商城:UnbeatableSale.com
2018/11/28 全球购物
Nip + Fab官网:英国美容品牌
2019/08/26 全球购物
PHP高级工程师面试问题推荐
2013/01/18 面试题
武汉东之林科技有限公司机试
2013/09/17 面试题
大学生求职自荐信
2013/12/12 职场文书
门诊手术室工作制度
2014/01/30 职场文书
小学生竞选班干部演讲稿(5篇)
2014/09/12 职场文书
【DOTA2】总决赛血虐~ XTREME GAMING vs MAGMA - OGA DOTA PIT 2022 CN
2022/04/02 DOTA
redis复制有可能碰到的问题汇总
2022/04/03 Redis
IDEA 2022 Translation 未知错误 翻译文档失败
2022/04/24 Java/Android
Oracle删除归档日志及添加定时任务
2022/06/28 Oracle