实际参与过项目开发后就能够深深体会到代码的规范对项目的重要性,这中间不仅关系着你对代码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. jtable根据内容自动调整列宽
  2. How to write journal papers?
  3. xshell搭建宝塔没有远程命令密码框框弹出来_服务器安装宝塔控制面板+wordpress搭建个人网站...
  4. Java RandomAccessFile writeLong()方法与示例
  5. JAVA之编译期和运行期区别
  6. python刷题相关资料汇总(二)
  7. 从零开始编写深度学习库(一)SoftmaxWithLoss CPU编写
  8. 个人看法---团队合作
  9. C#Linq的10个练习
  10. 详谈RDMA(远程直接内存访问)技术原理和三种实现方式
  11. python案例数据集_Python数据集切分实例
  12. c#不可忍受之慢——谁是罪魁祸首
  13. 48. 减少 DNS 查找(9)
  14. python上传Excel文件
  15. Python----chardet模块的使用方法
  16. Xman pwn level2 writeup
  17. mysql中rand的用法_MySQL RAND()用法及代码示例
  18. Win10鼠标右键菜单选项提示找不到应用程序解决方法
  19. 计算机科学技术标准,计算机科学技术基础知识之标准化和知识产权基础知识
  20. 如何在手机浏览器wap网页中点击链接跳转到微信界面

热门文章

  1. android studio的旅游APP的开发和设计
  2. Android 开发多摄像头 API
  3. 《机电传动控制》——直流电机调速仿真作业
  4. 信源编码的代码实现 (香农编码、费诺编码、哈夫曼编码、游程编码、算术编码)
  5. BigDecimel转人民币大写
  6. Android 关于佳博和汉印蓝牙热敏打印机开发,kotlin爬虫app
  7. Android Navigation与BottomNavigationView实现底部导航栏
  8. CTF之旅WEB篇(3)--ezunser PHP反序列化
  9. Java实现Word转PDF方案选择
  10. 成都链安预警:EOS竞猜类游戏SKReos再次遭受攻击