深入浅析Python代码规范性检测
作者:Yabea 发布时间:2023-08-23 21:16:55
一定要注重代码规范,按照平时的代码管理,可以将Python代码规范检测分为两种:
静态本地检测:可以借助静态检查工具,比如:Flake8,Pylint等,调研了一下,用Flake8的相对较多,功能满足,本文将使用Flake8
git:可借助git hooks,本文推荐使用pre-commit。
静态本地检测
Flake8包装了Pyflakes、Pycodestyle和McCabe,也可以自定义插件。功能包括:
检查代码是否符合PEP8
检查是否包含语法错误和未使用的变量和导入
检查代码的复杂度
pip install flake8
配置
推荐在pycharm中配置flake8:
参数说明:
Program中填写Flake可执行文件的具体路径
arguments中可添加自定义参数,比如设置每行的最大字符数,过滤某些文件(夹)等。
安装完了之后单击就可以检测了:
执行检测之后,如果出现 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
之前都会执行刚才的配置,可根据执行的结果来更新或者提交代码。
来源:http://www.cnblogs.com/ybjourney/p/13407406.html
猜你喜欢
- 前言当需要将多张图像拼接成一张更大的图像时,通常会用到图片拼接技术。这种技术在许多领域中都有广泛的应用,例如计算机视觉、图像处理、卫星图像、
- 通常我们做网站,设计版面布局是第一步,如何做到版面布局具有创意又美观大方呢?这就需要一定的版面处理功底。让我们先来了解一下版面布局的步骤:一
- 问题你想对在Unix系统上面运行的程序设置内存或CPU的使用限制。解决方案resource 模块能同时执行这两个任务。例如,要限制CPU时间
- 1。注意用SQL分析器可以看select出来的东西select right(convert(varchar(30),getdate(),12
- 科学设计你的网站网页:来自 Eye-Tracking研究的23节必修课 ——Christina Laun在网络设计领域关于Eye-
- 如何实现刷新当前页面呢?借助js你将无所不能。1,reload 方法,该方法强迫浏览器刷新当前页面。语法:location.reload([
- INI是微软Windows操作系统中的文件扩展名。这些字母表示初始化。正如该术语所表示的,INI文件被用来对操作系统或特定程序初始化或进行参
- 有三种主要的错误类型: 1.编译错误: 这种错误出现一般都是代码的语法问题。因为编译错误而导致辞ASP停止运行。 2.运行错误: 这个错误是
- 前言动态生成表格是前端开发中非常重要的内容,常常是后端返回数据(大多是json类型),我们前端通过js循环来动态添加,所以这部分内容是十分重
- PHP7.0正式版也出来了,今天编译安装了一下,写下安装步骤,我是在centos6.6 环境中编译的,下面是详细的安装步骤环境依赖yum i
- 很多朋友希望,我能把我做网站的一些流程及经验跟大家分享一下,最近刚好做一次内部培训,所以稍微整理了一下,这些只是针对网页初学者,具有一定平面
- 比如可以定义开学时间为2009年2月8日,然后程序可以算出,今天距开学那天已经是第几周,非常急需这个程序,忘高手们能提供一个,先谢谢了!自己
- 在许多人看来,HTML应该是WEB制作所有语言中最简单的语言,因为它不需要编译、封闭等,甚至只需要一个记事本就可以让其在浏览器中呈现出来。所
- 过去一段时间人们似乎又非常热衷于探讨网络文档的印刷格式,涌现了很多与之相关的技术与理论资料,其中相当重要的一个领域就是关于印刷中字号和行高的
- 如何用ASP输出HTML文件?<!--#include file="top.inc"--><
- 当产品走到HTML Coding这块,多浏览器的测试是很重要,也很麻烦的一个环节。现在大家主要是保证IE6,7及Firefox的一致。bro
- 今天偶尔在一个学习网站技术的地方看到一个教程,关于html代码的,刚看到咱常用到的视频播放器html标签Object,平时用到他的时候都是为
- 本文实例讲述了js鼠标滑过图片震动特效的方法。分享给大家供大家参考。具体实现方法如下:<html><head><
- 语言是信息传播的主要障碍。多语言网站,顾名思义就是能够以多种语言(而不是单种语言)为用户提供信息服务,让使用不同语言的用户都能够从同个网站获
- 在研究ezSQL的时候就看到了mssql_connect()等一些php提供的连接MSSQL的函数,本以为php这个开源的风靡世界的编程语言