Pyrightって何?
PyrightはMicrosoft謹製のPython向け静的解析ツールです。
もともと型チェックが得意な同ツールですが、型チェックの他にもコード内に意図せず未サポートの文法(Python 3.8のセイウチ演算子など)が使われていないかチェックする機能も備えています。
このチェック機能があれば、Python 3.8の新機能盛り沢山のコードを配布したら配布先で動かなかった!(Python 3.4 (2014年) のままだった)、といったトラブルを未然に防ぐことができます。
このようにPyrightは型チェックだけでなくコード側でPythonの対象バージョンを絞ることもでき非常に強力な静的解析ツールと言えるでしょう。
PyrightはVScodeの拡張機能として利用可能です。
余談: 名称の「Pyright」はパイライト鉱石(Pyrite; 黄鉄鉱)とかけているようです。ロゴのデザインも素敵ですね。
やり方
さて本題です。設定の手順は以下の通りです。
- VScodeの拡張機能Pyrightをインストールする。
- 自身のプロジェクトのルートディレクトリに
pyrightconfig.json
(下記参照)を用意する。 - VScodeを再起動する(設定を反映させるため)。
{
"pythonVersion": "3.4"
}
コメント: 上記の設定では、自身のプロジェクトの中でPython 3.4でサポートされていない文法(ex. セイウチ演算子、f記法)がProblemとして検出されます。
サンプル
実際に未サポートの文法(f記法)を使用した場合の結果を見てみます。下記のサンプルコードをご覧ください。
a = 3.14
print(f"a = {a}")
見ての通りPython 3.4では未サポートのf記法が使用されています。
このときVScode上では、下のスクリーンショットのとおり、該当箇所に赤い下線が引かれてProblemとして強調されていることがわかります。またパネル部分にもProblemとして表示されます。
コメント: 赤い下線の箇所にカーソルを乗せることで「 f記法はPython 3.6以上が必要です 」と書かれたツールチップが表示されます。
このチェック機能があれば、「○○○はPython 3.8からだっけな? △△△は〜」と呟きながらその都度リファレンスを確認せずに済みますのでとっても快適です。
Pyright、すごい。
参考リンク
- microsoft/pyright: Static type checker for Python(GitHubのページ)
- pyright/configuration.md at master · microsoft/pyright(pyrightconfig.jsonの書き方について)
- Pyrightで型チェックしたいのにimportで怒られるときの対処法 - Qiita(pyrightconfig.jsonの存在を知るきっかけになった記事です。感謝😆)