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实现的各种排序算法代码
Mar 04 Python
Python中使用插入排序算法的简单分析与代码示例
May 04 Python
Python 实现数据库(SQL)更新脚本的生成方法
Jul 09 Python
Python简单实现socket信息发送与监听功能示例
Jan 03 Python
django中send_mail功能实现详解
Feb 06 Python
Flask框架通过Flask_login实现用户登录功能示例
Jul 17 Python
python 去除二维数组/二维列表中的重复行方法
Jan 23 Python
Python父目录、子目录的相互调用方法
Feb 16 Python
python的json包位置及用法总结
Jun 21 Python
Python Mock模块原理及使用方法详解
Jul 07 Python
OpenCV图片漫画效果的实现示例
Aug 18 Python
用python自动生成日历
Apr 24 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
PHP 缓存实现代码及详细注释
2010/05/16 PHP
PHP企业级应用之常见缓存技术篇
2011/01/27 PHP
phpmailer发送gmail邮件实例详解
2013/06/24 PHP
Laravel用户授权系统的使用方法示例
2018/09/16 PHP
js如何获取file控件的完整路径具体实现代码
2013/05/15 Javascript
jQuery中:empty选择器用法实例
2014/12/30 Javascript
javascript实现简单的鼠标拖动效果实例
2015/04/10 Javascript
easyUI实现(alert)提示框自动关闭的实例代码
2016/11/07 Javascript
微信小程序 wx:for的使用实例详解
2017/04/27 Javascript
AngularJs+Bootstrap实现漂亮的计算器
2017/08/10 Javascript
vue.js element-ui validate中代码不执行问题解决方法
2017/12/18 Javascript
实例分析JS中的相等性判断===、 ==和Object.is()
2019/11/17 Javascript
Python爬取Coursera课程资源的详细过程
2014/11/04 Python
Python中django学习心得
2017/12/06 Python
解决python 无法加载downsample模型的问题
2018/10/25 Python
Python实现的逻辑回归算法示例【附测试csv文件下载】
2018/12/28 Python
利用python在excel里面直接使用sql函数的方法
2019/02/08 Python
python3下载抖音视频的完整代码
2019/06/05 Python
Python 获取ftp服务器文件时间的方法
2019/07/02 Python
解决python中用matplotlib画多幅图时出现图形部分重叠的问题
2019/07/07 Python
Python接口测试结果集实现封装比较
2020/05/01 Python
CSS3 border-image详解、应用及jQuery插件
2011/08/29 HTML / CSS
css3绘制天猫logo实现代码
2012/11/06 HTML / CSS
复古服装:RetroStage
2019/05/10 全球购物
python re模块和正则表达式
2021/03/24 Python
基层党员公开承诺书
2014/05/29 职场文书
企业总经理任命书
2014/06/05 职场文书
五一促销活动总结
2014/07/01 职场文书
2014年会计工作总结
2014/11/27 职场文书
工作保证书
2015/01/17 职场文书
看雷锋电影观后感
2015/06/10 职场文书
2015年基层党建工作汇报材料
2015/06/25 职场文书
高考满分作文赏析(2篇)
2019/08/12 职场文书
Python中Permission denied的解决方案
2021/04/02 Python
HAM-2000摩机图
2021/04/22 无线电
Python实现为PDF去除水印的示例代码
2022/04/03 Python