深入浅析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 18 Python
深入理解NumPy简明教程---数组1
Dec 17 Python
Python使用回溯法子集树模板获取最长公共子序列(LCS)的方法
Sep 08 Python
python中文乱码不着急,先看懂字节和字符
Dec 20 Python
解决seaborn在pycharm中绘图不出图的问题
May 24 Python
windows下python虚拟环境virtualenv安装和使用详解
Jul 16 Python
Python文件路径名的操作方法
Oct 30 Python
python Qt5实现窗体跟踪鼠标移动
Dec 13 Python
Python3和PyCharm安装与环境配置【图文教程】
Feb 14 Python
Python识别验证码的实现示例
Sep 30 Python
Python random模块的使用示例
Oct 10 Python
python中remove函数的踩坑记录
Jan 04 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导出csv格式数据并将数字转换成文本的思路以及代码分享
2014/06/05 PHP
php数组保存文本与文本反编成数组实例
2014/11/13 PHP
PHP中ajax无刷新上传图片与图片下载功能
2017/02/21 PHP
thinkphp查询,3.X 5.0方法(亲试可行)
2017/06/17 PHP
php实现微信公众平台发红包功能
2018/06/14 PHP
PHP实现一个限制实例化次数的类示例
2019/09/16 PHP
Avengerls vs Newbee BO3 第一场2.18
2021/03/10 DOTA
JavaScript 常见对象类创建代码与优缺点分析
2009/12/07 Javascript
javascript权威指南 学习笔记之变量作用域分享
2011/09/28 Javascript
Ext JS 4官方文档之三 -- 类体系概述与实践
2012/12/16 Javascript
JavaScript版TAB选项卡效果实例
2013/08/16 Javascript
css+js实现部分区域高亮可编辑遮罩层
2014/03/04 Javascript
js解析json读取List中的实体对象示例
2014/03/11 Javascript
使用jQuery实现返回顶部
2015/01/26 Javascript
javascript 用函数实现继承详解
2016/05/28 Javascript
Windows环境下npm install 报错: operation not permitted, rename的解决方法
2016/09/26 Javascript
浅谈js的异步执行
2016/10/18 Javascript
80%应聘者都不及格的JS面试题
2017/03/21 Javascript
vue组件初学_弹射小球(实例讲解)
2017/09/06 Javascript
Angular2+如何去除url中的#号详解
2017/12/20 Javascript
vuex 解决报错this.$store.commit is not a function的方法
2018/12/17 Javascript
浅谈express.js框架中间件(middleware)
2019/04/07 Javascript
vue自定义指令之面板拖拽的实现
2019/04/14 Javascript
vue router导航守卫(router.beforeEach())的使用详解
2019/04/19 Javascript
Angular8 简单表单验证的实现示例
2020/06/03 Javascript
详解Python编程中对Monkey Patch猴子补丁开发方式的运用
2016/05/27 Python
Django实现全文检索的方法(支持中文)
2018/05/14 Python
python TK库简单应用(实时显示子进程输出)
2019/10/29 Python
HTML5的Video标签有部分MP4无法播放的问题解析(多图)
2017/08/18 HTML / CSS
Lyle & Scott苏格兰金鹰官网:英国皇室御用品牌
2018/05/09 全球购物
乐高奥地利官方商店:LEGO Shop AT
2019/07/16 全球购物
工业学校毕业生自荐书
2014/01/03 职场文书
领班岗位职责范文
2014/02/06 职场文书
社区助残日活动总结
2014/08/29 职场文书
2015年安全员工作总结范文
2015/04/22 职场文书
2016医师资格考试考生诚信考试承诺书
2016/03/25 职场文书