Pylint 最佳实践

28 投票
5 回答
34965 浏览
提问于 2025-04-16 08:16

Pylint看起来是一个不错的工具,可以用来分析Python代码。

不过,我们主要的目标是发现潜在的错误,而不是遵循编码规范。开启所有Pylint的检查似乎会产生很多干扰信息。你们使用哪些Pylint的功能,效果比较好呢?

5 个回答

9

Pyflakes 应该能很好地满足你的需求。

13

要永久关闭警告和规范检查,可以按照以下步骤操作:

  1. 首先,运行 pylint --generate-rcfile > ~/.pylintrc 命令,这样会在你的电脑上创建一个 ~/.pylintrc 文件。
  2. 接着,打开这个 ~/.pylintrc 文件进行编辑。
  3. 找到 disable= 这一行,把它前面的注释去掉,然后把这一行改成 disable=W,C
25

你可以通过以下方式屏蔽你不喜欢的警告或错误:

pylint --disable=error1,error2

我屏蔽了以下内容(描述来自 http://www.logilab.org/card/pylintfeatures):

W0511:当检测到像 FIXME 或 XXX 这样的警告时使用。

W0142:使用 * 或 * magic*。当一个函数或方法使用 *args**kwargs 来传递参数时使用。这种方式可能会让代码不太容易读懂,所以要小心使用。

W0141:使用内置函数 %r。当使用了黑名单中的内置函数时使用(可以查看坏函数选项)。通常被列入黑名单的函数有 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)。当名称与其类型相关的正则表达式不匹配时使用(常量、变量、类等)。

撰写回答