VSCODEの機能強化 ~Python LinterをPylintからFlake8に切り替える~ 【Shopify運用支援】
画像ファイルの表示サイズを一括リサイズするプログラミングを始める前に、今回は、Microsoft Visual Studio Code(以下、VSCODE)の機能強化をしてみたいと思います。
以前、VSCODEをインストールした際にPythonの拡張機能を設定しましたが、その拡張機能にはPylintというPythonのコードをチェックしてくれる機能(linterといいます)がデフォルトに指定されています。このPylintをFlake8というlinterに切り替えて使えるようにします。PylintとFlake8の違いは、検索サイトで「pylint flake8 比較」などと検索すると情報が得られると思いますが、ザックリいうと、Flake8の方が軽量で、VSCODEで中小規模のコードを書くのに向いているといったところでしょうか。また、VSCODEはlinterを切り替えてチェックするということもできますので、まず、Flake8を使いながらコードを書き、一段落したらPylintに切り替えて再チェックするといった使い方もできます。
Flake8をインストール
pip show flake8 と pip install flake8
まずはコマンドプロンプトを開き、pip show flake8 で Flake8がインストールされているかどうかを確認しましょう。インストールされていなければ pip install flake8でインストールします。インストールの結果、「Successfully instaled」が表示されればOKです。
筆者のPCはクリーンな状態でないためインストール中に表示されるメッセージは上図のようになっていますが、初回インストールやアップデートの場合は関連パッケージのダウンロードやインストールの状況を確認することができます。
VSCODEの設定変更
Ctrl+,(カンマ)で設定タブを開く
Flake8のインストールが完了したらコマンドプロンプトは閉じて構いません。次にVSCODEを起動して Ctrl+,(カンマ)で設定タブを開きます。この設定タブの上段に「設定の検索」という入力ボックスがありますので、ここに「pythonlintingenabled」と入力します。すると検索結果として「Python > Linting:~~ Enabled」(~~部分はさまざまな名称になります)が一覧表示されますので、その中の「Python > Linting: Flake8 Enabled」の下にある「Whether to lint Python files using flake8」をチェックし、「Python > Linting: Pylint Enabled」の下にある「Whether to lint Python files using pylint」のチェックを外します。そして設定タブを閉じてください。もし、「拡張機能 flake8がインストールされていません。」というポップアップが表示された場合は「install」ボタンをクリックしてください。(このポップアップがどういう状況で現れるのかは未調査です。機会があったら調べてみます。)
Flake8がどのように機能するのかを確認してみる
では、Flake8がどのように機能するのか試してみましょう。Ctrl+Nで新しいファイルを開き、Ctrl+Sで適当なファイル名(ファイルの拡張子は .pyにします)を付けて保存してlinterが働くようにしてコードを書いてみます。
適当に、下図のようなコードを書いてみると、2行目の「sys」の下に赤い波線、3行目の先頭に黄色い波線が表示されました。右端のすくろーろばーにも赤と黄のマークがついて問題のある行を示しています。また、このタブのファイル名が赤くなって「2」という数字がついていますが、これはこのファイルに2つの問題があることを示しています。
波線部分にマウスオーバーするとポップアップでどういう問題があるのかを示してくれます。
「sys」の方は、1行の文字数が87文字あり、79文字を超えているといっています。PEP8というPythonのコーディング指針では1行あたりの文字数は最大79文字にすることが推奨されているため、そのルールが守られていないことを示しています。
3行目の先頭の波線のほうは下図のようなポップアップが表示されました。ファイルの最後に余計な空行があると指摘しています。
また、Alt+F8を押すとポップアップ表示ではなくインラインで警告を表示されることができます。Alt+F8を押すたびに次の警告へ移るので、波線が見つけにくいときなどはAlt+F8が便利です。
linterを適宜切り替えるには
Python: Select Linter
次にlinterを切り替えてみましょう。Ctrl+Shift+Pを押しVSCODEのコマンドパレットを開き、「>」と表示されている入力ボックスで「>」に続けて「python select linter」と入力すると「Python: Select Linter」がサジェストされます。
そこで「Python: Select Linter」を選択すると有力ボックスに「current:flake8」と表示され現在のlinterがflake8であることが示されます。また下には「Disable Linting」(linterを無効にする)や選択可能なinterが一覧表示されます。
このlinterの一覧で「pylint」を選ぶとlinterをFlake8からPylintに切り替えることができます。(もしかすると、このときPylintがインストールされていないというポップアップが表示されるかもしれません。その場合は「install」を実行してください。)
Pylint先ほど書いたコードを見てみるとFlake8で出ていた警告が無くなりました。Pylintのほうがデフォルト(オプション無し)ではコーディングスタイルのチェックが緩いのかもしれません。
元々 Pythonは可読性の高いプログラミング言語ですが、コードをきれいに書くということはバグを減らすことにも繋がりますし、半年後、一年後にコードを見返すようなことがあったとき、汚いコードよりきれいなコードのほうが短時間で思い出したり、理解することができますので、ぜひ、linterに怒られないようなきれいなコードが書けるように心がけてください。
今回は以上です。それではまた!