flake8 - 忽略函数的警告

not*_*.no 22 python flake8

我试图只忽略C901 too complex一个函数的警告。我已经尝试了几乎所有# noqa: C901我能看到的排列,但仍然出现错误。我会认为# noqa函数(方法?)上面的注释就足够了。我什至尝试将评论与def声明放在同一行,如下所示:

class Klass():

    def my_complex_method(self):  # noqa: C901
        """
        lots of if's and return's
        """
Run Code Online (Sandbox Code Playgroud)

这是我收到的消息的示例flake8

src/test/_resource.py:147:5: C901 'Resource.render' is too complex (22)
    def render(self, request):  # noqa: C901
    ^
Run Code Online (Sandbox Code Playgroud)

快速搜索只产生如何忽略全局或整个文件。这不是我想要的,因为文件中的其他函数如果太复杂,我确实想捕获。有谁知道我该如何解决我的问题?

Eug*_*ash 19

从文档中mccabeflake8在引擎盖下使用):

要使 报告的违规行为静音mccabe,请将您的# noqa: C901 放在函数定义行上,其中报告错误(可能是装饰器)。

所以你应该把# noqa注释放在包含def或带有装饰器的行上。


小智 10

请注意,如果您的方法不全部位于一行,则将# noqa位于该方法的第一行,如下所示:

def my_method(  # noqa: C901
    self,
    variable_name: str = None,
    variable_int: int = None,
    variable_list: list = None,
):
Run Code Online (Sandbox Code Playgroud)


ben*_*ing 9

最好忽略已知和可接受的复杂性,以便捕获并讨论任何未来的回归。接受 McCabe 复杂度高达 12 的方法:

def my_complex_function () # noqa: max-complexity=13
    pass
Run Code Online (Sandbox Code Playgroud)


bog*_*ata 8

当搜索这个不同的错误时,对我有用的是把它放在前缀flake8.

所以我猜这个:

# flake8: noqa: C901
def somefn(...): ...
Run Code Online (Sandbox Code Playgroud)

应该管用。

  • 虽然这在技术上确实有效,但它似乎禁用了整个文件的所有 Flake8 错误。 (6认同)
  • 它将禁用所有错误。应该是 `def somefn(...): # noqa: C901` (2认同)