概要
Djangoでサーバサイドを開発していますが、他の開発者たちと一緒に開発することになりました。色んな開発者たちと一緒に開発してるので、コードのスタイルを統一して、潜在的なバグも減らすため、静的コード分析ツールであるflake8
を導入することになりました。
このブログポストではDjangoプロジェクトにflake8
を設定して使う方法について説明します。
- flake8: https://flake8.pycqa.org/
flake8のインストール
Djangoでflake8を使うためにはまず、flake8をインストールする必要があります。次のコマンドを実行してflake8をインストールします。
pip install flake8
インストールを完了したら、忘れないようにrequirements.txt
にも保存しておきます。
pip freeze > requirements.txt
これでflake8をインストールする方法について見てみました。
flake8の使う方法
次のコマンドを実行してflake8することができます。
flake8
Djangoプロジェクトフォルダでflake8を実行したら下記のような内容が確認できます。
./venv/lib/python3.8/site-packages/pyflakes/checker.py:153:31: F821 undefined name 'PercentFormat'
./venv/lib/python3.8/site-packages/pyflakes/checker.py:160:9: F821 undefined name 'Generator'
./venv/lib/python3.8/site-packages/pyflakes/checker.py:160:9: F821 undefined name 'PercentFormat'
./venv/lib/python3.8/site-packages/pyflakes/checker.py:180:47: F821 undefined name 'Optional'
./venv/lib/python3.8/site-packages/pyflakes/checker.py:759:35: F821 undefined name 'List'
./venv/lib/python3.8/site-packages/pyflakes/checker.py:760:35: F821 undefined name 'Dict'
flake8の結果を見ると、checker.py:153:31: F821 undefined name 'PercentFormat'
ようにファイル名:エラーの位置 エラーID エラ内容
が確認できます。
flake8の設定
私はDjangoプロジェクトフォルダにvirtualenv
を生成して使っています。それで、flake8が不要にvirtualenv
のフォルダまで分析をしてます。私はflake8がvirtualenvのフォルダを分析しないように設定する必要がありました。
falke8はvirtualenvフォルダを無視するように設定するため、.flake8
ファイルをDjangoプロジェクトのフォルダに生成して次のように修正しました。
[flake8]
exclude =
.git,
.gitignore,
*.pot,
*.py[co],
__pycache__,
venv,
.env
このように設定して、設定がうまく反映されたか確認するため、下記のコマンドを使ってflaske8を実行してみました。
flake8
そしたら以前とは違って下記のような結果が出ました。
./petmeeting/settings.py:98:80: E501 line too long (91 > 79 characters)
./petmeeting/settings.py:101:80: E501 line too long (81 > 79 characters)
./petmeeting/settings.py:104:80: E501 line too long (82 > 79 characters)
./petmeeting/settings.py:107:80: E501 line too long (83 > 79 characters)
./petmeeting/settings.py:132:33: W292 no newline at end of file
flake8はたくさんのことをチェックしてますが、一般的には考えなくてもいい部分までもエラーで表示する場合があります。私は次のように無視してもいい内容を追加して設定しました。
[flake8]
exclude =
.git,
.gitignore,
*.pot,
*.py[co],
__pycache__,
venv,
.env
ignore =
E121,
E126,
E127,
E128,
E203,
E225,
E226,
E231,
E241,
E251,
E261,
E265,
E302,
E303,
E305,
E402,
E501,
E741,
W291,
W292,
W293,
W391,
W503,
W504,
F403,
B007,
B950,
max-line-length = 200
この内容はSiderと言う会社のおすすめルールを適用した内容です。
このルールはかってに決めたことではなく、この会社が研究をしてその結果を元にしておすすめしてるようです。詳しい内容は下記のリンクを参考して下さい。
完了
これでDjangoプロジェクトでflake8を使う方法について説明しました。また、要らないルールやフォルダを無視するための設定方法もみてみました。今度は他の開発者たちと一緒に開発しながらこのように設定したflake8が役に立てることを期待してみます。
私のブログが役に立ちましたか?下にコメントを残してください。それは私にとって大きな大きな力になります!
アプリ広報
Deku
が開発したアプリを使ってみてください。Deku
が開発したアプリはFlutterで開発されています。興味がある方はアプリをダウンロードしてアプリを使ってくれると本当に助かります。