VSCodeのcpptools (C/C++用エクステンション)はシンボリックリンク経由のディレクトリでバグる
皆さんGW楽しんでますか?
私は死にそうです。
今回はVScodeでC/C++を書くときに欠かせないこいつ↓の話だゾ。
メジャー言語で、MS公式のエクステンションのくせに微妙に評価が低くて地雷臭がプンプンしていたけど、ついに地雷を踏んだ。
環境
OS : Ubuntu 20.04
コンパイラ: g++ 9.3.0
VScode : version 1.44.2
ms-vscode.cpptools : version 0.28.0-insiders2
症状
ぶっちゃけタイトルのまんま。
インテリセンス君やオートフォーマッタ君がなぜかたまにお仕事してくれない。
なんかいろいろいじってたらどうもシンボリックリンクが悪さしてるっぽいことがわかった。
例として、下のようなディレクトリ構成のケースで検証。
depth0 ├── depth1 │ └── depth2 │ └── test.cpp └── link2depth2 -> depth1/depth2/
test.cppはノンケでも書かないようなミートクソースを適当に。
int main() { a = 1; return 0; }
この状態で、VScodeの「フォルダを開く」で、depth0/depth1/depth2とリンクを経由せずにディレクトリを開いて、test.cppを開く。
んまぁ、そう…
そんでもって、/depth0/link2depth2とリンク経由でdepth2を開いて、test.cppを開くと…
節穴かな?
解決策
公式gitをチラチラ見てみると、どうやらシンボリックリンク関係のバグは既知らしい。
そんでもってissue 3288の最新(2020/5/6時点)のコメントが↓
(要約: 問題は認識してるけど治す予定ないンゴ)
クゥーン…(子犬)
シンボリックリンクを経由しないぐらいしか対策がないんですかね?