はじめに
これまでPythonを使うときはちょっとしたスクリプトを書くシーンが多く、とりあえずJupyterNotebookに打ち込み&実行してコーディング規約違反は後から気づいて直す…ということが多かったのですが…
PythonのWebアプリケーションフレームワークであるDjangoでの開発をVisualStudioCodeで行いたい!ということになり、静的コードチェックとフォーマットツールを導入しました。
設定にあたりいくつか記事を参考にさせていただきましたが、JavaScriptのESLintプラグインのように入力時リアルタイムにチェックが走る設定をする記事が見当たらなかったので、備忘も兼ねて記事にしました。
概要
Pythonのコードチェックにはいくつか種類があり、現在VSCodeで設定できるものだけでも以下の通りたくさんあります。
- bandit
- flake8
- mypy
- prospector
- pycodestyle
- pydocstyle
- pylama
- pylint (default)
それぞれの特徴などはこの記事には記しませんが、今回インストールしたflake8にはVSCode用にcornflakes-linterというプラグインがあり、導入することで入力に合わせてリアルタイムにコードチェックを走らせることができます!
環境
- Windows 10 Enterprise
- Python 3.9.1
- Visual Studio Code 1.52.1 (Pythonプラグインインストール済)
導入手順
flake8をインストールする
コマンドプロンプト等のコンソールから下記コマンドを実行
pip install flake8
cornflakes-linterプラグインをインストールする
VSCodeのMarketplaceからcornflakes-linterをインストール
VScodeでcornflakes-linterを設定する
cornflake等のキーワードで検索するとCornflakes>Linterの項目が出てくるので、下図のように設定
VSCodeでデフォルトのLinting設定を変更する【重要】
※ここを正しく設定しないとcornflakes-linterではなくデフォルトのflake8が動作してしまうのでご注意ください(実際躓きました…)
前のステップと同様にVSCodeの設定画面を開き、Python>Lintingの項目を下図のように設定
以上です!いたってシンプルな手順で設定ができました。
この状態で.pyファイルを編集すると、コードチェックが動作するようになっているはずです。
おわりに
フォーマットツールは別途blackをインストールし、保存時に自動整形されるように設定しています。(2つ目の参考リンク)
どのみち自動整形のために保存はするし、こまめな保存癖もあるのですが、リアルタイムチェックだと誤った入力(変数名のタイポなど…)をしたときにすぐ気づけたり、書きながら「あ、こういう書き方駄目なのか」とすぐフィードバックが得られたりとメリットも多いので、使い分けかなと思います。
PythonでWeb開発をされている方にはぜひ一度お試しいただきたいです…!
##参考リンク
https://qiita.com/psychoroid/items/2c2acc06c900d2c0c8cb
https://blog.daisukekonishi.com/post/python-black/