深入浅析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中的break、continue、exit()、pass全面解析
Aug 05 Python
ubuntu中配置pyqt4环境教程
Dec 27 Python
python素数筛选法浅析
Mar 19 Python
Python设计模式之代理模式实例详解
Jan 19 Python
numpy基础教程之np.linalg
Feb 12 Python
Python人工智能之路 之PyAudio 实现录音 自动化交互实现问答
Aug 13 Python
使用python 的matplotlib 画轨道实例
Jan 19 Python
Python3使用xlrd、xlwt处理Excel方法数据
Feb 28 Python
13个Pandas实用技巧,助你提高开发效率
Aug 19 Python
pycharm 配置svn的图文教程(手把手教你)
Jan 15 Python
详解Python描述符的工作原理
Jun 11 Python
LyScript实现绕过反调试保护的示例详解
Aug 14 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
CMSPRESS 10行代码搞定 PHP无限级分类2
2018/03/30 PHP
javascript 面向对象编程  function是方法(函数)
2009/09/17 Javascript
jQuery实现ichat在线客服插件
2014/12/29 Javascript
常用的JavaScript WEB操作方法分享
2015/02/28 Javascript
深入理解JavaScript编程中的原型概念
2015/06/25 Javascript
基于Bootstrap的后台管理面板 Bootstrap Metro Dashboard
2016/06/17 Javascript
js跨域资源共享 基础篇
2016/07/02 Javascript
JS简单实现无缝滚动效果实例
2016/08/24 Javascript
KnockoutJS 3.X API 第四章之表单textInput、hasFocus、checked绑定
2016/10/11 Javascript
JavaScript Uploadify文件上传实例
2017/02/28 Javascript
Angular4实现图片上传预览路径不安全的问题解决
2017/12/25 Javascript
动态加载权限管理模块中的Vue组件
2018/01/16 Javascript
jQuery实现使用sort方法对json数据排序的方法
2018/04/17 jQuery
axios全局注册,设置token,以及全局设置url请求网段的方法
2018/09/25 Javascript
微信小程序实现获取小程序码和二维码java接口开发
2019/03/29 Javascript
发布订阅模式在vue中的实际运用实例详解
2019/06/09 Javascript
用 js 写一个 js 解释器过程详解
2019/08/02 Javascript
js实现抽奖的两种方法
2020/03/19 Javascript
vue-amap根据地址回显地图并mark的操作
2020/11/03 Javascript
[36:05]DOTA2亚洲邀请赛 3.31 小组赛 A组 Liquid vs Optic
2018/04/01 DOTA
Python 利用scrapy爬虫通过短短50行代码下载整站短视频
2018/10/29 Python
python实现简单日期工具类
2019/04/24 Python
PyQt5 QListWidget选择多项并返回的实例
2019/06/17 Python
python替换字符串中的子串图文步骤
2019/06/19 Python
解决Pycharm后台indexing导致不能run的问题
2019/06/27 Python
Python3 filecmp模块测试比较文件原理解析
2020/03/23 Python
python爬取豆瓣电影排行榜(requests)的示例代码
2021/02/18 Python
学术会议邀请函
2015/01/30 职场文书
开除通知书范本
2015/04/25 职场文书
2015年建筑工作总结报告
2015/05/04 职场文书
运动会通讯稿200字
2015/07/20 职场文书
毕业晚宴祝酒词
2015/08/11 职场文书
感恩主题班会教案
2015/08/12 职场文书
导游词之西安大清真寺
2019/12/17 职场文书
Redis实现订单自动过期功能的示例代码
2021/05/08 Redis
MySQL的prepare使用以及遇到的bug
2022/05/11 MySQL