你的工程,
有自己的解析方式。
默认从 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。