🐌

VSCodeでシンボル検索が重い場合の対処

2024/10/09に公開

ここ2,3ヶ月、VSCodeでのシンボル検索がやたら重くなり検索出来ない状態になっていました。

バージョンアップのバグでもなさそうですし、他のプロジェクトでは動くためpython.analysis関連の設定を疑って確認したところ・・・

おや?

pyrightconfig.json または pyproject.toml が使用されている場合は、 'python.analysis.exclude' を設定できません。

Answer

結果的には以下の設定をpyproject.tomlに追記することで負荷が軽くなり、シンボル検索がまともに動くようになりました。

pyproject.toml
[tool.pyright]
exclude = [
    ".direnv/**",
    ".venv/**",
]

Cause

settings.jsonでのエラーの通り、pyproject.tomlやpyrightconfig.jsonが存在している場合にはVSCode側の設定が無視されるようになっているため、解析対象のファイル数が膨大になり動作が重くなっていたようです。
実際VSCodeのOutputタブでpython language serverのログを確認すると設定前後で解析対象のファイル数がかなり異なります。
(他にもなんかメモリが逼迫しているようなログも・・・)

設定変更前 (59219 files)

設定変更後 (4702 files)

プロジェクトのpyproject.toml自体は前から設定してありましたし、ドキュメントの履歴を見る限りだと割と最近入った変更なんですかね・・・

https://github.com/microsoft/pylance-release/wiki/Settings.json-overridden-by-Pyrightconfig.json-or-Pyproject.toml/67b8bc5742344988f06bbc1dab1a48e7f477e500

Discussion