如何在 pylint 中禁用 "TODO" 警告?

How do I disable "TODO" warnings in pylint?

当 运行 pylint 在 python 文件上时,它会默认显示有关 TODO 注释的警告。例如:

************* Module foo
W:200, 0: TODO(SE): fix this! (fixme)
W:294, 0: TODO(SE): backlog item (fixme)
W:412, 0: TODO(SE): Delete bucket? (fixme)

虽然我确实发现此行为很有用,但我想知道一种暂时 and/or 永久打开或关闭这些特定警告的方法。

我能够生成一个 pylint 配置文件: pylint --generate-rcfile > ~/.pylintrc

我只是记下要在这个文件中放入什么来禁用 TODO 注释的警告。

在生成的配置文件中,您应该看到一个部分

  [MISCELLANEOUS]

  # List of note tags to take in consideration, separated by a comma.
  notes=FIXME,XXX,TODO

只需从 "notes" 列表中删除 TODO。

配置文件位于

~/.pylintrc

如果你还没有生成配置文件,这可以用

来完成
pylint --generate-rcfile > ~/.pylintrc

除了@sthenault 发布的可以禁用所有警告的解决方案外,Pylint 还允许您忽略一行(如果您将来想处理它会很有帮助),如下所示:

A_CONSTANT = 'ugh.'  # TODO: update value  # pylint: disable=fixme

或通过说明规则 ID:

A_CONSTANT = 'ugh.'  # TODO: update value  # pylint: disable=W0511

在我们的项目中,我们有一个 pylint.cfg 文件。我们使用 --rcfile pylint 选项指向该文件。

在pylint.cfg中,我可以禁用检查器W0511,这是在评论中抱怨"TODO"和类似术语的检查器。只需将 W0511 添加到参数 disable 的 comma-separated 列表中。

但是请记住,正如 Bob Martin 叔叔所说,TODO 不是在系统中留下错误代码的借口,应该定期扫描代码以删除 TODO,并且 pylint and/or sonarqube 问题可以起到很好的提醒和激励作用。

恕我直言,您的代码不应该有 # TODO,但在开发过程中可能需要在短时间内使用 TODO,在这种情况下,pylint 会打扰您。为了在这段时间内避免这种情况,最好的办法是在 pylintrc 中全局禁用它,方法是将 fixme 添加到 disable 列表中,如下所示:

[MESSAGES CONTROL]
# globally disable pylint checks (comma separated)
disable=fixme,...

所以它让您有时间修复所有 TODO,完成后,您可以从 pylintrc 中删除 fixme。请注意,如果您使用较旧的 pylint 版本,则需要使用 W0511 而不是 fixme。有关详细信息,请参阅 https://pylint.pycqa.org/en/stable/technical_reference/features.html#messages-control-options

按照第一个答案中的建议更改 pylintrc notes 在我看来是一种不好的做法。 notes 旨在配置触发 fixme 警告的评论,而不是旨在禁用警告。