深入浅析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 中文乱码问题深入分析
Mar 13 Python
python中如何使用正则表达式的集合字符示例
Oct 09 Python
python实现识别手写数字 python图像识别算法
Mar 23 Python
Python面向对象程序设计之继承与多继承用法分析
Jul 13 Python
python中多个装饰器的执行顺序详解
Oct 08 Python
Django使用AJAX调用自己写的API接口的方法
Mar 06 Python
django的auth认证,authenticate和装饰器功能详解
Jul 25 Python
Windows系统Python直接调用C++ DLL的方法
Aug 01 Python
在Tensorflow中实现梯度下降法更新参数值
Jan 23 Python
django下创建多个app并设置urls方法
Aug 02 Python
python cookie反爬处理的实现
Nov 01 Python
python实现自定义日志的具体方法
May 28 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优于Node.js的五大理由分享
2012/09/15 PHP
浅谈php错误提示及查错方法
2015/07/14 PHP
PHP实现支持加盐的图片加密解密
2016/09/09 PHP
yii2使用GridView实现数据全选及批量删除按钮示例
2017/03/01 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
2017/08/30 PHP
Linux下源码包安装Swoole及基本使用操作图文详解
2019/04/02 PHP
YII框架模块化处理操作示例
2019/04/26 PHP
Thinkphp整合阿里云OSS图片上传实例代码
2019/04/28 PHP
Smarty缓存机制实例详解【三种缓存方式】
2019/07/20 PHP
JS获取IUSR_机器名和IWAM_机器名帐号的密码
2006/12/06 Javascript
javascript下对于事件、事件流、事件触发的顺序随便说说
2010/07/17 Javascript
jquery中对于批量deferred的处理方法
2014/01/22 Javascript
简单实现Bootstrap标签页
2020/08/09 Javascript
AngularJS报错$apply already in progress的解决方法分析
2017/01/30 Javascript
如何用JS/HTML将时间戳转换为“xx天前”的形式
2017/02/06 Javascript
JS基于面向对象实现的多个倒计时器功能示例
2017/02/28 Javascript
Underscore之Array_动力节点Java学院整理
2017/07/10 Javascript
js基于FileSaver.js 浏览器导出Excel文件的示例
2017/08/15 Javascript
详解webpack babel的配置
2018/01/09 Javascript
node.js中stream流中可读流和可写流的实现与使用方法实例分析
2020/02/13 Javascript
JSON获取属性值方法代码实例
2020/06/30 Javascript
[03:30]DOTA2完美“圣”典精彩集锦
2016/12/27 DOTA
自己使用总结Python程序代码片段
2015/06/02 Python
详解python单例模式与metaclass
2016/01/15 Python
python根据多个文件名批量查找文件
2019/08/13 Python
python栈的基本定义与使用方法示例【初始化、赋值、入栈、出栈等】
2019/10/24 Python
python实现简单图书管理系统
2019/11/22 Python
Python迭代器协议及for循环工作机制详解
2020/07/14 Python
25个CSS3动画按钮和菜单教程分享
2012/10/03 HTML / CSS
类、抽象类、接口的差异
2016/06/13 面试题
C++如何引用一个已经定义过的全局变量
2014/08/25 面试题
集中采购方案
2014/06/10 职场文书
2014年实习班主任工作总结
2014/11/08 职场文书
全国助残日活动总结
2015/05/11 职场文书
2016教师读书思廉心得体会
2016/01/23 职场文书
浅谈TypeScript 索引签名的理解
2021/10/16 Javascript