Flake8とは?
Flake8とは、Pythonの静的コードチェックツールです。 実装したPythonコードがpycodestyle(PEP8)に則って記述されているかを自動でチェックすることができます。
インストール方法
以下のコマンドを実行し、Flake8をインストールします。
pip install flake8
使い方の例
サンプルコードを利用して、使い方を説明します。
サンプルコード
sample.py
# anti
# NG1: 複数のモジュールを一行でまとめてインポートしている.
# NG2: インポートしたモジュールを使っていない.
import os, sys, glob
# best
# import os
# import sys
# import glob
↑のコードには以下の規則違反があります。
- E401: 複数のモジュールを一行に書いている。
- F401: インポートしたモジュールを使っていない。
従来は、これらの規則違反を目視で確認する必要がありましたが、Flake8を利用することでこれらの規則違反を自動で検出することができます。
実行方法
実行方法は以下のとおりです。
% flake8 sample.py
flake8_sample.py:2:1: F401 'os' imported but unused
flake8_sample.py:2:1: F401 'sys' imported but unused
flake8_sample.py:2:1: F401 'glob' imported but unused
flake8_sample.py:2:10: E401 multiple imports on one line
このように、Flake8を利用することで、コーディング規則違反を自動で検出することができます。
よく使うコマンド
普通に実行する場合
flake8 <チェックしたいファイル名 or ファイルが格納されているディレクトリ>
特定の規則を無視する場合
flake8 main.py --ignore E401
# 複数指定する場合は以下(カンマ区切り, スペース不要)
flake8 main.py --ignore E401,F401
特定のファイルやディレクトリを除外する
flake8 ./main_module --exclude tests
1行あたりの最大文字数を指定する
flake8 main.py --max-line-length 120
設定ファイル
実行時にオプションとして指定していた、除外するルール・除外するファイルやディレクトリ・1行あたりの最大文字数などは、設定ファイルに記述しておくこともできます。
設定ファイル名
マシン全体に反映させる場合
~/.config/flake8
プロジェクト単位で設定する場合
.flake8
#もしくは
setup.cfg
ファイルに記述する内容
Flake8を実行する時に指定するオプションと同様に、以下のように記述します。
[flake8]
ignore=E401
exclude=tests
max-line-length=120
VS Codeの拡張機能
VS Code を利用している方は、ms-python.python という拡張機能を使うことで、Flake8によるコードチェック結果を随時エディタ上に表示することができます。