完全に自分用メモです。
VS CodeでPython書いてるんですがLinter、つまりコード規約のガイドラインにどの程度沿っているか静的解析をするツールとして標準でPylintが有効になってるんですがそれを使うのではなくflake8を入れるって話です。
なぜ、flake8を入れるかというとflake8は以下のラッパーとのことでPylintと比較して論理的なエラーも検知できるってことなのでこちらを導入してみようと思った次第です。
- PyFlakes
- pycodestyle
- Ned Batchelder’s McCabe script
pycodestyleってのはかつてのpep8ですね。最近パッケージ名が変わったようです。
というわけで早速入れますがやることはflake8をインストールしてVS Codeで有効にする、同時にPylintを無効にするだけです。
pip install flake8
僕はパッケージ管理にPoetryを使っているのでPoetryの場合は以下。
poetry add flake8 -D
ついでに整形のためにFormatterとしてautopep8
もいれてしまいます。
pip install autopep8
僕はパッケージ管理にPoetryを使っているのでPoetryの場合は以下。
poetry add autopep8 -D
次に設定していきます。VS Codeのpreferenceを開いて右上にあるOpen Settings
でVS Codeの設定ファイルであるsettings.json
が開きます。開いたら以下を追記しています。
"python.linting.pylintEnabled": false, "python.linting.flake8Enabled": true, "python.linting.lintOnSave": true, "python.linting.flake8Args": [ "--ignore=W293, W504", "--max-line-length=160", ], "python.formatting.provider": "autopep8", "python.formatting.autopep8Args": [ "--aggressive" ] "files.autoSave": "afterDelay", "files.autoSaveDelay": 10000,
Pylintを無効化してflake8を有効にしています。
またpython.linting.lintOnSave
をtrueにすることで保存時に自動的に解析が走ります。結果はPROBLEMSとかに出てます。また最後のほうに記載しているfiles.autoSave
とfiles.autoSaveDelay
で定期的に自動保存しています。ここでは10秒おきに自動保存して、そのタイミングで解析が走るようになっています。
それ以外だと特定のWarningを無視するようにしていたり(--ignore=W293, W504
)、--max-line-length
で1行の文字数がPEP8で定められている80文字ではなくて倍の160文字にしています(本当はよくないのかもですが)。このあたりの細かいチューニングは各自でお好みでやるといいかと。
また、Formetterによる自動整形ではその積極度を設定できます。--agressive
を2個とかカンマ区切りで続けるとそのレベルが高まります。
とりあえずこんな感じで設定したらWarningが大量に出てくると思うのでざーっと潰してしまいましょう。