Pythonでのコードフォーマッターがうまく使えません。
Prettierを機能拡張に入れればいいのかと思ってましたが、そうでもないようです。
ライブラリ
Flaskの本を見ていると4つを使っていたので、まずこの4つを使ってみたいと思います。
flake8, black, isort, mypy
[black]はよくVSCodeでアラートが出るので知っていました。
今までずっと無視してしまってました。。
flake8
PEP8に沿った書き方のコードかどうかを自動チェックしてくれるそうです。
PEP8とはコーディングのルールだと思います。
https://pep8-ja.readthedocs.io/ja/latest/
black
PEP8に沿った書き方にコードを自動整形してくれるようです。
私が今まで自動整形がうまくできていなかったのはblackを無視していたからのようです。
isort
import文をPEP8に沿った書き方に自動で並び替えてくれるようです。
これは助かります。import部分はいつもぐちゃぐちゃになってしまいます。
mypy
タイプヒントの型チェック、と本には書いてあります。
これだけではよくわからないので、おいおい理解していきます。
インストール
インストールは以下となります。
pip install flake8 black isort mypy
通常どおりでした。
設定
インストールしたら使えると思っていたのですが、VSCodeでの設定も必要です。
flake8
▼有効(チェック)にするもの
▼無効にするもの
- Pylint : [Python > Linting: Pylint Enabled]
あと、この本では最大文字数を88文字に設定しているので、私もそれに合わせます。 flake8とblackは最大文字数が違う(79と88文字)ので88文字に設定します。
[Python : Linting: Flake8 Args]に[--max-line-length=88]と入力
black
▼フォーマッターをblackに変更する。
[Python > Formatting: Provider]を[black]に変更。
▼保存時の自動フォーマットを有効にする。
[Editor: Format On Save]にチェックを入れる。
isort
保存時にisortが自動で実行されるように設定する。
[Editor: Code Actions On Save]で[settings.jsonで編集]をクリック。
[editor.codeActionsOnSave]を以下のようにする。
"editor.codeActionsOnSave": { "source.organizeImports": true }
記入しようとしたら[source.organizeImports]が補完されます。
mypy
[Python > Linting: Mypy Enabled]にチェックを入れる