深入浅析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读取图片为16进制表示简单代码
Jan 19 Python
Python代码缩进和测试模块示例详解
May 07 Python
Python求解任意闭区间的所有素数
Jun 10 Python
Python实现模拟浏览器请求及会话保持操作示例
Jul 30 Python
python实现字符串加密成纯数字
Mar 19 Python
pytz格式化北京时间多出6分钟问题的解决方法
Jun 21 Python
在python中使用pyspark读写Hive数据操作
Jun 06 Python
python中adb有什么功能
Jun 07 Python
python怎么删除缓存文件
Jul 19 Python
python批量修改交换机密码的示例
Sep 22 Python
TensorFlow2.0使用keras训练模型的实现
Feb 20 Python
Python3.10的一些新特性原理分析
Sep 15 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
PHP4实际应用经验篇(4)
2006/10/09 PHP
并发下常见的加锁及锁的PHP具体实现代码
2010/10/12 PHP
简单实现限定phpmyadmin访问ip的方法
2013/03/05 PHP
VB中的RasEnumConnections函数返回632错误解决方法
2014/07/29 PHP
php商品对比功能代码分享
2015/09/24 PHP
根据IP的地址,区分不同的地区,查看不同的网站页面的js代码
2013/02/26 Javascript
深入理解javascript中defer的作用
2013/12/11 Javascript
jquery delay()介绍及使用指南
2014/09/02 Javascript
js判断一个字符串是否包含一个子串的方法
2015/01/26 Javascript
微信小程序 MINA文件结构
2016/10/17 Javascript
Vue项目webpack打包部署到服务器的实例详解
2017/07/17 Javascript
利用js实现前后台传送Json的示例代码
2018/03/29 Javascript
jQuery+ajax实现动态添加表格tr td功能示例
2018/04/23 jQuery
安装Node.js并启动本地服务的操作教程
2018/05/12 Javascript
js实现图片实时时钟
2020/01/15 Javascript
Python中用startswith()函数判断字符串开头的教程
2015/04/07 Python
Python NumPy库安装使用笔记
2015/05/18 Python
Python中index()和seek()的用法(详解)
2017/04/27 Python
python根据unicode判断语言类型实例代码
2018/01/17 Python
Python离线安装PIL 模块的方法
2019/01/08 Python
PyQt5+requests实现车票查询工具
2019/01/21 Python
Python基础之文件读取的讲解
2019/02/16 Python
python异常触发及自定义异常类解析
2019/08/06 Python
Python实现Restful API的例子
2019/08/31 Python
Windows平台Python编程必会模块之pywin32介绍
2019/10/01 Python
Beach Bunny Swimwear官网:设计师泳装和性感比基尼
2019/03/13 全球购物
Java的接口和C++的虚类的相同和不同处
2014/03/27 面试题
C语言50道问题
2014/10/23 面试题
铭万公司.net面试题笔试题
2014/07/20 面试题
市场部经理岗位职责
2015/02/02 职场文书
神龙架导游词
2015/02/11 职场文书
2015年消防工作总结
2015/04/24 职场文书
感恩教师节主题班会
2015/08/12 职场文书
详解解Django 多对多表关系的三种创建方式
2021/08/23 Python
浅谈Python中对象是如何被调用的
2022/04/06 Python
html中两种获取标签内的值的方法
2022/06/10 HTML / CSS