深入浅析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 相关文章推荐
用PyQt进行Python图形界面的程序的开发的入门指引
Apr 14 Python
django2 快速安装指南分享
Jan 05 Python
python3利用tcp实现文件夹远程传输
Jul 28 Python
Form表单及django的form表单的补充
Jul 25 Python
Python 合并多个TXT文件并统计词频的实现
Aug 23 Python
用Python爬取QQ音乐评论并制成词云图的实例
Aug 24 Python
Python单元测试工具doctest和unittest使用解析
Sep 02 Python
python web框架Flask实现图形验证码及验证码的动态刷新实例
Oct 14 Python
numpy np.newaxis 的实用分享
Nov 30 Python
5行Python代码实现图像分割的步骤详解
May 25 Python
django restframework serializer 增加自定义字段操作
Jul 15 Python
python实现学生信息管理系统(精简版)
Nov 27 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中define用法实例
2015/07/30 PHP
php实现的简单中文验证码功能示例
2017/01/03 PHP
ThinkPHP+EasyUI之ComboTree中的会计科目树形菜单实现方法
2017/06/09 PHP
关于Javascript 的 prototype问题。
2007/01/03 Javascript
IE6下出现JavaScript未结束的字符串常量错误的解决方法
2010/11/21 Javascript
使用jQuery重置(reset)表单的方法
2014/05/05 Javascript
跟我学习javascript的基本类型和引用类型
2015/11/16 Javascript
JavaScript数据类型学习笔记分享
2016/09/01 Javascript
Nodejs下用submit提交表单提示cannot post错误的解决方法
2016/11/21 NodeJs
JS实现前端缓存的方法
2017/09/21 Javascript
Bootstrap一款超好用的前端框架
2017/09/25 Javascript
vue-router history模式下的微信分享小结
2018/07/05 Javascript
VUE安装使用教程详解
2019/06/03 Javascript
JS函数动态传递参数的方法分析【基于arguments对象】
2019/06/05 Javascript
JavaScript创建、读取和删除cookie
2019/09/03 Javascript
VUE页面中通过双击实现复制表格中内容的示例代码
2020/06/11 Javascript
Python变量作用范围实例分析
2015/07/07 Python
python如何在终端里面显示一张图片
2016/08/17 Python
Python抓取手机号归属地信息示例代码
2016/11/28 Python
详解Python3操作Mongodb简明易懂教程
2017/05/25 Python
Python实现连接MySql数据库及增删改查操作详解
2019/04/16 Python
使用 Python 合并多个格式一致的 Excel 文件(推荐)
2019/12/09 Python
iHerb中文官网:维生素、保健品和健康产品
2018/11/01 全球购物
火灾现场处置方案
2014/05/28 职场文书
中职招生先进个人材料
2014/08/31 职场文书
2014年电话销售工作总结
2014/12/01 职场文书
2015年团队工作总结范文
2015/05/04 职场文书
校长一岗双责责任书
2015/05/09 职场文书
2016年第十九届推普周活动总结
2016/04/06 职场文书
银行求职信怎么写
2019/06/20 职场文书
mysql知识点整理
2021/04/05 MySQL
MySQL中的布尔值,怎么存储false或true
2021/06/04 MySQL
Unity连接MySQL并读取表格数据的实现代码
2021/06/20 MySQL
nginx中proxy_pass各种用法详解
2021/11/07 Servers
实操Python爬取觅知网素材图片示例
2021/11/27 Python
python工具dtreeviz决策树可视化和模型可解释性
2022/03/03 Python