python如何实现代码检查


Posted in Python onJune 28, 2019

前言

通常我们的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= 将文件或目录添加到黑名单。它们应该是基本名称,而不是路径。
--output-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等等,小编直接出到这两个常用的,更多内容大家在项目实战中应该会有更多接触

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python连接mongodb操作数据示例(mongodb数据库配置类)
Dec 31 Python
Python中模块pymysql查询结果后如何获取字段列表
Jun 05 Python
python学习笔记--将python源文件打包成exe文件(pyinstaller)
May 26 Python
Python实用技巧之利用元组代替字典并为元组元素命名
Jul 11 Python
解决Django连接db遇到的问题
Aug 29 Python
用Python解数独的方法示例
Oct 24 Python
python数据预处理 :数据共线性处理详解
Feb 24 Python
在python里使用await关键字来等另外一个协程的实例
May 04 Python
keras 两种训练模型方式详解fit和fit_generator(节省内存)
Jul 03 Python
把Anaconda中的环境导入到Pycharm里面的方法步骤
Oct 30 Python
python利用appium实现手机APP自动化的示例
Jan 26 Python
Python数据可视化之用Matplotlib绘制常用图形
Jun 03 Python
python射线法判断一个点在图形区域内外
Jun 28 #Python
Python OpenCV之图片缩放的实现(cv2.resize)
Jun 28 #Python
如何使用Python 打印各种三角形
Jun 28 #Python
python射线法判断检测点是否位于区域外接矩形内
Jun 28 #Python
python 列表转为字典的两个小方法(小结)
Jun 28 #Python
numpy和pandas中数组的合并、拉直和重塑实例
Jun 28 #Python
使用Python画股票的K线图的方法步骤
Jun 28 #Python
You might like
咖啡店都有些什么常规豆子呢?有什么风味在里面
2021/03/04 咖啡文化
Linux下快速搭建php开发环境
2017/03/13 PHP
CodeIgniter框架验证码类库文件与用法示例
2017/03/18 PHP
PHP实现笛卡尔积算法的实例讲解
2019/12/22 PHP
Ext第一周 史上最强学习笔记---GridPanel(基础篇)
2008/12/29 Javascript
javaScript 删除字符串空格多种方法小结
2012/10/24 Javascript
js获取下拉列表的值和元素个数示例
2014/05/07 Javascript
网站基于flash实现的Banner图切换效果代码
2014/10/14 Javascript
JavaScript中的ubound函数使用实例
2014/11/04 Javascript
学习javascript文件加载优化
2016/02/19 Javascript
JavaScript学习笔记之数组的增、删、改、查
2016/03/23 Javascript
NodeJs读取JSON文件格式化时的注意事项
2016/09/25 NodeJs
jQuery删除当前节点元素
2016/12/07 Javascript
Angular2开发环境搭建教程之VS Code
2017/12/15 Javascript
图片懒加载imgLazyLoading.js使用详解
2020/09/15 Javascript
vue axios请求频繁时取消上一次请求的方法
2018/11/10 Javascript
vue结合element-ui使用示例
2019/01/24 Javascript
深入了解JavaScript 私有化
2019/05/30 Javascript
electron实现静默打印的示例代码
2019/08/12 Javascript
js实现移动端轮播图滑动切换
2020/12/21 Javascript
[50:20]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第四局
2016/03/06 DOTA
python中文分词,使用结巴分词对python进行分词(实例讲解)
2017/11/14 Python
在python win系统下 打开TXT文件的实例
2018/04/29 Python
python paramiko远程服务器终端操作过程解析
2019/12/14 Python
python中count函数简单的实例讲解
2020/02/06 Python
python实现密码验证合格程序的思路详解
2020/06/01 Python
HTML5调用手机摄像头拍照的实现思路及代码
2014/06/15 HTML / CSS
诗狄娜化妆品官方网站:Stila Cosmetics
2016/12/21 全球购物
亿阳信通股份有限公司C#笔试题
2016/12/06 面试题
机关党员2014全国两会学习心得体会
2014/03/10 职场文书
党的群众路线教育实践活动个人批评与自我批评
2014/10/16 职场文书
2014年物业公司工作总结
2014/11/22 职场文书
荒岛余生观后感
2015/06/09 职场文书
大学军训心得体会800字
2016/01/11 职场文书
python中os.path.join()函数实例用法
2021/05/26 Python
源码分析Redis中 set 和 sorted set 的使用方法
2022/03/22 Redis