python如何实现代码检查
作者:MA木易YA 发布时间:2022-07-22 18:19:12
前言
通常我们的python代码都是遵循PEP8的规范化格式,目的是为了保持代码的一致性、可读性。,这里给大家推荐几个常用的静态代码检查工具,大家可以酌情选择使用
1. pylint
Pylint是一个Python静态代码分析工具,它可以查找编程错误,帮助强制执行编码标准,嗅探代码异味并提供简单的重构建议。
它具有高度可配置性,具有特殊的编译指示来控制代码中的错误和警告,以及广泛的配置文件。也可以编写自己的插件来添加自己的检查或以某种方式扩展pylint。
缺省情况下,PyLint 启用许多规则。它具有高度可配置性,从代码内部处理程序控制它。另外,编写插件添加到自己的检查中是可能的。
安装
pip install pylint
#如果您使用的是Python 3.6+,请升级以获得对您的版本的完全支持:
pip install pylint --upgrade
#如果要从源分发版安装,请解压缩tarball并运行以下命令
python setup.py install
文档
Pylint附带以下附加命令:
pyreverse:一个UML图生成器
symilar:一个独立的相似性检查器
epylint:Emacs和Flymake兼容的Pylint
使用
pylint的各种引用以及使用方式都可以去文档查找,这里仅介绍一下比较基础简单的示例
pylint [options] modules_or_packages
命令行选项
参数 | 含义 |
---|---|
--version | 显示程序的版本号并退出 |
-h, --help | 显示有关命令行选项的帮助 |
--ignore=<file[,file...]> | 将文件或目录添加到黑名单。它们应该是基本名称,而不是路径。 |
--output-format=<format> | 选择输出格式(文本,json,自定义)。 |
--list-msgs | 生成pylint的消息。 |
错误代码含义
C:惯例,违反了编码风格标准
R:重构,代码非常糟糕
W:警告,某些 Python 特定的问题
E:错误,很可能是代码中的错误
F:致命错误,阻止 Pylint 进一步运行的错误
更多pylint相关可参考文档
2. yapf:
Python的大多数当前格式化程序 - 例如,autopep8和pep8ify ---用于从代码中删除lint错误。这有一些明显的局限性。例如,符合PEP 8指南的代码可能无法重新格式化。但这并不意味着代码看起来很好。
YAPF采用不同的方法。它基于由Daniel Jasper开发的'clang-format'。从本质上讲,算法会获取代码并将其重新格式化为符合样式指南的最佳格式,即使原始代码没有违反样式指南。这个想法也类似于Go编程语言的'gofmt'工具:结束所有关于格式化的神圣战争
如果项目的整个代码库只是通过YAPF进行修改,只要进行修改,样式在整个项目中保持一致,并且没有必要在每次代码审查中争论风格。
最终目标是YAPF生成的代码与程序员在遵循样式指南时编写的代码一样好。它消除了维护代码的一些苦差事。
安装
pip install yapf
使用
yapf [-h] [-v] [-d | -i] [-r | -l START-END] [-e PATTERN]
[--style STYLE] [--style-help] [--no-local-style] [-p]
[-vv]
[files [files ...]]
同上,一样也可以直接跟文件进行操作
参数 | 参数说明 |
---|---|
-h, --help | 显示此帮助消息并退出 |
-v, --version | 显示版本号并退出 |
-d, --diff | 比较差异 |
-i, --in-place | 对文件进行更改 |
-r, --recursive | 以递归方式运行目录 |
示例
#直接跟文件名(并不修改文件)
yapf <python file>
#格式化前后对比
yapf -d <python file>
#直接修改源文件
yapf -i <python file>
#导出配置文件
yapf --style-help > style.cfg
#并发格式化多个文件,需要futures模块支持
yapf -pi *.py
更多yapf相关可参考yapf
其他的此类工具还有Pyflakes,flake8等等,小编直接出到这两个常用的,更多内容大家在项目实战中应该会有更多接触
来源:https://www.jianshu.com/p/62eb48564d50


猜你喜欢
- 本文实例讲述了微信小程序之事件交互操作。分享给大家供大家参考,具体如下:微信小程序—点击事件什么是事件?指点击,触摸,按下,滑动,松开,等一
- 如下的实际例子代码可以将查询的结果放入到一张自定义表中,同时可以再从这个自定义的表中查询数据:with AA as(SELECT TICKE
- 代码如下# -*- coding:utf-8 -*-import cv2import numpy as npfrom tkinter imp
- 1.前言 &n
- os:windows前提:Python,selenium,IEDriverServer.exe,ie浏览器首先安装Python2.7安装成功
- 一、Celery介绍和基本使用 Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理, 如
- re正则表达式模块还包括一些有用的操作正则表达式的函数。下面主要介绍compile函数。 定义: compile(pattern[,flag
- a {}{ background:url(images/normal.gif); } a:ho
- 本文实例讲述了Python基于hashlib模块的文件MD5一致性加密验证。分享给大家供大家参考,具体如下:使用hashlib模块,可对文件
- Serilog是.net下的新兴的日志框架,本文这里简单的介绍一下它的用法。首先安装Nuget包:Install-Package Seril
- python每天在指定时间段运行程序及关闭程序场景程序需要在每天某一时间段内运行,然后在某一时间段内停止该程序。程序:from dateti
- 在用django写项目时,遇到了许多场景,关于ORM操作获取数据的,但是不好描述出来,百度搜索关键词都不知道该怎么搜,导致一个人鼓捣了好久。
- 本文实例讲述了sql server实现在多个数据库间快速查询某个表信息的方法。分享给大家供大家参考,具体如下:最近出来实习,所在公司的服务器
- 我就废话不多说了,大家还是直接看代码吧!def iou(y_true, y_pred, label: int): "&
- 如下所示:#encoding=utf-8#x=raw_input("Please enter a text: ")y=x
- 每次找安装教程太麻烦,因此给自己备份一下步骤,方便以后查看。解压版下载地址https://dev.mysql.com/downloads/m
- 使用RS232串口线或者是RS232转USB的这一类的接口,会需要com口作为接口来进行输入输出调式,写了个脚本来控制COM口,用到了Pyt
- 一、需求分析有一批key已经写入到3个txt文件中,每一个txt文件有30万行记录。现在需要读取这些txt文件,判断key是否在数据仓库中。
- 安装模块下面需要用模块,先安装一下:pip install numpy pip install opencv-python==4.5.5.6
- 格式化字符串由占位符和普通字符组合而成。占位符由'%'打头,动词结尾。占位符由五类元素组成: 标志位(flag),宽度,精度