flake8 仅对一段代码禁用 linter

flake8 disable linter only for a block of code

我在 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 的块。

我想检查文件的其余部分,我不能在每个 fieldx 的末尾放置一个 # noqa: E501.

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

flake8 没有办法忽略代码块

您的选择是:

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

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

  3. 忽略整个文件中的 E501 使用 per-file-ignores:

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

通常我更喜欢第三个,甚至可能将您的 long-strings 隔离到他们自己的文件中以被忽略


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