VS CodeでPythonのLinterとしてPylintの代わりにflake8を導入するメモ

完全に自分用メモです。

VS CodePython書いてるんですが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 SettingsVS 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.autoSavefiles.autoSaveDelayで定期的に自動保存しています。ここでは10秒おきに自動保存して、そのタイミングで解析が走るようになっています。

それ以外だと特定のWarningを無視するようにしていたり(--ignore=W293, W504)、--max-line-lengthで1行の文字数がPEP8で定められている80文字ではなくて倍の160文字にしています(本当はよくないのかもですが)。このあたりの細かいチューニングは各自でお好みでやるといいかと。

また、Formetterによる自動整形ではその積極度を設定できます。--agressiveを2個とかカンマ区切りで続けるとそのレベルが高まります。

とりあえずこんな感じで設定したらWarningが大量に出てくると思うのでざーっと潰してしまいましょう。

©Keisuke Nishitani, 2020   プライバシーポリシー