实际参与过项目开发后就能够深深体会到代码的规范对项目的重要性, 这中间不仅关系着你对代码 bug 的修正还包括有后来的伙伴们拜读你的源码时, 如果代码不规范, 乱七八糟的, 被小伙伴打死或者熬夜找 bug 事小, 影响项目进度或者破坏项目结构就完蛋了
通常我们的 python 代码都是遵循 PEP8 https://www.python.org/dev/peps/pep-0008/ 的规范化格式, 目的是为了保持代码的一致性, 可读性., 这里给大家推荐几个常用的静态代码检查工具, 大家可以酌情选择使用
1. pylint
Pylint 是一个 Python 静态代码分析工具, 它可以查找编程错误, 帮助强制执行编码标准, 嗅探代码异味并提供简单的重构建议.
它具有高度可配置性, 具有特殊的编译指示来控制代码中的错误和警告, 以及广泛的配置文件. 也可以编写自己的插件来添加自己的检查或以某种方式扩展 pylint.
缺省情况下, PyLint 启用许多规则. 它具有高度可配置性, 从代码内部处理程序控制它. 另外, 编写插件添加到自己的检查中是可能的.
安装
- pip install pylint
- # 如果您使用的是 Python 3.6+, 请升级以获得对您的版本的完全支持:
- pip install pylint --upgrade
- # 如果要从源分发版安装, 请解压缩 tarball 并运行以下命令
- python setup.py install
文档
该文档位于 http://pylint.pycqa.org/ .
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 相关可参考 https://github.com/google/yapf
其他的此类工具还有 Pyflakes,flake8 等等, 小编直接出到这两个常用的, 更多内容大家在项目实战中应该会有更多接触
来源: http://www.jianshu.com/p/62eb48564d50