深入浅析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实现指定字符串补全空格的方法
Apr 30 Python
详解Django框架中用context来解析模板的方法
Jul 20 Python
Android 兼容性问题:java.lang.UnsupportedOperationException解决办法
Mar 19 Python
Python图形绘制操作之正弦曲线实现方法分析
Dec 25 Python
Python判断一个list中是否包含另一个list全部元素的方法分析
Dec 24 Python
实时获取Python的print输出流方法
Jan 07 Python
python 用for循环实现1~n求和的实例
Feb 01 Python
Python OOP类中的几种函数或方法总结
Feb 22 Python
Python 堆叠柱状图绘制方法
Jul 29 Python
Django集成MongoDB实现过程解析
Dec 01 Python
利用python制作拼图小游戏的全过程
Dec 04 Python
python实现启动一个外部程序,并且不阻塞当前进程
Dec 05 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字符串替换函数substr_replace()用法实例
2015/03/17 PHP
JavaScript 模仿vbs中的 DateAdd() 函数的代码
2007/08/13 Javascript
一个简单的JS鼠标悬停特效具体方法
2013/06/17 Javascript
js保留小数点后几位的写法
2014/01/03 Javascript
js获取视频时长代码
2014/04/10 Javascript
一个不错的js html页面倒计时可精确到秒
2014/10/22 Javascript
JavaScript极简入门教程(一):基础篇
2014/10/25 Javascript
AngularJS手动表单验证
2016/02/01 Javascript
JavaScript 计算笛卡尔积实例详解
2016/12/02 Javascript
关于react-router的几种配置方式详解
2017/07/24 Javascript
vue2.0的contextmenu右键弹出菜单的实例代码
2017/07/24 Javascript
关于定制FileField中的上传文件名称问题
2017/08/22 Javascript
javascript trie前缀树的示例
2018/01/29 Javascript
自定义Vue组件打包、发布到npm及使用教程
2019/05/22 Javascript
细述Javascript的加法运算符的具体使用
2019/10/18 Javascript
[02:37]TI8勇士令状不朽珍藏II视频展示
2018/06/23 DOTA
python实现带错误处理功能的远程文件读取方法
2015/04/29 Python
浅谈Python处理PDF的方法
2017/11/10 Python
python中利用zfill方法自动给数字前面补0
2018/04/10 Python
PyQt5每天必学之布局管理
2018/04/19 Python
python 用lambda函数替换for循环的方法
2018/06/09 Python
Django Rest framework之认证的实现代码
2018/12/17 Python
Python3使用TCP编写一个简易的文件下载器功能
2019/05/08 Python
Python3列表List入门知识附实例
2020/02/09 Python
python实现发送带附件的邮件代码分享
2020/09/22 Python
CSS3实现彩色进度条动画的示例
2020/10/29 HTML / CSS
Lacoste(法国鳄鱼)加拿大官网:以标志性的POLO衫而闻名
2019/05/15 全球购物
希腊品牌鞋类销售网站:epapoutsia.gr
2020/03/18 全球购物
计算机专业自荐信
2013/10/14 职场文书
《春到梅花山》教学反思
2014/04/16 职场文书
教研活动总结
2014/04/28 职场文书
2014乡镇干部对照检查材料思想汇报
2014/09/26 职场文书
对Keras自带Loss Function的深入研究
2021/05/25 Python
教你怎么用python selenium实现自动化测试
2021/05/27 Python
Python提取PDF指定内容并生成新文件
2021/06/09 Python
React + Threejs + Swiper 实现全景图效果的完整代码
2021/06/28 Javascript