Pylint禁用文件的所有警告

时间:2012-04-19 23:53:42

标签: python pylint

我们在构建系统中使用pylint。我们的代码库中有一个包含一次性代码的python包,我想暂时禁用模块的所有警告,所以我可以停止用这些多余的消息来窃听其他开发人员。是否可以轻松地pylint: disable模块的所有警告?

5 个答案:

答案 0 :(得分:84)

来自PyLint FAQ

使用Pylint< 0.25,添加

# pylint: disable-all

在模块的开头。

Pylint 0.26.1及以上已将该指令重命名为

# pylint: skip-file

(但保留第一个版本是为了向后兼容)。

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

答案 1 :(得分:19)

PyLint有five "categories" for messages(其中我知道)。

这些类别在过去非常明显,但编号的Pylint消息现在已被名称替换。例如,C0302现在是too-many-lines。但是'C'告诉我们too-many-lines Convention 消息。这很令人困惑,因为 Convention 消息经常只显示为警告,因为许多系统(例如Syntastic)似乎将所有内容归类为警告或错误。但是,PyLint报告仍然将这些内容分解为这些类别,因此它仍然受到支持。

您的问题特指警告,所有PyLint 警告消息名称均以“W”开头。

我有点难以追踪这一点,但是this answer最终让我得到了答案。 PyLint仍然支持禁用整个类别的消息。因此,要禁用所有警告,您可以执行以下操作:

disable=W

这可以在命令行中使用:

$ pylint --disable=W myfile.py

或者,您可以将它放在您的pylintrc文件中:

[MESSAGES CONTROL]
disable=W

注意:您的rc文件中可能已经有disable选项,在这种情况下,您应该将“W”附加到此列表中。

或者,您可以将其内联到您的代码中,它将适用于它所在的范围:

# pylint: disable=W

要为整个文件禁用它,最好将它放在文件的最顶层。但是,即使在文件的最顶端,我发现我仍然收到trailing-newlines警告消息(技术上是约定警告,但我已经达到了这一点。)

就我而言,我很久以前就有一个人写的图书馆。它工作得很好,所以真的没有必要担心现代Python约定等等。我真正关心的是可能会破坏我的代码的错误。

我的解决方案是仅通过放置以下PyLint命令来禁用此一个文件的所有警告约定重构消息第一行:

# pylint: disable=W,C,R

除了前面提到的追踪换行符的消息之外,这正是我所需要的。

答案 2 :(得分:8)

是的,您可以指定# pylint: skip-file,但禁用文件的所有警告是不好的做法。丢失代码不应存在于由pylint分析的分支中。

如果您只想禁用特定警告,可以通过添加# pylint: disable=message-name等注释来禁用文件其余部分的指定消息,或者至少等到# pylint: enable=message-name。< / p>

示例:

# 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

答案 3 :(得分:5)

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

答案 4 :(得分:0)

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

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

解决方案是在pylint命令选项中包含--disable=file-ignored。花了太长时间搞清楚这一点;显式忽略文件时不应出现file-ignored错误。