Pylint:禁用子类警告

6
我正在一个项目中使用pylint,但有些东西让我感到困扰。
例如,我创建了一个单元测试(unittest.TestCase的子类)。这个父类有很多方法,所以pylint会提示“R0904:公共方法太多”。 要“解决”此警告,我在本地禁用了此检查。
但是我需要编写很多单元测试,每次都在本地禁用此检查令我感到困扰。
因此,我正在寻找一种方法来禁用所有unittest.TestCase的子类的此检查。也许在一个pylint配置文件中,但是我没有找到任何内容。
你有什么想法吗?
非常感谢您的帮助。

希望有更简单的选项,但如果没有...您可以编写一个子类化插件(或者猴子补丁,但在这里子类化似乎更清晰)。我会通过添加一个新选项ignore-test-classes并使用它来跳过从任何被忽略的类继承的任何类的max-public-methods检查来完成此操作。(处理类检查器的ignore-iface-methods的代码应该是一个很好的模型。)实际上,这似乎可能具有足够通用的用途,如果您这样做,可以将其提交到上游。 - abarnert
2
虽然这并不能完全解决问题,但你可以将 pylintrc 文件放入一个包中(即任何带有 __init__.py 的目录),因此如果你的所有测试都在一个名为 tests 的目录中,你至少可以在项目级别上禁用它,即使不是全局性的。 - Crowman
谢谢您的回答,Abarnert。我会查看如何创建一个插件来解决我的问题。我的问题不仅仅是针对单元测试类。例如,我使用sqlalchemy和sqlalchemy.types.TypeDecorator的子类。我将尝试编写一个通用插件来添加一个选项,例如disable-XXXX=unittest.TestCase,...,... - Boris SABATIER
1个回答

3
你可以定义一个 pylintrc 文件,并使用它来运行 pylint。具体方法如下:
$ pylint --generate-rcfile > pylintrc

这将生成默认的pylintrc文件。应该有以下段落:

# Disable the message, report, category or checker with the given id(s). You
# can either give multiple identifier separated by comma (,) or put this option
# multiple time (only on the command line, not in the configuration file where
# it should appear only once).
#disable=

您希望在该段落之后(但在“消息控制”部分内)添加以下行:
disable=R0904

或者:

disable=too-many-public-methods

您需要使用该rcfile运行pylint。可以使用--rcfile=<file>参数来完成此操作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接