首页 > 解决方案 > flake8 仅对代码块禁用 linter

问题描述

我在 python 中有一个文件,例如:

def test_constructor_for_legacy_json():
    """Test if constructor works for a legacy JSON in an old database"""

    a = A(**{
        'field1': 'BIG TEXT WITH MORE THAN 500 CHARACTERS....(...)',
        'field2': 'BIG TEXT WITH MORE THAN 500 CHARACTERS....(...)',
        'field3': 'BIG TEXT WITH MORE THAN 500 CHARACTERS....(...)',
        # (...)
        'field1000': 'BIG TEXT WITH MORE THAN 500 CHARACTERS....(...)',
    })

    assert type(a) == A

当我运行flake8+时hacking,我收到一个错误,因为线条太大。

如果我将此命令放在文件的开头,# flake8: noqa所有文件都将被 linter 忽略。但我只想从 linter 中排除a声明的块。

我想对文件的其余部分进行 lint,并且不能在每个文件的末尾放置fieldx一个# noqa: E501.

有人知道我该如何解决这个问题?谢谢

标签: pythonflake8

解决方案


flake8 中没有办法忽略代码块

您的选择是:

  1. # noqa: E501通过放置它来忽略产生错误的每一行

  2. 忽略整个文件(但这也会关闭所有其他错误),并单独# flake8: noqa一行

  3. 通过使用忽略E501整个文件per-file-ignores

    [flake8]
    per-file-ignores =
         path/to/file.py: E501
    

通常我更喜欢第三个,甚至可能将你的长字符串隔离到他们自己的文件中以被忽略


免责声明:我是当前的 flake8 维护者


推荐阅读