コードチェッカー
flake8
コードがPEP8に従っているかどうかをチェックしてくれる。
PEP8に従っていない箇所を指摘してくれるだけで、フォーマットはしない。
コマンドラインからの使い方
・インストール方法
$ pip install flake8
・実行方法(ファイル単位)
$ flake8 target_file.py
・実行方法(ディレクトリ配下全て)
$ flake8 target_dir
・実行例(規約違反が存在する場合)
$ flake8 views.py views.py:1:1: F401 'django.http.HttpResponse' imported but unused views.py:46:80: E501 line too long (83 > 79 characters) views.py:54:80: E501 line too long (82 > 79 characters)
・実行例(パスした場合)
$ flake8 views.py $
フォーマッター
black
Pythonのフォーマッターで検索するとこれが一番よく見かける。
他のフォーマッターよりも規約が厳しいらしい。
コマンドラインからの使い方
・インストール方法
$ pip install black
・実行方法(ファイル単位)
$ black target_file.py
・実行方法(ディレクトリ配下全て)
$ black target_dir
・実行例(フォーマットが行われた場合)
$ black views.py reformatted views.py All done! ✨ 🍰 ✨ 1 file reformatted. $
・実行例(フォーマットが必要な箇所が存在しなかった場合)
$ black views.py All done! ✨ 🍰 ✨ 1 file left unchanged. $
・フォーマット内容
例えば以下のようにフォーマットされる。(右がフォーマット後)
[変更点]
・関数宣言の上の改行が1行から2行に変更されている。
・1行が長い場合に複数行に分割されている。
・インデントの半角スペース8個が半角スペース4個に変更されている。
・文字列のクォーテーションがシングルからダブルに変更されている。
yapf
コマンドラインからの使い方
・インストール方法
$ pip install yapf
・実行方法(ファイル単位)
$ yapf -i -vv target_file.py
・-iをつけない場合、フォーマット結果をコンソールに出力するだけでファイルは変更しない。
・--vvをつけないと処理状況が一切コンソールに出力されない。
・実行方法(ディレクトリ配下全て)
$ yapf -i -r --vv target_dir
・実行例(フォーマットが行われた場合も行われなかった場合も同じ出力)
$ yapf -i -vv views.py Reformatting views.py $
・フォーマット内容
例えば以下のようにフォーマットされる。(右がフォーマット後)
[変更点]
・関数宣言の上の改行が1行から2行に変更されている。
・1行が長い場合に複数行に分割されている。
・インデントの半角スペース8個が半角スペース4個に変更されている。
autopep8
これも検索するとよく見かける。
コマンドラインからの使い方
・インストール方法
$ pip install autopep8
・実行方法(ファイル単位)
$ autopep8 -i -a -a -v target_file.py
・iをつけない場合、フォーマット結果をコンソールに出力するだけでファイルは変更しない。
・-aを2個つけているのは変更のアグレッシブレベル2という意味。アグレッシブレベルの仕様は調べていないが、公式ドキュメントの実行例では2個つけていたので、従っている。
・-vをつけないと処理状況が一切コンソールに出力されない。
・実行方法(ディレクトリ配下全て)
$ autopep8 -i -a -a -r -v target_dir
・実行例(フォーマットが行われた場合)
$ autopep8 -i -a -a -v views.py [file:views.py] ---> Applying global fix for E265 ---> Applying global fix for E231 ---> Applying global fix for E721 ---> Applying global fix for W601 ---> Applying global fix for W603 ---> Applying global fix for W604 ---> Applying global fix for W690 ---> 5 issue(s) to fix {'E302': {10, 27, 6, 14}, 'E501': {7}} ---> 1 issue(s) to fix {'E122': {9}} ---> 0 issue(s) to fix {} $
・実行例(フォーマットが必要な箇所が存在しなかった場合)
$ autopep8 -i -a -a -v views.py [file:views.py] ---> Applying global fix for E265 ---> Applying global fix for E231 ---> Applying global fix for E721 ---> Applying global fix for W601 ---> Applying global fix for W603 ---> Applying global fix for W604 ---> Applying global fix for W690 ---> 0 issue(s) to fix {} $
・フォーマット内容
例えば以下のようにフォーマットされる。(右がフォーマット後)
[変更点]
・関数宣言の上の改行が1行から2行に変更されている。
・1行が長い場合に複数行に分割されている。
・インデントの半角スペース8個が半角スペース4個に変更されている。