如何在 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
警告的评论,而不是旨在禁用警告。
当 运行 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
警告的评论,而不是旨在禁用警告。