Pylint禁用文件的所有警告

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

从PyLint常见问题

随着Pylint <0.25,添加

 # pylint: disable-all 

在模块的开始。

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

 # pylint: skip-file 

(但第一个版本将保持向后兼容)。

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

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

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 

注意:你可能已经在你的rc文件中有disable选项,在这种情况下,你应该在这个列表中附加'W'。

或者,您可以将其内联放在您的代码中,它将在其中放置的范围内工作:

 # pylint: disable=W 

要禁用整个文件,最好把它放在文件的最顶端。 然而,即使在文件的最顶端,我发现我仍然得到trailing-newlines警告消息(从技术上来说是一个常规的警告,但我明白了)。

就我而言,我有一个很久以前的人写的图书馆。 它运行良好,所以真的不用担心现代Python约定等。我真正关心的是错误,可能会打破我的代码。

我的解决scheme是通过在第一行放置下面的PyLint命令来禁用这个文件的所有WarningConventionRefactoring消息:

 # pylint: disable=W,C,R 

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

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

如果只想禁用特定的警告,可以通过添加一个注释,比如# pylint: disable=message-name来为文件的其余部分禁用指定的消息,或者至less直到# pylint: enable=message-name

例:

 # pylint: disable=no-member class C123(object): def __init__(self): self.foo_x = self.bar_x # pylint: enable=no-member class C456(object): def __init__(self): self.foo_x = self.bar_x 

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

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

解决方法是在pylint命令选项中包含--disable=file-ignored 。 解决这个问题花了太长时间, 当你明确地忽略一个文件时,不应该有一个file-ignored错误。