普段はEmacsを使っていて,VSCodeは常用していませんがEmacsで利用しているmypy
の拡張が使えないか調べてみました。
手持ちの環境が
- Ubuntu 20.04.3 LTS
- Visual Studio Code 1.81.1
- Python v2023.14.0(機能拡張。識別子:ms-python.python)
- Pylance v2023.8.40(機能拡張。識別子:ms-python.vscode-pylance)
のubuntu版なので,あまり参考にならないかもしれません。
次の2通りが考えられます。
1. Python: Select Linterからmypyを使う方法
手順は次の通りです。
- mypy(VSCodeではなくPythonの拡張モジュール)のインストール→
pip install mypy
でmypy
モジュールをインストールします。
- mypyが既にインストール済みの時はバージョンを確認し,1未満の時は
pip install -U mypy
でアップデートします。
この操作は,古いバージョンのmypy
ではタイプ未指定の検出に対応していない可能性を考慮してのことです。
- コマンドパレットから
Python: Select Linter
を入力し,mypy
を選択します。
- ソースリストのどこかに
# mypy: disallow-untyped-defs
の行を入力します。
次の例はソースファイルの最終行あたりに記入した例です。
python
1# 期待する正しい例。
2def sum1(a: int, b: int) -> int:
3 return a + b
4
5# 誤った例。関数の引数の型を指定していない。
6def sum2(a, b) -> int:
7 return a + b
8
9# 誤った例。関数戻り値の型として「int」を指定していない。
10def sum3(a: int, b: int):
11 return a + b
12
13# mypy: disallow-untyped-defs
なお,自分が使っている環境ではPython: Select Linter
が将来的に廃止となるため非推奨と表示が出ています。
一応settings.json
の内容です。
json
1{
2 "python.linting.mypyEnabled": true,
3 "python.linting.enabled": true
4}
2. Mypy Type Checker(拡張機能。識別子 ms-python.mypy-type-checker)を使う方法
「Mypy Type Checker」はMicrosoftが開発しているmypy
拡張機能で今後はこれが推奨とのことです。
Mypy Type Checker
の拡張機能をインストールします。なお,最終的には別バージョンをインストールします。
Mypy Type Checker
のプレリリースバージョンをインストールします。
日本語化している環境では「プレリリースバージョンへの切り替え」を選択します。
この理由はMypy Type Checker
に含まれるmypy
のバージョンをより新しいものを選択したいためです。
- 拡張機能の再読み込みをします。
- 前項のように
# mypy: disallow-untyped-defs
の行を入力します。
- もしくは次のように設定します。
- 時々うまく指摘しないことがあるのでコマンドパレットから
Mypy: Restart Server
を実行します。
5.
の設定のsettings.json
は次の通りです。
json
1{
2 他の設定...,
3 "mypy-type-checker.args": [
4 "--disallow-untyped-defs"
5 ],
6}
5.
の設定画面は次の通りです。

と以上のような感じです。
VSCodeのバージョンが古そうなので,「1.」の方がいいでしょうか?私にはよく分かりません。
なお結果画面は次のような感じです。(2.の設定での実行例)

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/08/26 09:00 編集