web-dev-qa-db-ja.com

Flake8:ファイル全体の特定の警告を無視

Ignoring Errors ドキュメントは現在、特定の行の特定のエラーを無視する方法をリストしています:

example = lambda: 'example'  # noqa: E731

...そして、ファイル全体のallエラーを無視する方法:

# flake8: noqa

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

...そして、プロジェクト全体で特定のエラーgloballyを無効にするconfigまたはコマンドラインオプションのいずれかを使用したいくつかの方法。

しかし、singleファイル全体でparticularエラーを無視したい場合-たとえば、__init__.pyバレルファイル内の未使用のインポートに関する警告を無効にする場合それはクラスの束をインポートするだけなので、他のパッケージのコードがそれらから順番にインポートできますか?ドキュメントは、この構文を暗示していないようです。出来ますか?

30
Mark Amery

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は、「ファイル内のメッセージを無視するall」を意味します。

21
Ross MacArthur

バージョン3.7.0より前では、特定のエラーを無視するのは per-line のみで、ファイルごとではありませんでした。

この機能は issue#89 で追跡および議論されており、ここから行ごとの提案のみが採用されています。最近では、 このマージ要求 で実装が提案されましたが、誰もフォローアップしていません。

ただし、問題に対処するためにいくつかの拡張機能が登場しました。

  • flake8-per-file-ignores configのエントリを介して、特定のファイルの特定の警告/エラーを無視できます。

  • flake8-PuTTY は同じことをすると主張していますが、しばらく更新されていません。

15
Arminius