其他
需要分析 Rust 函数调用关系时:用 LSP…
适用于在 Rust 项目中查询某个函数谁调用了它、它调用了谁,或展示双向调用图、影响分析和执行路径。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 57/100 ×0.15
适用场景
需要分析 Rust 函数调用关系时:用 特定
解决思路
- 使用命令 `/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(operation: workspaceSymbol)` 或 Grep 搜索函数名,找到文件和行列位置。
- 准备调用层级:执行 `LSP(operation: "prepareCallHierarchy", filePath: "src/handler.rs", line: 45, character: 8)`,实际替换为目标函数位置,获取调用层级项。
- 查询入向调用(谁调用它):执行 `LSP(operation: "incomingCalls", filePath: "src/handler.rs", line: 45, character: 8)`。
- 查询出向调用(它调用谁):执行 `LSP(operation: "outgoingCalls", filePath: "src/handler.rs", line: 45, character: 8)`。
- 按 `--depth N` 递归展开调用关系,默认遍历 3 层。
- 生成 ASCII 可视化:入向调用生成调用者树,例如 `main` → `run_server` → `handle_connection` → `process_request`,并在目标函数处标记 `YOU ARE HERE`。
- 出向调用生成被调用者树,例如 `process_request` → `parse_headers` → `validate_header`,以及 `process_request` → `authenticate` → `check_token`/`load_user`,`process_request` → `send_response` → `serialize_body`。
- 双向调用生成盒图,把调用者路径与被调用者路径合并展示。
- 生成调用图后输出分析洞察:入口点(Entry Points)、叶子函数(Leaf Functions)、热路径(Hot Path)、复杂度(函数数量与深度)、潜在问题(Potential Issues,例如 `authenticate` 高扇出、`process_request` 被多处调用是否合理)。
- 按用户表述选择方向:`Who calls X?` 用 `incoming` 做影响分析;`What does X call?` 用 `outgoing` 理解实现;`Show call graph` 用 `both` 看全貌;`Trace from main to X` 用 `outgoing` 追执行路径。
- 按复杂度选择可视化样式:树(默认)适合简单层级;盒图适合复杂关系;扁平列表适合大量连接;Mermaid 适合导出到文档。
- 需要文档导出时生成 Mermaid:使用 `graph TD`,如 `main --> run_server`、`run_server --> handle_connection`、`handle_connection --> process_request`、`process_request --> parse_headers`、`process_request --> authenticate`、`process_request --> send_response`。
- 相关技能按需使用:查找定义用 `rust-code-navigator`;项目结构用 `rust-symbol-analyzer`;trait 实现用 `rust-trait-explorer`;安全重构用 `rust-refactor-helper`。
适用边界 · 注意事项
- 目标不是 Rust 函数,或当前环境没有可用的 LSP/Rust 语言服务器时,无法执行调用层级查询。
- 只想查找定义、查看项目结构、查看 trait 实现或做安全重构时,应使用对应相关技能,而不是调用图。
- 调用关系涉及动态分发、宏或生成代码时,LSP 结果可能不完整,需要人工核实。