PyLint最佳实践?

时间:2010-12-09 06:29:26

标签: python static-analysis pylint

pyLint看起来像是运行python代码分析的好工具。但是,我们的主要目标是捕获任何潜在的错误而不是编码约定。启用所有pyLint检查似乎会产生很多噪音。关于你使用的一组pyLint功能的任何建议是否有效?

5 个答案:

答案 0 :(得分:23)

您可以通过以下方式阻止任何您不喜欢的警告/错误:

pylint --disable=error1,error2

我已阻止以下内容(来自http://www.logilab.org/card/pylintfeatures的说明):

W0511:当检测到警告音符为FIXME或XXX时使用

W0142:使用*或* magic *当使用*args**kwargs调度函数或方法来调度参数时使用。这不会提高可读性,应谨慎使用。

W0141:使用的内置函数%r在使用黑名单内置函数时使用(请参阅bad-function选项)。通常黑名单的功能就像map或filter,其中Python现在提供了一些更清晰的选择,如列表理解。

R0912:分支太多(%s /%s)当函数或方法分支太多时使用,使其难以理解。

R0913:参数太多(%s /%s)当函数或方法占用太多参数时使用。

R0914:局部变量太多(%s /%s)当函数或方法有太多局部变量时使用。

R0903:公共方法太少(%s /%s)当类的公共方法太少时使用,所以要确保它真的值得。

W0212:访问客户端类的受保护成员%s当受保护成员(即名称以下划线开头的类成员)访问类或类定义的后代时使用。

W0312:找到带有%ss而不是%ss的缩进。当模块中有一些混合制表符和空格时使用。

C0111:缺少docstring当模块,函数,类或方法没有docstring时使用。某些特殊方法(如__init__)不一定需要文档字符串。

C0103:名称“%s”无效(应匹配%s)当名称与其类型(常量,变量,类......)关联的正则表达式不匹配时使用。

答案 1 :(得分:10)

要持久禁用警告和约定:

  1. 运行~/.pylintrc
  2. 创建pylint --generate-rcfile > ~/.pylintrc文件
  3. 修改~/.pylintrc
  4. 取消注释disable=并将该行更改为disable=W,C

答案 2 :(得分:9)

Pyflakes应该很好地满足您的目的。

答案 3 :(得分:7)

-E只会标记pylint认为的错误(即没有警告,没有约定......)

答案 4 :(得分:1)

使用grep之类的:

pylint my_file.py | grep -v "^C"