Pylint:如何干净利落地压制事物,而不会产生随后的“压制消息”废话?

Lar*_*old 5 python pylint

我有一个文件foo.py,可以广泛使用Faker第三方模块。这样,pylint会生成许多“无成员”错误。

我想在foo.py中禁用它们。因此,在顶部,我尝试插入:

# pragma pylint: disable=no-member
Run Code Online (Sandbox Code Playgroud)

但是,以相当烦人的方式,每次遇到这些错误之一时,pylint都会发出一条被抑制的消息,这完全打败了我的编译指示?

foo.py:1:0: I0011: Locally disabling no-member (E1101) (locally-disabled)
... other misc stuff ...
foo.py:177:0: I0020: Suppressed 'no-member' (from line 1) (suppressed-message)
foo.py:83:0: I0020: Suppressed 'no-member' (from line 1) (suppressed-message)
foo.py:85:0: I0020: Suppressed 'no-member' (from line 1) (suppressed-message)
Run Code Online (Sandbox Code Playgroud)

嗯...那太荒谬了。

所以我试图...抑制抑制消息?

# pragma pylint: disable=no-member,suppressed-message
Run Code Online (Sandbox Code Playgroud)

然后变得更好...

foo.py:1:0: I0011: Locally disabling no-member (E1101) (locally-disabled)
foo.py:1:0: I0011: Locally disabling suppressed-message (I0020) (locally-disabled)
foo.py:1:0: C0102: Black listed name "foo" (blacklisted-name)
.... misc stuff, actual things I should clean up here ...
foo.py:1:0: I0021: Useless suppression of 'suppressed-message' (useless-suppression)
Run Code Online (Sandbox Code Playgroud)

因此,我想我的问题是-如何使抑制消息完全基于每个文件消失,而不会插入一些烦人的替换消息?

编辑:谢谢你的评论。

pylint --version的输出:

pylint 2.1.1
astroid 2.0.4
Python 3.6.5 (default, Apr 25 2018, 14:23:58) 
[GCC 4.2.1 Compatible Apple LLVM 9.1.0 (clang-902.0.39.1)]
Run Code Online (Sandbox Code Playgroud)

use*_*ica 4

默认情况下,I 类消息处于禁用状态。enable=all您通过在 pylintrc 的部分中设置来自行打开它们[MESSAGES CONTROL],然后您没有disable在同一部分的列表中禁用它们。添加suppressed-messagedisablepylintrc 中的列表中,抑制消息消息应该停止出现。

至于无用的抑制消息,这似乎是一个 pylint bug。