禁用部分代码或函数上的pylint执行

时间:2014-08-27 21:18:37

标签: python skip pylint

我正在使用pylint 0.27和python 2.7.3。 Pylint有一个已知错误,它在分析具有.next()调用的代码时会遇到错误。正如http://www.logilab.org/122793链接中给出的那样,它在给定的回溯中失败。

我无法更改我的python和pylint版本,但我想通过添加.next()来禁用#pylint: MAGIC调用的代码段上的pylint来解决此问题在我的代码中发表评论。

我可以找到支持使用#pylint: skip-file禁用文件上的pylint检查,但我有兴趣在功能级别或更确切地说是在行级别。

欢迎任何其他变通办法!

3 个答案:

答案 0 :(得分:4)

您可以通过将pylint注释添加为函数体的第一行来完成此操作,如下所示:

def wont_raise_pylint():
  # pylint: disable=W0212
  some_module._protected_member()
  some_module._protected_member()

def will_still_raise_pylint():
  some_module._protected_member()

答案 1 :(得分:1)

不幸的是,您无法在本地避免遇到的错误。

可以期望在源代码中找到有问题的代码片段,然后在本地禁用所涉及的消息,但这不会起作用,因为它仍将运行。这是因为当本地禁用消息时,运行检测此消息的代码,最后只发送消息。

但是,如果您全局禁用此消息(取决于其实施方式),可能有效。在你的情况下,似乎不幸的是你必须跳过整个'伐木'检查器。

总而言之,为避免追溯,您可以:

  • 在本地使用pylint: skip-file,在这种情况下,每个pylint的功能都会被激活,但会跳过整个违规文件

  • 全局禁用'记录'检查器(--disable=logging),在这种情况下,将检查整个代码(包括违规文件)但没有'记录'检查消息

答案 2 :(得分:1)

重构代码时,我包裹了我尚未触摸的部分 在class ToDo中,并使用指令开始该类 忽略所有消息。在课程结束时,指令 超出范围。 MWE:

def unused_variable(foo=''):
    "generate W0613"

class ToDo:
    #pylint: disable = E, W, R, C
    #disables W0613 and E0213

    def unused_variable(foo=''):
        "generate W0613 and E0213"

def main(foo=''):
    "generate W0613"