トリッカーに乗る豆腐メンタルの日記

トリッカー乗って遊んでる人の日記

VSCodeのcpptools (C/C++用エクステンション)はシンボリックリンク経由のディレクトリでバグる

皆さんGW楽しんでますか?
私は死にそうです。

今回はVScodeC/C++を書くときに欠かせないこいつ↓の話だゾ。 f:id:misotofu:20200506003844p:plain:w500

メジャー言語で、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を開く。
f:id:misotofu:20200506012058p:plain

んまぁ、そう…

そんでもって、/depth0/link2depth2とリンク経由でdepth2を開いて、test.cppを開くと…
f:id:misotofu:20200506012305p:plain
節穴かな?

解決策

f:id:misotofu:20200506013443j:plain



公式gitをチラチラ見てみると、どうやらシンボリックリンク関係のバグは既知らしい。

github.com github.com

そんでもってissue 3288の最新(2020/5/6時点)のコメントが↓
f:id:misotofu:20200506014126p:plain
(要約: 問題は認識してるけど治す予定ないンゴ)


クゥーン…(子犬)
シンボリックリンクを経由しないぐらいしか対策がないんですかね?