1

当 Pylint 警告我某事时,我怎么知道它应用了哪些设置?这个设置的哪个部分.pylintrc进入?

例如:

  • Used builtin function 'map'. Using a list comprehension can be clearer. (bad-builtin)是因为bad-functionsin [BASIC]contains map
  • Missing function docstring (missing-docstring)以为条件docstring-min-length[BASIC]
  • invalid-name服从几个[BASIC]设置:variable-rgx, method-rgx, module-rgx, 等等。

我希望在Pylint 文档中找到此信息,但它通常不提供此信息。例如,没有来自适用选项的文档的missing-docstringinvalid-names链接。有了,信息很容易找到,但这只是因为它来自特定的扩展。Pylint消息 wiki解释了该消息的含义,但没有解释它是什么引起的。中的注释也没有将设置与警告代号相关联(没有任何解释,例如影响消息)。bad-builtinpylint --generate-rcfilebad-functionsbad-builtin

我问这个的原因是,在许多情况下,Pylint 的约定与我的项目的需求和约定不匹配,我想调整它而不是忽略特定实例或忽略消息批发(所以我不是在寻找disable=!) . 那么如何找到要调整的内容呢?

4

1 回答 1

0

我如何找到要调整的内容?

因此,您似乎在询问如何确定导致提出 pylint 消息的因素组合。使用该bad-builtin示例,一条根本未在 中列出的警告消息.pylintrc,一条有用的详细消息将是:

bad-builtinUsed builtin function 'map'. Using a list comprehension can be clearer.

---> (Hypothetical) VERBOSE OUTPUT

bad-builtin之所以提出,是因为bad-functions.pylintrc在该[BASIC]部分下的设置包含该功能map。如果您想“调整”此行为,请查看此处。

简短回答:我不确定这是否存在。

当您运行时pylint my_file.py,它应该告诉您的第一件事是它正在使用的配置文件。从那里,你想找到.pylintrc正在使用的,或者你想创建它。否则它将使用默认配置。如果 pylint 没有告诉您正在使用什么配置,您可以通过运行以下命令来确定您当前的 pylintrc 配置:

pylint --generate-rcfile &> output.txt

当您检查 output.txt 时,它应该看起来像这个示例 pylintrc。它被组织成不同的类别。您可以在不生成 rcfile 的情况下通过运行获得更多信息pylint --long-help。这些部分包括:

[MASTER]
[MESSAGES CONTROL]
[REPORTS]
[BASIC]
[ELIF]
[TYPECHECK]
[FORMAT]
[MISCELLANEOUS]
[VARIABLES]
[LOGGING]
[SIMILARITIES]
[SPELLING]
[IMPORTS]
[DESIGN]
[CLASSES]
[EXCEPTIONS]

我不确定你的意思是什么,“Pylint 消息 wiki 解释了该消息的含义,但没有解释它是什么引起的。” 当我在文件或代码库中运行 pylint 时,它会准确地告诉我有问题的行在哪里。

然后我通常要么:

  • 修复警告
  • 禁用警告
  • 修改.pylintrc以满足我的需要

如果您想调整特定的消息类型但不确定如何执行,那么我认为您是对的,可以更好地记录。问题:Is XYZ warning message 'tunable'?或者是修复或禁用的唯一选择?此页面列出了 pylint 功能,但我没有看到任何关于内置错误的信息,例如,更不用说可应用于消息类型的选项了。

更新:我不确定您使用的是哪个版本的 pylint,但看起来pylint 版本 1.6bad-builtin专门解决了这个问题。我本来想说我们应该看看实际源代码中发生了什么来生成这条消息,但我认为这需要先弄清楚你使用的是什么版本的 pylint,然后深入研究代码,然后弄清楚如何调呢?我同意文档可以更清楚地说明如何调整特定警告:

内置错误检查已移至扩展程序中。

该检查抱怨使用了不应该使用的内置函数。例如,map 和 filter 就属于这一类,因为可以使用更好的替代方案,例如列表推导。但是检查很烦人,因为使用 map 或 filter 可以有其用例,因此,我们决定将其移至扩展检查。现在可以通过 --load-plugins=pylint.extensions.bad_builtin 启用它。

于 2019-03-01T19:00:48.750 回答