Pylint禁用文件的所有警告

mva*_*een 75 python pylint

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

end*_*ill 97

来自PyLint FAQ

Pylint <0.25,添加

# pylint: disable-all
Run Code Online (Sandbox Code Playgroud)

在模块的开头.

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

# pylint: skip-file
Run Code Online (Sandbox Code Playgroud)

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

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

  • 注意:这将禁用所有警告和*所有错误*。如果您正在寻找一种禁用 *only* 警告的方法,请参阅我在此页面上的回答。 (3认同)

eat*_*ons 24

PyLint有五个"类别"用于消息(我知道).

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

您的问题特指警告,所有PyLint 警告消息名称都以'W'开头.

对我来说跟踪它有点困难,但这个答案最终让我得到答案.PyLint仍然支持禁用整个类别的消息.因此,要禁用所有警告,您可以:

disable=W
Run Code Online (Sandbox Code Playgroud)

这可以在命令行中使用:

$ pylint --disable=W myfile.py
Run Code Online (Sandbox Code Playgroud)

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

[MESSAGES CONTROL]
disable=W
Run Code Online (Sandbox Code Playgroud)

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

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

# pylint: disable=W
Run Code Online (Sandbox Code Playgroud)

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

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

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

# pylint: disable=W,C,R
Run Code Online (Sandbox Code Playgroud)

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


Acu*_*nus 12

是的,您可以指定# 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
Run Code Online (Sandbox Code Playgroud)


sth*_*ult 6

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