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

标签:python,代码,检查
0
投稿

猜你喜欢

  • 用mysql做站点时怎样记录未知错误的发生

    2009-01-14 13:16:00
  • 页面重构应注意的repaint和reflow

    2011-03-31 17:11:00
  • Python实现葵花8号卫星数据自动下载实例

    2021-09-26 13:40:25
  • Python使用贪婪算法解决问题

    2022-04-13 10:23:14
  • python中opencv图像叠加、图像融合、按位操作的具体实现

    2023-11-11 21:39:21
  • Python正则表达式re.search()用法详解

    2021-08-28 03:24:46
  • Python实现微信消息防撤回功能的实例代码

    2023-10-05 14:20:51
  • python3 自动识别usb连接状态,即对usb重连的判断方法

    2022-03-10 01:26:21
  • python实现简单多人聊天室

    2022-08-17 15:04:13
  • python Selenium等待元素出现的具体方法

    2022-02-22 02:47:20
  • Python多线程实现支付模拟请求过程解析

    2023-04-09 17:59:35
  • python进度条显示之tqmd模块

    2021-09-29 22:44:36
  • 如何在Frontpage中定义CSS样式

    2008-08-02 12:32:00
  • pytest框架之fixture详细使用详解

    2022-01-22 01:47:19
  • Python代码覆盖率统计工具coverage.py用法详解

    2021-02-02 22:55:51
  • Python venv虚拟环境配置过程解析

    2021-11-30 20:21:48
  • 如何使用Script Encoder?

    2010-06-05 12:42:00
  • Python中实现输入一个整数的案例

    2022-05-28 18:42:21
  • python+opencv实现动态物体识别

    2023-10-31 01:15:00
  • 跨浏览器使用剪贴板

    2008-09-27 13:26:00
  • asp之家 网络编程 m.aspxhome.com