テクめも

プログラミング関連のちょっとしたTipsなどを書いています。

Pythonのコーディングチェックにflake8を使う

flake8とは

flake8は以下の3つのライブラリのラッパーです。

インストール

$ pip install flake8

使い方

$ flake8 main.py

ファイルだけでなくフォルダを指定することもできます。

$ flake8 main/

エラーコードについて

  • Fxxx : 論理的なエラーの検知(pyflakes)
  • Exxx / Wxxx : pep8に準拠しないスタイリングの検知(pycodestyle)
  • Cxxx: 循環的複雑度が高いコードの検知(mccabe)

参考: Glossary of Terms Used in Flake8 Documentation — flake8 3.7.9 documentation

特定のエラーを無視する

$ flake8 main.py --ignore  E402

複数の場合はカンマ区切りで指定します。

$ flake8 main.py --ignore  E402, D203

特定のフォルダを除外する

$ flake8 main.py --exclude tests

特定のエラーを特定のファイルのみ除外する

$ flake8 main.py --per-file-ignores test.py:E402

1行あたりの最大文字数を指定する

$ flake8 main.py --max-line-length 100

デフォルトは79で、超えるとE501のエラーが発生します。

main.py:4:80: E501 line too long (90 > 79 characters)

循環的複雑度の最大値を指定する

$ flake8 main.py --max-complexity 10

設定ファイル

グローバルに適用させるなら以下の場所に設定を記載します。

~/.config/flake8

ローカル(プロジェクト単位)のみの場合は、そのプロジェクトフォルダに以下のファイルを用意します。

.flake8

または

setup.cfg

設定ファイルの書き方

オプションで指定するのと同じように書くことができます。

[flake8]
ignore=E402, D203
exclude=tests
max-line-length=100
max-complexity=10

参考: Configuring Flake8 — flake8 3.7.9 documentation

*1:pep8は名前が変わってpycodestyleになりました