你的工程,
有自己的解析方式。
預設從 Hybrid 開始,也可以依工程狀態自由選擇。
推薦
自動選擇,兼顧輕量與精確
同時維護 Tag 索引和可用的 Compiler 服務,依照每個檔案的編譯指令覆蓋情況,自動選擇適當的解析方式。
- 按文件選擇
- 無資料庫時使用 Tag
- 語意能力按配置啟用
Tree-sitter
輕量語法,隨裝隨用
在背景執行緒執行隨外掛程式附帶的 Tree-sitter C/C++ WebAssembly 解析器,近期檔案使用增量語法樹。
- 內建 WASM 解析器
- 語法級索引
- 增量語法樹
clangd
以真實編譯參數理解程式碼
由 clangd 提供語義跳躍、重命名、程式碼操作和即時編譯診斷。瞭解巨集、類型與頭文件,需要完整的專案編譯配置。
- 語意分析
- 精確重命名
- 編譯診斷
開箱即用
沒有配置,也能開始閱讀
在後台執行緒快速建立詞法標籤索引,提供基礎符號瀏覽、跳躍和呼叫關係,適合快速進入項目。
- 詞法標籤
- 基礎導航
- 後台索引
選擇模式前,先看能力邊界。
輕量模式便於開始;完整語意分析需要真實編譯環境。
| 能力 / 條件 | Hybrid | Flyweight | Compiler | Tag |
|---|---|---|---|---|
| 沒有編譯資料庫也能瀏覽 | 支持,回退 Tag | 支援 | 需要資料庫 | 支援 |
| 解析方式 | 依檔案選 Tag / Compiler | Tree-sitter 語法樹 | clangd 語意分析 | 詞法標籤 |
| 符號搜尋、導航、呼叫圖 | 支援 | 語法級 | 語意級 | 詞法級 |
| 精確重命名、程式碼操作 | 有編譯命令的文件 | 不提供 | 依賴 clangd 支持 | 不提供 |
| 編譯診斷 / 類型檢查 | 有編譯命令的文件 | 不提供 | 支援 | 不提供 |
| 額外工具 | 語意功能需要 clangd | 無 | clangd + 編譯資料庫 | 無 |
Tag / Flyweight 不執行預處理或類型檢查,同名符號可能會傳回多個候選。 Flyweight 的速度取決於文件與編輯方式,不保證在所有工程中都快於 Tag。
先瀏覽,再完善配置。
點選 VS Code 底部模式名稱,或執行 Switch Parsing Mode。