我们正在使用我们的编译系统内pylint的。 我们有一个Python包,有一次性的代码我们的代码库中,我想禁用所有警告的模块暂时让我别再缠着其他开发者使用这些多余的消息。 有没有一种简单的方法来pylint: disable
对一个模块的所有警告?
Answer 1:
从pylint的常见问题解答
与pylint的<0.25,加
# pylint: disable-all
在模块的开始。
pylint的0.26.1和高达已重命名的指令
# pylint: skip-file
(但第一个版本将被保持向后兼容)。
为了缓解发现哪些模块被忽略一个信息级消息I0013被emited。 随着新版本的pylint的,如果你使用旧的语法,另外的I0014消息emited。
Answer 2:
pylint的具有对信息五“类别” (其中我知道)。
这些类别是非常明显的,在过去,但编号pylint的消息现在已经通过名称进行替换。 例如, C0302
现在是too-many-lines
。 但是,“C”告诉我们, too-many-lines
是一个会议的消息。 这是令人困惑,因为公约的消息经常只是显示为警告,因为许多系统(如Syntastic )似乎一切,警告或错误分类。 然而,pylint的报告仍然打破下来到这些类别,所以它仍然是绝对支持的。
你的问题具体是指警告 ,所有pylint的警告消息名称以“W”。
这是一个有点困难,我跟踪此下来,但这个答案最终导致我的答案。 pylint的仍然支持禁用消息的整个类。 因此,禁用所有警告 ,你会怎么做:
disable=W
这可以在命令行使用:
$ pylint --disable=W myfile.py
或者,你可以把它放在你pylintrc文件:
[MESSAGES CONTROL]
disable=W
注意:你可能已经安装了disable
在您的RC文件的选项,在这种情况下,你应该把“W”到此列表中。
或者,你可以把它内嵌在你的代码,在那里将进行到它所处范围工作:
# pylint: disable=W
要禁用它对于整个文件,最好把它在文件的最顶端。 然而,即使在文件的最顶端,我发现我仍然得到了trailing-newlines
警告消息(技术上约定警告,但我发现了这一点)。
就我而言,我从很久以前写的别人库。 它运作良好,所以确实没有必要担心现代的Python约定,等我真正关心的是,将有可能打破我的代码中的错误。
我的解决办法是禁用所有警告 , 公约 ,并重构消息这个文件只把下列pylint的命令,在第一行:
# pylint: disable=W,C,R
除了用于尾随换行符上述消息,这确实正是我需要的。
Answer 3:
是的,你可以指定# pylint: skip-file
,但它是不好的做法,禁用文件中的所有警告。 一次性的代码不应该由pylint的分析分支存在。
如果你只希望关闭特定的警告,这可以通过添加注释,如完成# pylint: disable=message-name
以禁用文件的剩余部分指定的消息,或者至少要等到# pylint: enable=message-name
。
例:
# pylint: disable=no-member
class C123:
def __init__(self):
self.foo_x = self.bar_x
# pylint: enable=no-member
class C456:
def __init__(self):
self.foo_x = self.bar_x
Answer 4:
另一种选择是使用--ignore
命令行选项来跳过分析一些文件。
Answer 5:
我用例是运行pylint *.py
处理目录中的所有文件,但我想跳过一个特定的文件。
添加#pylint: skip-file
造成pylint的失败, I: 8, 0: Ignoring entire file (file-ignored)
。 添加#pylint: disable=file-ignored
不解决这个问题。 据推测,这是一个全球性的错误,而不是一个特定的文件之一。
解决的办法是包括--disable=file-ignored
在pylint的命令选项。 花了太长时间想出解决办法; 不应该有一个file-ignored
错误,当你明确地忽略一个文件。