深入浅析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发送form-data请求及拼接form-data内容的方法
Mar 05 Python
windows及linux环境下永久修改pip镜像源的方法
Nov 28 Python
python编写弹球游戏的实现代码
Mar 12 Python
修复 Django migration 时遇到的问题解决
Jun 14 Python
在Python中通过getattr获取对象引用的方法
Jan 21 Python
Pandas读取并修改excel的示例代码
Feb 17 Python
对python 中class与变量的使用方法详解
Jun 26 Python
pytorch实现onehot编码转为普通label标签
Jan 02 Python
基于Python爬虫采集天气网实时信息
Jun 05 Python
常用的10个Python实用小技巧
Aug 10 Python
通俗讲解python 装饰器
Sep 07 Python
基于tensorflow权重文件的解读
May 26 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 什么是PEAR?
2009/03/19 PHP
利用phpexcel对数据库数据的导入excel(excel筛选)、导出excel
2017/04/27 PHP
PHP中$GLOBALS与global的区别详解
2019/03/21 PHP
两种简单实现菜单高亮显示的JS类代码
2010/06/27 Javascript
基于jQuery UI CSS Framework开发Widget的经验
2010/08/21 Javascript
JS动态添加option和删除option(附实例代码)
2013/04/01 Javascript
append和appendTo的区别以及appendChild用法
2013/12/24 Javascript
Jquery节点遍历next与nextAll方法使用示例
2014/07/22 Javascript
jQuery EasyUI datagrid在翻页以后仍能记录被选中行的实现代码
2016/08/15 Javascript
jQuery实现可拖拽3D万花筒旋转特效
2017/01/03 Javascript
Node.js编写CLI的实例详解
2017/05/17 Javascript
JavaScript队列函数和异步执行详解
2017/06/19 Javascript
原生JS实现隐藏显示图片 JS实现点击切换图片效果
2021/01/27 Javascript
JS+jQuery实现注册信息的验证功能
2017/09/26 jQuery
nodejs 图片预览和上传的示例代码
2017/09/30 NodeJs
JS笛卡尔积算法与多重数组笛卡尔积实现方法示例
2017/12/01 Javascript
webpack-dev-server远程访问配置方法
2018/02/22 Javascript
vue使用中的内存泄漏【推荐】
2018/07/10 Javascript
分享5个顶级的JavaScript Ajax组件库
2018/09/16 Javascript
手淘flexible.js框架使用和源代码讲解小结
2018/10/15 Javascript
vue父组件给子组件的组件传值provide inject的方法
2019/10/23 Javascript
[06:07]DOTA2-DPC中国联赛3月5日Recap集锦
2021/03/11 DOTA
用Python实现一个简单的线程池
2015/04/07 Python
python爬虫入门教程--正则表达式完全指南(五)
2017/05/25 Python
Python通过future处理并发问题
2017/10/17 Python
让IE下支持Html5的placeholder属性的插件
2014/09/02 HTML / CSS
Carrs Silver官网:英国著名的银器品牌
2020/08/29 全球购物
WebSphere 应用服务器都支持哪些认证
2013/12/26 面试题
大门门卫岗位职责
2013/11/30 职场文书
车间统计员岗位职责
2014/01/05 职场文书
门诊手术室工作制度
2014/01/30 职场文书
中秋节超市促销方案
2014/01/30 职场文书
妇女儿童发展规划实施方案
2014/03/16 职场文书
《春到梅花山》教学反思
2014/04/16 职场文书
高中班主任评语
2014/12/30 职场文书
咖啡厅里的创业计划书
2019/08/21 职场文书