Python flake8-忽略函数的警告

Python flake8-忽略函数的警告,python,flake8,Python,Flake8,我试图忽略警告C901,因为它太复杂了,仅用于单个函数。我尝试了几乎所有的#noqa:C901排列,但仍然出现了错误。我认为函数(方法?)上方的#noqa注释就足够了。我甚至尝试将注释与def声明放在同一行,如下所示: class Klass(): def my_complex_method(self): # noqa: C901 """ lots of if's and return's """ 下面是我从flake8收到的消息示例

我试图忽略警告
C901,因为它太复杂了
,仅用于单个函数。我尝试了几乎所有的
#noqa:C901
排列,但仍然出现了错误。我认为函数(方法?)上方的
#noqa
注释就足够了。我甚至尝试将注释与
def
声明放在同一行,如下所示:

class Klass():

    def my_complex_method(self):  # noqa: C901
        """
        lots of if's and return's
        """
下面是我从
flake8
收到的消息示例:

src/test/_resource.py:147:5: C901 'Resource.render' is too complex (22)
    def render(self, request):  # noqa: C901
    ^
快速搜索只会生成如何全局忽略或忽略整个文件。这不是我想要的,因为如果文件太复杂,我确实希望捕获文件中的其他函数。有人知道我如何解决我的问题吗?

来自上的文档(由发动机罩下的
flake8
使用):

要使mccabe报告的违规行为保持沉默,请将您的
#noqa:C901
在函数定义行上,报告错误的位置 (可能是装修工)


因此,您应该将
#noqa
注释放在包含
def
的行上,或者放在带有装饰器的行上。

在搜索其他错误时,对我有效的方法是将其前缀放在
flake8

所以我猜:

#flake 8:noqa:C901
def somefn(…):。。。

应该有效。

您可以忽略特定行的错误,但您必须在抛出错误的行上添加
#noqa
注释,这可能不是
def
行。@据我所知,这一切都在
def
行上。我已经用一个例子更新了这个问题,我从flake8得到了什么。你的函数有装饰器吗?我通过将
#noqa
注释放置在装饰器的行上而不是包含
def
的行上,禁用了此函数的此警告。虽然这在技术上可行,但它似乎禁用了整个文件的所有Flake8错误。它将禁用所有错误。它应该是
def somefn(…):#noqa:C901
注意:
#flake 8:noqa:C901
在函数装饰行报告冲突时不起作用,因此请确保只使用
#noqa:C901