Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 

Repository files navigation

Code Relations

Source Insight 式的上游引用图:先把整个工程解析成一份本地索引, 之后每一层展开都在毫秒级返回。不依赖 clangd 或任何语言服务,也不要求工程可编译。

它回答什么

从任意一个符号出发向上追溯:

  • 这个函数被谁调用?
  • 这个全局变量被谁坏了?(读写分开标注,可一键只看写入)
  • 这个宏在哪些地方展开?
  • 改这个结构体会影响谁?

一个符号一个方框,同一符号中的多处引用在框内逐行列出并可分别点击; 点击某一行,编辑器跳过去并选中那一行。

安装

VS Code

扩展面板搜索 Code Relations 直接安装,或在命令行执行:

code --install-extension yuandixiang.code-relations

Cursor / Windsurf / VSCodium

这些编辑器使用 Open VSX 市场,本扩展暂未上架,需手动安装:

  1. 打开扩展市场页面, 点右侧 Download Extension 下载 .vsix 文件
  2. 扩展面板 → 右上角 ...从 VSIX 安装… → 选中该文件

装完按提示重载窗口。升级时重复同样步骤即可,会覆盖旧版,已建好的索引不受影响。

用法

  1. 侧栏打开 Code Relations,点标题栏的生成关系。首次全量扫描,之后只重扫改动过的文件。
  2. 把光标放到某个符号上(或函数体内任意一行),点刷新。视图只显示根框,不自动展开。
  3. 鼠标移到框的右边缘 20 px,出现提示符后点击,向右展开一级引用者。
  4. 点框内某一行跳到该处引用;点标题行跳到符号定义。

视图不跟随光标:跳到源码后根节点、已展开分支、缩放和过滤全部保持不变,直到你再次刷新。

界面约定

  • 图从左向右生长,箭头恒指向被引用符号(画面朝左)。
  • 连线只用水平/垂直线段,直角拐角,无曲线。
  • 展开热区静止时完全不可见,悬停才出现淡底色与提示符。
  • 实线 = 确定引用;虚线 + 行首 ? = 同名候选,无法唯一确定。

画布操作

图区带原生滚动条(右侧与底部),行为与编辑器、终端一致:

操作 效果
滚轮 上下滚动
Shift + 滚轮 左右滚动
拖动滚动条 快速定位
触控板双指 任意方向滚动
Ctrl / Cmd + 滚轮 以指针为中心缩放(40%–250%)
空白处拖动 平移
空白处双击 适应窗口

索引存在哪

默认在工程根的 .code-relations/relations.db

你的工程/
├── .code-relations/
│   ├── .gitignore      内容为 *,自动生成,忽略自身
│   └── relations.db    SQLite 索引库
└── src/ ...

放工程内是为了各工程天然隔离、删工程即删索引、位置一眼可知;目录自带 .gitignore,不需要你往仓库的忽略清单里加东西。Remote SSH / WSL 场景下 它随工程位于远端。

想集中存放(例如统一放到大容量磁盘)就设 codeRelations.index.storagePath, 此时按工作区哈希分子目录。

清理:命令面板执行 Code Relations: 清空关系索引,或直接删掉该目录。

能力边界

基于 tree-sitter 的语法分析,没有类型信息,因此:

  • 成员访问 p->count 无法确定 p 的类型,同名成员只能按候选处理。
  • 通过指针的间接写入(*p = 1memcpy(&x,…)无法完整捕获,所以"谁写了它"是可能漏的。
  • 函数指针与未知宏发起的调用记为不可解析引用点,只在框上计数提示,不产生错误的边。
  • #ifdef 各分支都参与解析,不判断哪一支会被实际编译。
  • 局部变量默认不索引(可配置开启)。

反馈

用起来有问题、结果不对、想要新功能,都欢迎提到 Issues

报告解析结果不对时,请附上能复现的最小代码片段、符号名,以及 Code Relations: 显示诊断日志 输出的相关片段。

许可

本扩展为专有软件,Copyright (c) 2026 yuandixiang,保留所有权利。

免费授权你在自己的设备上安装使用(含商业性的内部开发),但不授权再分发、 修改、反向工程,或以本扩展为基础发布同类产品。完整条款见扩展安装目录下的 LICENSE 文件,在扩展市场页面也可从「License」一栏查看。 需要超出此范围的授权,请联系作者另行洽谈。

所含第三方组件的版权声明见扩展安装目录下的 THIRD-PARTY-NOTICES.txt

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors