【问题标题】:flake8 max-complexity per fileflake8 每个文件的最大复杂度
【发布时间】:2017-11-26 01:12:40
【问题描述】:

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

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

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

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

【问题讨论】:

标签: python django flake8


【解决方案1】:

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

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

这也可以在config file 中指定:

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

【讨论】:

    【解决方案2】:

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

    pip install flake8-per-file-ignores
    

    然后在你的配置文件中:

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

    如果您想要按方法/函数解决方案,您可以使用源代码中的 # noqa: ignore=C901 语法。

    【讨论】:

    • 从 Flake8 3.7.0 开始,--per-file-ignores 支持开箱即用,无需安装任何插件。详情请查看我的answer。
    【解决方案3】:

    在您的薄片配置中添加:

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

    尝试使用max-complexity 的值来为您的项目获取更相关的数字。

    编辑: 您也可以忽略 line of your code 或 file。

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-19
    • 2016-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多