禁止在部分代码或函数上执行pylint执行

Jat*_*mar 6 python skip pylint

我正在将pylint 0.27与python 2.7.3一起使用。Pylint有一个已知的bug,当它分析具有.next()调用的代码时会命中。如http://www.logilab.org/122793链接中所给出的,它失败并返回给定的回溯。

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

我可以找到使用禁用文件上的pylint检查的支持,#pylint: skip-file但我对在功能级别或行级别执行此操作感兴趣。

也欢迎任何其他解决方法!

Gar*_*lak 6

您可以通过添加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()
Run Code Online (Sandbox Code Playgroud)


sth*_*ult 1

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

人们可能期望在源代码中找到有问题的代码段,然后在本地禁用所涉及的消息,但这不起作用,因为它仍然会运行。这是因为当本地禁用消息时,会运行检测该消息的代码,但最终不会发出该消息。

但是,如果您全局禁用此消息(取决于其实现方式),它可能会起作用。就您而言,不幸的是您似乎必须跳过整个“日志记录”检查器。

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

  • 本地使用pylint: skip-file,在这种情况下,每个 pylint 的功能将被激活,但整个有问题的文件将被跳过

  • 全局禁用“日志记录”检查器 ( --disable=logging),在这种情况下,将检查整个代码(包括有问题的文件),但不会显示“日志记录”检查器消息