实际参与过项目开发后就能够深深体会到代码的规范对项目的重要性,这中间不仅关系着你对代码bug的修正还包括有后来的伙伴们拜读你的源码时,如果代码不规范,乱七八糟的,被小伙伴打死或者熬夜找bug事小,影响项目进度或者破坏项目结构就完蛋了

通常我们的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

#格式化前后对比

yapf -d

#直接修改源文件

yapf -i

#导出配置文件

yapf --style-help > style.cfg

#并发格式化多个文件,需要futures模块支持

yapf -pi *.py

更多yapf相关可参考yapf

其他的此类工具还有Pyflakes,flake8等等,小编直接出到这两个常用的,更多内容大家在项目实战中应该会有更多接触

python代码审查规则_python代码检查相关推荐

  1. python命名规则,代码规范

    python命名规则,代码规范 1.模块命名 2. 类命名 3.函数命名 4.变量命名 5.空行 1.模块命名 模块尽量使用小写命名,首字母保持小写,尽量不要用下划线(除非多个单词,且数量不多的情况) ...

  2. python代码质量检查工具_python代码检查工具pylint 让你的python更规范

    复制代码 代码如下: #coding:utf-8 ''' a test function module ''' import urllib import time def fetch(url): '' ...

  3. python 学习指南_Python类型检查终极指南

    python 学习指南 In this guide, you will get a look into Python type checking. Traditionally, types have ...

  4. python编程规则_python编程规则

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 只有写一个完整的不依赖系统命令(如,复杂的程序)的情况下才有必要用到python ...

  5. Python 进阶 — Pylint 静态代码检查工具

    目录 文章目录 目录 Pylint 错误类型 安装 使用 Pylint 与 Flake8 一般,Pylint 也是一款 Python 的静态代码检查工具,它会分析 Python 代码中的错误,查找不符 ...

  6. python 命名管道_Python:检查命名管道是否有数据

    我的Unix系统上的 Python3进程一直在运行,我希望能够通过偶尔运行的其他进程的命名管道随机发送数据.如果命名管道没有数据,我希望我的进程继续做其他事情,所以我需要检查它是否有没有阻塞的数据. ...

  7. python的格式_python 代码格式

    程序的基本格式 1.恰当的空格,缩进的问题 (1)逻辑行首的空白(空格和制表符)用来决定逻辑行的缩进层次,从而用来决定语句的分组 (2)语句从新行的第一列开始. (3)缩进风格统一: 一.每个缩进层次 ...

  8. 打包python程序发布_Python代码的打包与发布详解

    在python程序中,一个.py文件被当作一个模块,在各个模块中定义了不同的函数.当我们要使用某一个模块中的某一个函数时,首先须将这个模块导入,否则就会出现函数未定义的情况. 下面记录的是打包及安装包 ...

  9. python居中填充_Python代码中 如何将字符串填充为指定长度并保持原字符串居中呢?...

    摘要: 下文讲述Python代码中字符串填充的方法分享,如下所示: 字符串填充有很多方法, 如for循环填充,while循环填充 那么Python语言中,到底有没有快捷方式对字符串进行填充呢? 下文将 ...

最新文章

  1. linux su、su -和sudo的区别
  2. 怎么做网络推广浅析有关404页面优化的技巧
  3. 我从吴恩达AI For Everyone中学到的十个重要AI观
  4. Next Permutation
  5. JVM之XX参数详解
  6. 通俗易懂的讲解堆排序(含Gif图)
  7. oracle normal bitmap,深入解析Oracle ASSM结构之Level 1 Bitmap Block
  8. mybatis if-else(写法)
  9. linux tail命令_操作手册
  10. 9:16 2009-7-30 范型,IList 做为参数
  11. apache是怎么运行php的_PHP与WEB服务器是如何交互的
  12. 基于核极限学习机(KELM)分类 -附代码
  13. Action-Net|UCF101数据集上训练测试数据load过程
  14. win7系统gpt分区激活工具哪个好?
  15. 移动设备数据丢失恢复有办法
  16. win7开启ftp被动模式_什么是FTP功能?Win7旗舰版下如何开启FTP功能?
  17. 收官之战,年终的财务分析如何做?
  18. MAC 录屏工具,录制视频制作GIF—— LICEcap
  19. Android基础篇-DrawerLayout 实现侧滑
  20. 最强大脑记忆曲线(13)--应用程序的加密及授权码的实现

热门文章

  1. Rancher hosted Kubernetes AKS
  2. 突破Flutter私有化仓库100M限制-Hosted packages must be smaller than 100 MB
  3. PostgreSQL变更表Owner
  4. 自然语言处理总复习(九)—— 机器翻译
  5. TL-BERT: A Novel Biomedical Relation Extraction Approach
  6. Python金融应用编程(数据分析、定价与量化投资) !
  7. C语言和win32绿色鼠标连点器,带代码(Windows)
  8. 一维卷积处理时间序列
  9. 4维俄罗斯方块 java,课内资源 - 基于Easyx插件的俄罗斯方块游戏的设计与实现
  10. 安装Tomcat步骤