我试图禁用警告C0321("在单行上多个语句" - 我经常if
在同一行上放置短单行结果的语句),在Pylint 0.21.1中(如果重要的话:到0.20. 1,常见的0.50.3,Python 2.6.6(r266:84292,2010年9月15日,16:22:56)).
我已经尝试添加disable=C0321
Pylint配置文件,但Pylint仍坚持报告它.该行的变化(如disable=0321
或disable=C321
)被标记为错误,因此Pylint 确实正确识别该选项,它只是忽略它.
这是一个Pylint错误,还是我做错了什么?有没有办法解决?我真的想摆脱一些噪音.
Rem*_*emi 153
我使用Eclipse遇到了这个问题并解决了如下问题:
在pylint文件夹中(例如C:\Python26\Lib\site-packages\pylint
),按住Shift键,右键单击并选择在该文件夹中打开windows命令.类型:
lint.py --generate-rcfile > standard.rc
Run Code Online (Sandbox Code Playgroud)
这将创建standard.rc
配置文件.在记事本中打开它[MESSAGES CONTROL]
,取消注释
disable=
并添加要禁用的消息ID,例如:
disable=W0511, C0321
Run Code Online (Sandbox Code Playgroud)
保存文件,在Eclipse-> window-> preferences-> PyDev-> pylint中,在参数框中键入:
--rcfile=C:\Python26\Lib\site-packages\pylint\standard.rc
Run Code Online (Sandbox Code Playgroud)
现在它应该工作......
您还可以在代码顶部添加注释,该注释将由pylint解释:
# pylint: disable=C0321
Run Code Online (Sandbox Code Playgroud)
链接到所有pylint消息代码
添加例如--disable-ids=C0321
在参数框中不起作用.所有可用的pylint消息都存储在字典中_messages
,pylint.utils.MessagesHandlerMixIn
该类是该类实例的属性.当使用参数运行pylint时--disable-ids=...
(至少没有配置文件),此字典最初为空,在pylint中引发KeyError异常(pylint.utils.MessagesHandlerMixIn.check_message_id()
.在Eclipse中,您可以在Pylint 控制台中看到此错误消息(windows - show view - Console ,从控制台图标旁边的控制台选项中选择Pylint控制台.)
Chr*_*gan 144
pylint --generate-rcfile
显示如下:
[MESSAGES CONTROL]
# Enable the message, report, category or checker with the given id(s). You can
# either give multiple identifier separated by comma (,) or put this option
# multiple time.
#enable=
# Disable the message, report, category or checker with the given id(s). You
# can either give multiple identifier separated by comma (,) or put this option
# multiple time (only on the command line, not in the configuration file where
# it should appear only once).
#disable=
Run Code Online (Sandbox Code Playgroud)
所以看起来你~/.pylintrc
应该disable=
在一个部分内有行/ s [MESSAGES CONTROL]
.
imo*_*lit 138
从Pylint v.0.25.3开始,您可以使用符号名称来禁用警告,而不必记住所有这些代码.例如:
# pylint: disable=locally-disabled, multiple-statements, fixme, line-too-long
Run Code Online (Sandbox Code Playgroud)
这种风格比神秘的错误代码更有启发性,而且更实用,因为较新版本的Pylint只输出符号名称,而不是错误代码.
符号名称和代码之间的对应关系可以在这里找到.
可以在自己的行上插入禁用注释,将禁用应用于同一块中的所有内容.或者,它可以插入要应用的线的末端.
如果pylint输出" Locally disabling
"消息,你可以通过locally-disabled
首先包括禁用来消除它们,如上例所示.
tha*_*kis 75
要在块中本地禁用警告,请添加
# pylint: disable=C0321
Run Code Online (Sandbox Code Playgroud)
那个街区.
Chr*_*son 74
有几种方法可以禁用Pylint的警告和错误.使用哪一个与您想要应用禁用的全局或本地方式有关 - 这是一个重要的设计决策.
多种方法
pylintrc
文件中.这涉及的不仅仅是~/.pylintrc
Chris Morgan描述的文件(在$ HOME目录中).Pylint将搜索rc文件,优先级更高的值"更近"文件:
一个pylintrc
在当前工作目录下的文件; 要么
如果当前工作目录在Python模块中(即它包含一个__init__.py
文件),则搜索Python模块的层次结构直到pylintrc
找到文件; 要么
由环境变量PYLINTRC命名的文件; 要么
如果您的主目录不是/root
:
~/.pylintrc
; 要么
~/.config/pylintrc
; 要么
/etc/pylintrc
请注意,大多数这些文件都是命名的pylintrc
- 只有文件中~
有一个前导点.
在您的pylintrc
文件中添加行以禁用特定的pylint消息.例如:
[MESSAGES CONTROL]
disable=locally-disabled
Run Code Online (Sandbox Code Playgroud)
进一步禁用pylint
命令行,如Aboo和Cairnarvon所述.这看起来像pylint --disable=bad-builtin
.重复--disable
以禁止其他项目.
进一步禁用单个Python代码行,如Imolit所述.这些看起来像some statement # pylint: disable=broad-except
(对原始源代码行末尾的额外注释)并仅适用于当前行.我的方法是始终将这些放在其他代码行的末尾,这样它们就不会与块样式混淆,见下文.
为更大的Python代码块定义的进一步禁用,直到完整的源文件.
这些看起来像# pragma pylint: disable=bad-whitespace
(注意pragma
关键词).
这些适用于 pragma 之后的每一行.将这些块放在文件的顶部会使抑制应用于整个文件.将相同的块放在文件中较低的位置使它们仅适用于块后面的行.我的方法是始终把它们放在自己的行上,这样它们就不会与单行样式混淆,见上文.
当抑制仅应用于代码范围内时,请使用# pragma pylint: enable=bad-whitespace
(现在enable
不使用disable
)来停止抑制.
请注意,禁用单行使用# pylint
语法,而禁用此行以前使用# pragma pylint
语法.这些很容易混淆,特别是在复制和粘贴时.
把它放在一起
我通常使用这些方法的混合.
我~/.pylintrc
用于绝对的全球标准 - 其中很少.
pylintrc
当存在项目特定标准时,我在Python模块中的不同级别使用项目级别.特别是当您从其他人或团队接收代码时,您可能会发现他们使用您不喜欢的约定,但您不想重新编写代码.将设置保持在此级别有助于不将这些实践传播到其他项目.
我在单个源文件的顶部使用块样式编译指示.我喜欢在开发的热度中关闭pragma(停止抑制消息),即使对于我不同意的Pylint标准(例如"太少的公共方法" - 我总是在自定义Exception类上得到警告) - 但是在开发过程中查看更多/可能所有Pylint消息会很有帮助.通过这种方式,您可以使用单行编译指示找到要解决的案例(请参阅下文),或者只是为下一个开发人员添加注释,以解释为什么在这种情况下警告是正常的.
即使代码准备好检查,我也会启用一些块样式的pragma.我尝试使用其中的一些,但是当它对模块有意义时,可以将其作为文档.但是我试着尽可能少地离开,最好是没有.
我使用单行注释样式来解决特别有效的错误.例如,如果有一个它实际上有意义的地方except Exception as exc
,我把# pylint: disable=broad-except
那条线放在那条线而不是更全局的方法,因为这是一个奇怪的例外,需要被调出,基本上作为一种文档形式.
与Python中的其他所有内容一样,您可以在不同的间接层中执行操作.我的建议是考虑属于什么级别的东西,这样你就不会对Pylint采取过于宽松的方法.
小智 14
您还可以使用以下命令:
pylint --disable=C0321 test.py
Run Code Online (Sandbox Code Playgroud)
我的pylint版本是0.25.1.
Che*_*tra 11
您只需要添加一行即可禁用要禁用的内容。
例如,
#pylint: disable = line-too-long, too-many-lines, no-name-in-module, import-error, multiple-imports, pointless-string-statement, wrong-import-order
Run Code Online (Sandbox Code Playgroud)
在模块的最开始添加它。
如果这对某人有帮助,如果您使用的是Visual Studio Code,它期望文件采用 UTF-8 编码。为了生成该文件,我pylint --generate-rcfile | out-file -encoding utf8 .pylintrc
在PowerShell中运行。
归档时间: |
|
查看次数: |
215054 次 |
最近记录: |