LoginSignup
2
2

More than 3 years have passed since last update.

ファイル単位でflake8の警告を制御する

Last updated at Posted at 2019-08-26

概要

flake8 3.7.0以降では per-file-ignore を指定するとファイル単位で無視する警告を制御できるようになった。例えばCIでプロジェクト内の全ファイルをflake8にかけていて、一部ファイルで特定の警告を抑止したい場合に使える。

基本

Configuration Locations にあるように、設定はファイル .flake8 に書ける。

per-file-ignores には、ファイル名のパターンと無視する警告のパターンをコロンで区切って記述する。例えば

$ echo 'import os# fixme' > foo.py
$ echo 'import os# fixme' > boo.py
$ cat .flake8
[flake8]
select=E,W,F
per-file-ignores=
    ./foo.py:F401

この場合、./foo.pyでF401が抑止されるので

$ flake8
./boo.py:1:1: F401 'os' imported but unused
./boo.py:1:10: E261 at least two spaces before inline comment
./foo.py:1:10: E261 at least two spaces before inline comment

となり以下の警告が出力されなくなっている:

./foo.py:1:1: F401 'os' imported but unused

複数ファイルの警告抑止

複数のファイルパターンで抑止したい場合、いくつかの記法が使える

複数行

設定を複数行書ける

$ cat .flake8
[flake8]
select=E,W,F
per-file-ignores=
    ./foo.py:F401
    ./boo.py:F401
$ flake8
./boo.py:1:10: E261 at least two spaces before inline comment
./foo.py:1:10: E261 at least two spaces before inline comment

カンマ区切り

ファイルパターンをカンマ区切りで並べられる

$ cat .flake8
[flake8]
select=E,W,F
per-file-ignores=
    ./foo.py,./boo.py:F401
$ flake8
./boo.py:1:10: E261 at least two spaces before inline comment
./foo.py:1:10: E261 at least two spaces before inline comment

ワイルドカード

?* で任意の文字にマッチさせることができる。 ? は任意の一文字にマッチする。

$ cat .flake8
[flake8]
select=E,W,F
per-file-ignores=
    ./?oo.py:F401
$ flake8
./boo.py:1:10: E261 at least two spaces before inline comment
./foo.py:1:10: E261 at least two spaces before inline comment

* は任意階層のディレクトリにもマッチするので、特定のディレクトリ以下の全てのファイルを対象としたい場合にも使える。

複数種類の警告抑止

コロンの右側の警告のパターンについては、selectやignoreと同様に警告のプレフィックスをカンマ区切りで指定できる。

$ cat .flake8
[flake8]
select=E,W,F
per-file-ignores=
    ./foo.py:E2,F
    ./boo.py:F
$ flake8
./boo.py:1:10: E261 at least two spaces before inline comment

この場合、./foo.py では E2* と F* が、./boo.py では F* が抑止される。

確認に使ったバージョン

$ flake8 --version
3.7.8 (mccabe: 0.6.1, pycodestyle: 2.5.0, pyflakes: 2.1.1) CPython 3.7.2 on Darwin
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2