用途
rust-call-graph 用于在 Rust 项目中可视化函数之间的调用关系。它基于 LSP 的调用层级(call hierarchy)功能,帮助开发者理解代码的调用结构,适用于影响分析、实现理解、执行路径追踪等场景。
主要能力
该技能通过 LSP 的以下操作获取调用信息:
- prepareCallHierarchy:获取目标函数的调用层级条目;
- incomingCalls:获取调用该函数的函数(谁调用了它);
- outgoingCalls:获取该函数调用的函数(它调用了谁)。
在获取信息后,它会递归展开到指定深度,并生成 ASCII 可视化结果。输出形式支持调用者树、被调用者树、双向调用图,并可导出为 Mermaid 格式。此外还会提供分析洞察,包括入口点、叶子函数、热点路径、复杂度以及潜在问题(例如高扇出、被多处调用等)。
使用方式
命令格式为:
/rust-call-graph <function_name> [--depth N] [--direction in|out|both]
选项说明:
- --depth N:遍历层级深度,默认 3;
- --direction:in 表示调用者,out 表示被调用者,both 表示两者。
示例:
- /rust-call-graph process_request:同时显示调用者与被调用者;
- /rust-call-graph handle_error --direction in:仅显示调用者;
- /rust-call-graph main --direction out --depth 5:进行深度被调用者分析。
工作流程为:先通过 LSP(workspaceSymbol) 或 Grep 定位函数位置,再执行 prepareCallHierarchy,随后分别获取 incomingCalls 与 outgoingCalls,递归展开到指定深度,最后生成 ASCII 可视化。
适用场景
常见使用模式包括:
- “谁调用了 X?”:使用 incoming 方向,用于影响分析;
- “X 调用了什么?”:使用 outgoing 方向,用于理解实现;
- “显示调用图”:使用 both 方向,查看完整图景;
- “从 main 追踪到 X”:使用 outgoing 方向,追踪执行路径。
可视化样式可选择树形(默认,适合简单层级)、框图(适合复杂关系)、平铺列表(适合多连接)、Mermaid(用于导出到文档)。
限制
资料中未提供关于平台支持、运行环境要求、性能限制或收费情况的明确说明,这些信息暂未提供。该技能依赖 LSP 提供调用层级数据,因此实际可用性取决于所用语言服务器对相关 LSP 操作的支持情况,资料中未对此作进一步说明。
相关技能
- 查找定义:rust-code-navigator;
- 项目结构:rust-symbol-analyzer;
- Trait 实现:rust-trait-explorer;
- 安全重构:rust-refactor-helper。