28

Pylint 看起来像是一个运行 Python 代码分析的好工具。

然而,我们的主要目标是捕捉任何潜在的错误,而不是编码约定。启用所有 Pylint 检查似乎会产生很多噪音。您使用的一组 Pylint 功能是什么且有效?

4

5 回答 5

24

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

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 匹配)。当名称与其类型(常量、变量、类...)关联的正则表达式不匹配时使用。

于 2010-12-09T09:36:31.487 回答
13

要永久禁用警告和约定:

  1. ~/.pylintrc通过运行创建文件pylint --generate-rcfile > ~/.pylintrc
  2. 编辑~/.pylintrc
  3. 取消注释disable=并将该行更改为disable=W,C
于 2013-10-01T14:33:42.160 回答
9

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

于 2010-12-09T07:32:26.030 回答
7

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

于 2011-02-12T08:13:06.037 回答
1

使用grep如下:

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

编辑:正如问题中提到的,要从 pylint 输出中删除约定建议,请删除以大写 C 开头的行。

pylint 的文档中,输出包含符合格式的行

MESSAGE_TYPE: LINE_NUM:[OBJECT:] MESSAGE

消息类型可以是:

  • [R] 违反“良好实践”度量标准的因素
  • [C]违反编码标准的约定
  • [W] 风格问题或轻微编程问题的警告
  • [E] 重要编程问题的错误(即很可能是错误)
  • [F]atal 用于阻止进一步处理的错误

仅显示第一个字母,因此您可以使用 grep 来选择/删除所需的消息类型级别。

我最近没有使用 Pylint,但我可能会在 Pylint 中使用一个参数来这样做。

于 2016-08-11T14:42:13.283 回答