Pylint 看起来像是一个运行 Python 代码分析的好工具。
然而,我们的主要目标是捕捉任何潜在的错误,而不是编码约定。启用所有 Pylint 检查似乎会产生很多噪音。您使用的一组 Pylint 功能是什么且有效?
Pylint 看起来像是一个运行 Python 代码分析的好工具。
然而,我们的主要目标是捕捉任何潜在的错误,而不是编码约定。启用所有 Pylint 检查似乎会产生很多噪音。您使用的一组 Pylint 功能是什么且有效?
您可以通过以下方式阻止任何您不喜欢的警告/错误:
pylint --disable=error1,error2
我已经阻止了以下内容(来自http://www.logilab.org/card/pylintfeatures的描述):
W0511:当检测到 FIXME 或 XXX 警告注释时使用
W0142:使用过 * 或 * 魔法*。当使用*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:缺少文档字符串。当模块、函数、类或方法没有文档字符串时使用。一些特殊的方法,例如__init__
不一定需要文档字符串。
C0103: 无效名称“%s”(应与 %s 匹配)。当名称与其类型(常量、变量、类...)关联的正则表达式不匹配时使用。
要永久禁用警告和约定:
~/.pylintrc
通过运行创建文件pylint --generate-rcfile > ~/.pylintrc
~/.pylintrc
disable=
并将该行更改为disable=W,C
Pyflakes应该很好地满足您的目的。
-E只会标记 Pylint 认为的错误(即,没有警告、没有约定等)
使用grep如下:
pylint my_file.py | grep -v "^C"
编辑:正如问题中提到的,要从 pylint 输出中删除约定建议,请删除以大写 C 开头的行。
从pylint 的文档中,输出包含符合格式的行
MESSAGE_TYPE: LINE_NUM:[OBJECT:] MESSAGE
消息类型可以是:
仅显示第一个字母,因此您可以使用 grep 来选择/删除所需的消息类型级别。
我最近没有使用 Pylint,但我可能会在 Pylint 中使用一个参数来这样做。