Pylint禁用文件的所有警告


85

我们在构建系统中使用pylint。我们在代码库中有一个包含可丢弃代码的python程序包,我想暂时禁用该模块的所有警告,以便不再用这些多余的消息来烦扰其他开发人员。是否有一种简单的方法来pylint: disable处理模块的所有警告?

Answers:


120

PyLint常见问题解答

当Pylint <0.25时,添加

# pylint: disable-all

在模块的开头。

Pylint 0.26.1及更高版本已将该指令重命名为

# pylint: skip-file

(但为了保持向后兼容性,将保留第一个版本)。

为了便于查找哪些模块被忽略,发出了信息级消息I0013。在最新版本的Pylint中,如果使用旧语法,则会发出附加的I0014消息。


2
注意:这将禁用所有警告和所有错误。如果您正在寻找一种禁用警告的方法,请参阅此页面上的答案。
eatcrayons 17-4-20

30

PyLint有五个用于消息的“类别”(据我所知)。

这些类别在过去非常明显,但是编号的Pylint消息现在已被名称替换。例如,C0302现在too-many-lines。但是“ C”告诉我们这too-many-lines是一个公约信息。这令人困惑,因为Conventional消息经常只是显示为警告,因为许多系统(例如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命令来禁用此文件的所有WarningConventionRefactoring消息:

# pylint: disable=W,C,R

除了前面提到的用于换行符的消息外,这确实满足了我的需要。


14

是的,您可以指定# 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

为了避免被告知已禁用特定警告,disable=locally-disabled可以将此类警告添加到pylintrc中。
上校Fazackerley '18

@ColonelFazackerley是的,但是在那时,pylintrc为您的项目创建文件很有意义。这里有一个例子。
Acumenus

6

另一个选项是使用--ignore命令行选项来跳过对某些文件的分析。


0

我的用例是运行pylint *.py以处理目录中的所有文件,但我要跳过一个特定的文件。

添加会#pylint: skip-file导致pylint失败I: 8, 0: Ignoring entire file (file-ignored)。添加#pylint: disable=file-ignored并不能解决该问题。据推测,这是一个全局错误,而不是特定于文件的错误。

解决方案是--disable=file-ignored在pylint命令选项中包含。解决这个问题花了太长时间。file-ignored当您显式忽略文件时,应该没有错误。


1
更理想的是,将其放在pylintrc配置文件中,而不是在命令选项中。
Acumenus
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.