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命令来禁用这个文件的所有Warning , Convention和Refactoring消息:
# 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
错误。