项目概览面板

项目概览是 wescode 独有的全景视图,帮助你快速了解项目结构、代码健康度和函数调用关系。它将 CKG 代码知识图谱的分析结果可视化呈现。


打开项目概览

方式操作
活动栏点击左侧活动栏的「项目概览」图标(Graph 图标)
命令面板Ctrl+Shift+P → 输入「Project Overview」

三区域布局

项目概览面板由三个主要区域组成:

┌──────────────────────────────────────────────┐
│              项目概览面板                       │
├──────────────────┬───────────────────────────┤
│                  │                           │
│   代码健康度      │     调用图(D3 交互式)     │
│   统计信息        │                           │
│                  │      ○──→○──→○            │
│   📊 函数总数     │      ↑      ↓            │
│   🔴 孤儿函数     │      ○←──○←──○            │
│   📈 调用深度     │                           │
│   ⚠️ 复杂度      │                           │
│                  │                           │
├──────────────────┴───────────────────────────┤
│                                              │
│   快速导航 / 符号列表                          │
│                                              │
└──────────────────────────────────────────────┘

区域一:代码健康度统计

左侧面板展示项目的整体健康指标:

指标说明
函数总数项目中所有函数/方法的数量
孤儿函数没有任何调用者的函数数量
最大调用深度最长调用链的层级数
平均复杂度函数的平均圈复杂度
文件数量源代码文件总数
语言分布各编程语言的文件数和行数占比

这些数据在 CKG 索引完成后自动计算,并随代码变更实时更新。

区域二:调用图(D3 交互式)

中央区域是调用图的交互式可视化,使用 D3.js 渲染:

交互操作:

操作效果
鼠标悬停节点高亮直接关联的调用/被调用函数
单击节点选中函数,显示详细信息
双击节点在编辑器中跳转到该函数定义
滚轮缩放调用图
拖拽空白区域平移视图
拖拽节点移动节点位置(力导向布局会重新平衡)
右键节点上下文菜单(影响分析、查找调用者等)

节点大小:反映该函数的调用次数(被调用越多,节点越大)

边的样式:

区域三:快速导航

底部面板提供快速导航能力:


索引进度

状态栏指示

当 CKG 正在索引时,状态栏会显示索引进度:

📊 索引中... 45%  |  已处理 234/520 文件

索引完成后变为:

✅ AI 就绪  |  wescode-project

索引阶段

索引过程分为多个阶段,你可以在项目概览面板的索引状态区域看到当前阶段:

  1. 扫描 — 发现项目文件
  2. 解析 — tree-sitter 语法分析
  3. 提取 — 符号和调用关系提取
  4. 链接 — 跨文件边解析
  5. 构建 — 全文索引和统计

索引期间所有其他功能正常可用,只是 CKG 相关功能(调用图、影响分析等)的结果可能不完整。


调用图交互

过滤与搜索

调用图支持多种过滤方式,帮助你聚焦关注的代码区域:

按包过滤:

只显示 internal/auth 和 internal/handler 包的函数

按调用深度过滤:

只显示调用深度 ≥ 3 的函数

按文件过滤:

只显示当前打开文件中的函数

布局模式

调用图支持多种布局模式:

布局适用场景
力导向默认,适合探索性浏览
层次布局适合查看调用层级关系
径向布局适合以某个核心函数为中心查看
树状布局适合查看单向调用链

导出

你可以将调用图导出为:


代码健康度指标

孤儿函数分析

点击「孤儿函数」数字可以展开详细列表:

🔴 孤儿函数 (12)
├── internal/legacy/utils.go
│   ├── formatLegacyDate()     最后修改: 6 个月前
│   └── parseLegacyConfig()    最后修改: 1 年前
├── internal/cache/evict.go
│   └── evictByTimestamp()     最后修改: 3 个月前
└── ...

每个孤儿函数会标注最后修改时间,帮助你判断是否可以安全删除。

复杂度热力图

项目概览可以生成函数复杂度热力图:

包依赖分析

项目概览还展示包级别的依赖关系图:


快速导航

从调用图到代码

在调用图中双击任意函数节点,编辑器会自动:

  1. 打开该函数所在的文件
  2. 滚动到函数定义处
  3. 高亮函数签名

从代码到调用图

在编辑器中右键点击函数名:

  1. 选择「在调用图中显示」
  2. 项目概览面板会自动打开
  3. 调用图会定位到该函数并高亮其关联关系

键盘导航

快捷键效果
Ctrl+G → Ctrl+G跳转到指定函数
Alt+Left调用图中后退
Alt+Right调用图中前进
Home回到调用图中心
+ / -缩放调用图

注意事项

  1. 大型项目:超过 10 万行代码的项目,调用图建议使用过滤功能聚焦特定模块
  2. 索引数据:调用图数据基于 CKG 索引,确保索引已完成后再使用
  3. 增量更新:代码修改后调用图会自动更新,但复杂的重构可能需要几秒钟
  4. 多语言项目:CKG 支持在同一调用图中展示跨语言的调用关系

相关文档