PyLint最佳实践?

ami*_*mit 27 python static-analysis pylint

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

muc*_*out 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__不一定需要docstring.

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

  • 禁用特定类型的消息的描述是正确的,但我相信抑制错误的一些具体选择是有争议的.像"太多局部变量/分支"这样的东西是一个巨大的红旗. (3认同)

Jac*_*lly 10

要持久禁用警告和约定:

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


use*_*312 9

Pyflakes应该很好地服务于你的目的.


gur*_*lex 7

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