每个文件的 flake8 最大复杂度

flake8 max-complexity per file

我有一个遗留项目使用 flake8 检查代码质量和复杂性,但该项目有一些非常复杂(糟糕)的服务返回复杂性警告消息:

./service1.py:127:1: C901 'some_method' is too complex (50)

我们正在慢慢过渡到让它们变得更好,但我们需要让 jenkins(即 运行 测试和 flake8)通过。

有没有一种方法可以指定忽略每个文件甚至每个方法的代码错误或复杂性?

在你的薄片配置中添加:

[flake8]
ignore = C901
max-complexity = <some_number>

尝试使用 max-complexity 的值进行试验,以获得与您的项目更相关的数字。

编辑: 您也可以忽略 line of your code or a file.

完成重构后,不要忘记更改这些设置。

您可以使用 flake8-per-file-ignores:

pip install flake8-per-file-ignores

然后在您的配置文件中:

[flake8]
per-file-ignores =
    your/legacy/path/*.py: C901,E402

如果您想要 per-method/function 解决方案,您可以使用 in-source # noqa: ignore=C901 语法。

如果您有 Flake8 3.7.0+,您可以使用 --per-file-ignores 选项忽略特定文件的警告:

flake8 --per-file-ignores='service1.py:C901'

这也可以在config file中指定:

[flake8]
per-file-ignores =
    service1.py: C901