深入浅析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编程-将Python程序转化为可执行程序[整理]
Apr 09 Python
使用Python写个小监控
Jan 27 Python
基于python实现的抓取腾讯视频所有电影的爬虫
Apr 22 Python
python中学习K-Means和图片压缩
Nov 20 Python
python中dir()与__dict__属性的区别浅析
Dec 10 Python
Python实现的爬取百度贴吧图片功能完整示例
May 10 Python
使用python进行波形及频谱绘制的方法
Jun 17 Python
pycharm 中mark directory as exclude的用法详解
Feb 14 Python
TensorFlow固化模型的实现操作
May 26 Python
Django权限控制的使用
Jan 07 Python
python matplotlib工具栏源码探析三之添加、删除自定义工具项的案例详解
Feb 25 Python
python实现A*寻路算法
Jun 13 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
Search Engine Friendly的URL设计
2006/10/09 PHP
用PHP制作的意见反馈表源码
2007/03/11 PHP
PHP读取txt文件的内容并赋值给数组的代码
2011/11/03 PHP
深入浅析PHP无限极分类的案例教程
2016/05/09 PHP
Laravel 自动生成验证的实例讲解:login / logout
2019/10/14 PHP
JS按位非(~)运算符与~~运算符的理解分析
2011/07/31 Javascript
js移除事件 js绑定事件实例应用
2012/11/28 Javascript
jQuery循环滚动新闻列表示例代码
2014/06/17 Javascript
SeaJS 与 RequireJS 的差异对比
2014/12/08 Javascript
jQuery插件实现适用于移动端的地址选择器
2016/02/18 Javascript
Javascript实现苹果悬浮虚拟按钮
2016/04/10 Javascript
JavaScript 函数的执行过程
2016/05/09 Javascript
JavaScript String 对象常用方法详解
2016/05/13 Javascript
js实现可键盘控制的简单抽奖程序
2016/07/13 Javascript
JavaScript trim 实现去除字符串首尾指定字符的简单方法
2016/12/27 Javascript
JavaScript函数基础详解
2017/02/03 Javascript
详解ES6语法之可迭代协议和迭代器协议
2018/01/13 Javascript
ES6基础之数组和对象的拓展实例详解
2019/08/22 Javascript
[01:45]2014DOTA2 TI预选赛预选赛 大神专访第二弹!
2014/05/20 DOTA
[07:08]2014DOTA2西雅图国际邀请赛 小组赛7月11日TOPPLAY
2014/07/11 DOTA
Python使用Socket(Https)Post登录百度的实现代码
2012/05/18 Python
一个月入门Python爬虫学习,轻松爬取大规模数据
2018/01/03 Python
在python中实现将一张图片剪切成四份的方法
2018/12/05 Python
python抖音表白程序源代码
2019/04/07 Python
pytorch 实现在预训练模型的 input上增减通道
2020/01/06 Python
什么是Python中的顺序表
2020/06/02 Python
python线程池 ThreadPoolExecutor 的用法示例
2020/10/10 Python
美国排名第一的葡萄酒俱乐部:Firstleaf Wine Club
2020/01/02 全球购物
大四学生毕业自荐信
2013/11/07 职场文书
室内设计专业个人的自我评价
2013/12/18 职场文书
生产部管理制度
2014/01/31 职场文书
四议两公开实施方案
2014/03/28 职场文书
生物工程专业求职信
2014/09/03 职场文书
民主评议党员自我鉴定
2014/10/21 职场文书
鸟的天堂导游词
2015/01/31 职场文书
高三数学教学反思
2016/02/18 职场文书