【问题标题】:Flake8: Ignore specific warning for entire fileFlake8:忽略整个文件的特定警告
【发布时间】:2018-06-17 15:27:06
【问题描述】:

Ignoring Errors 文档目前列出了一种忽略特定行的特定错误的方法:

example = lambda: 'example'  # noqa: E731

...以及一种忽略整个文件的所有错误的方法:

# flake8: noqa

from foo import unused
function_that_doesnt_exist()
x = 1+       2

...以及通过配置或命令行选项在整个项目中全局禁用特定错误的几种方法。

但是,如果我想忽略整个 single 文件中的 特定 错误怎么办 - 例如,禁用关于 __init__.py 桶中未使用导入的警告只导入一堆类的文件,以便其他包中的代码可以依次从中导入它们?文档似乎没有暗示任何语法。有可能吗?

【问题讨论】:

  • 对于您的特定示例,官方推荐的方法 (IIRC) 是给出明确的__all__ 声明,列出导入的内容。

标签: python flake8


【解决方案1】:

从 Flake8 3.7.0 开始,您可以使用 --per-file-ignores 选项执行此操作。

命令行示例

flake8 --per-file-ignores="project/__init__.py:F401 setup.py:E121"

或者在你的配置文件中

per-file-ignores =
    project/__init__.py:F401
    setup.py:E121
    other_project/*:W9

在此处查看文档:http://flake8.pycqa.org/en/latest/user/options.html?highlight=per-file-ignores#cmdoption-flake8-per-file-ignores

不能像对单个行一样在文件顶部为特定代码放置noqa 注释。 # flake8: noqa: F401 乍一看可能有效,但实际上它被检测为仅# flake8: noqa,这意味着“忽略文件中的所有消息”。

【讨论】:

    【解决方案2】:

    在 3.7.0 版之前,忽略特定错误仅在 per-line 实现,而不是每个文件。

    该功能正在issue #89 中进行跟踪和讨论,其中仅采用了每行提案。最近,this merge request 提出了一个实现,但没有人跟进。

    然而,已经出现了一些扩展来解决这个问题:

    • flake8-per-file-ignores 允许您通过配置中的条目忽略特定文件的特定警告/错误。

    • flake8-putty 声称会这样做,但已经有一段时间没有更新了。

    【讨论】:

    • 来自flake8-per-file-ignores repo:“这个 flake8 扩展已经停止使用 flake8 3.7.0 及更高版本中内置的 per-file-ignores 选项。但请注意,内置选项使用不同的句法。”这是 flake8 网站关于该选项的文档的版本化 link
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-23
    • 1970-01-01
    • 1970-01-01
    • 2019-05-26
    • 1970-01-01
    • 2012-06-06
    • 1970-01-01
    相关资源
    最近更新 更多