【问题标题】:Disable pylint execution on a section of code or function在一段代码或函数上禁用 pylint 执行
【发布时间】:2014-08-27 21:18:36
【问题描述】:

我将 pylint 0.27 与 python 2.7.3 一起使用。 Pylint 有一个已知错误,当​​它分析具有.next() 调用的代码时会发生该错误。正如http://www.logilab.org/122793 链接中给出的那样,它会因给定的回溯而失败。

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

我可以找到对使用 #pylint: skip-file 禁用 pylint 检查文件的支持,但我有兴趣在函数级别或更确切地说在行级别执行此操作。

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

【问题讨论】:

    标签: python skip pylint


    【解决方案1】:

    您可以通过将 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()
    

    【讨论】:

      【解决方案2】:

      很遗憾,您将无法在本地避免遇到的错误。

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

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

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

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

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

      【讨论】:

        【解决方案3】:

        当我重构代码时,我会包装我尚未触及的部分 在 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"
        

        【讨论】:

        • 我在 Python 2.7 中遇到了嵌套 lambda 的 pylint-error(Pylint 为此引发了一个错误,并且 Python-2 中的 this 不再受支持); #pylint: disable = E, W, R, C 成功了。谢谢。
        猜你喜欢
        • 2015-09-24
        • 1970-01-01
        • 1970-01-01
        • 2020-11-06
        • 2013-12-09
        • 2022-01-17
        • 1970-01-01
        • 2018-10-16
        • 1970-01-01
        相关资源
        最近更新 更多