深入浅析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列表与元组详解实例
Nov 01 Python
github配置使用指南
Nov 18 Python
Python使用Turtle模块绘制五星红旗代码示例
Dec 11 Python
浅谈Django自定义模板标签template_tags的用处
Dec 20 Python
Python判断文件和字符串编码类型的实例
Dec 21 Python
python实现二级登陆菜单及安装过程
Jun 21 Python
Docker部署Python爬虫项目的方法步骤
Jan 19 Python
解决tensorflow训练时内存持续增加并占满的问题
Jan 19 Python
Python进程间通信multiprocess代码实例
Mar 18 Python
Python实现列表索引批量删除的5种方法
Nov 16 Python
基于flask实现五子棋小游戏
May 25 Python
Django集成富文本编辑器summernote的实现步骤
May 31 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
论建造顺序的重要性
2020/03/04 星际争霸
php 更新数据库中断的解决方法
2009/06/05 PHP
php Sql Server连接失败问题及解决办法
2009/08/07 PHP
Thinkphp中的curd应用实用要点
2015/01/04 PHP
php使用preg_match()函数验证ip地址的方法
2017/01/07 PHP
PHP实现的折半查询算法示例
2017/10/09 PHP
基于jquery的商品展示放大镜
2010/08/07 Javascript
firefox下frameset取不到值的解决方法
2010/09/06 Javascript
浅析offsetLeft,Left,clientLeft之间的区别
2013/11/30 Javascript
Javascript实现返回上一页面并刷新的小例子
2013/12/11 Javascript
javascript如何操作HTML下拉列表标签
2015/08/20 Javascript
JS动态给对象添加属性和值的实现方法
2016/10/21 Javascript
Vue动态生成表格的行和列
2019/07/18 Javascript
vue.js实现三级菜单效果
2019/10/19 Javascript
通过原生vue添加滚动加载更多功能
2019/11/21 Javascript
原生JS实现九宫格抽奖
2020/09/13 Javascript
浅析微信小程序自定义日历组件及flex布局最后一行对齐问题
2020/10/29 Javascript
nodejs中的异步编程知识点详解
2021/01/17 NodeJs
使用cx_freeze把python打包exe示例
2014/01/24 Python
使用Python设计一个代码统计工具
2018/04/04 Python
Python图像处理之图像的读取、显示与保存操作【测试可用】
2019/01/04 Python
对Python强大的可变参数传递机制详解
2019/06/13 Python
python面试题之列表声明实例分析
2019/07/08 Python
Python利用 utf-8-sig 编码格式解决写入 csv 文件乱码问题
2020/02/21 Python
python中id函数运行方式
2020/07/03 Python
html5 拖拽上传图片实例演示
2013/04/01 HTML / CSS
《黄河颂》教学反思
2014/02/07 职场文书
无毒社区工作方案
2014/05/23 职场文书
听证通知书
2015/04/24 职场文书
2015秋季小学开学寄语
2015/05/27 职场文书
意外事故赔偿协议书
2016/03/22 职场文书
基于nginx实现上游服务器动态自动上下线无需reload的实现方法
2021/03/31 Servers
详解nginx进程锁的实现
2021/06/14 Servers
Python数据处理的三个实用技巧分享
2022/04/01 Python
MongoDB误操作后使用oplog恢复数据
2022/04/11 MongoDB
ant design charts 获取后端接口数据展示
2022/05/25 Javascript