Rust Call Graph

作者 actionbook5c40d3ad7851无许可证1.5K 个星标收录于 2026年10月8日更新于 2026年10月8日仓库6周前更新

Visualize Rust function call graphs using LSP. Triggers on: /call-graph, call hierarchy, who calls, what calls, 调用图, 调用关系, 谁调用了, 调用了谁

AI 生成的概览

使用 LSP 调用层级可视化 Rust 函数调用图,展示调用者、被调用者及分析洞察。

功能
该技能通过 LSP 调用层级操作梳理 Rust 函数的调用关系。它先为目标函数准备调用层级,再获取传入调用(调用者)和传出调用(被调用者),并按可配置深度递归展开。它会生成 ASCII 树状或方框图示、可选的 Mermaid 导出,以及入口点、叶子函数、热点路径和潜在问题等分析说明。
适用场景
当你需要了解谁调用了某个 Rust 函数,或某个函数调用了什么时使用,适用于影响分析、理解实现或追踪执行路径。适合回答“谁调用了 X?”“X 调用了什么?”或“显示调用图”等问题。
运行要求
需要支持 Rust 调用层级的 LSP 环境,以及 Read 和 Glob 工具。不附带脚本,仅为指令。

Rust Call Graph

Visualize function call relationships using LSP call hierarchy.

Usage

/rust-call-graph <function_name> [--depth N] [--direction in|out|both]

Options:

  • --depth N: How many levels to traverse (default: 3)
  • --direction: in (callers), out (callees), both

Examples:

  • /rust-call-graph process_request - Show both callers and callees
  • /rust-call-graph handle_error --direction in - Show only callers
  • /rust-call-graph main --direction out --depth 5 - Deep callee analysis

LSP Operations

1. Prepare Call Hierarchy

Get the call hierarchy item for a function.

LSP(  operation: "prepareCallHierarchy",  filePath: "src/handler.rs",  line: 45,  character: 8)

2. Incoming Calls (Who calls this?)

LSP(  operation: "incomingCalls",  filePath: "src/handler.rs",  line: 45,  character: 8)

3. Outgoing Calls (What does this call?)

LSP(  operation: "outgoingCalls",  filePath: "src/handler.rs",  line: 45,  character: 8)

Workflow

User: "Show call graph for process_request"    │    ▼[1] Find function location    LSP(workspaceSymbol) or Grep    │    ▼[2] Prepare call hierarchy    LSP(prepareCallHierarchy)    │    ▼[3] Get incoming calls (callers)    LSP(incomingCalls)    │    ▼[4] Get outgoing calls (callees)    LSP(outgoingCalls)    │    ▼[5] Recursively expand to depth N    │    ▼[6] Generate ASCII visualization

Output Format

Incoming Calls (Who calls this?)

## Callers of `process_request`
main└── run_server    └── handle_connection        └── process_request  ◄── YOU ARE HERE

Outgoing Calls (What does this call?)

## Callees of `process_request`
process_request  ◄── YOU ARE HERE├── parse_headers│   └── validate_header├── authenticate│   ├── check_token│   └── load_user├── execute_handler│   └── [dynamic dispatch]└── send_response    └── serialize_body

Bidirectional (Both)

## Call Graph for `process_request`
                    ┌─────────────────┐                    │      main       │                    └────────┬────────┘                             │                    ┌────────▼────────┐                    │   run_server    │                    └────────┬────────┘                             │                    ┌────────▼────────┐                    │handle_connection│                    └────────┬────────┘                             │        ┌────────────────────┼────────────────────┐        │                    │                    │┌───────▼───────┐   ┌───────▼───────┐   ┌───────▼───────┐│ parse_headers │   │ authenticate  │   │send_response  │└───────────────┘   └───────┬───────┘   └───────────────┘                            │                    ┌───────┴───────┐                    │               │             ┌──────▼──────┐ ┌──────▼──────┐             │ check_token │ │  load_user  │             └─────────────┘ └─────────────┘

Analysis Insights

After generating the call graph, provide insights:

## Analysis
**Entry Points:** main, test_process_request**Leaf Functions:** validate_header, serialize_body**Hot Path:** main → run_server → handle_connection → process_request**Complexity:** 12 functions, 3 levels deep
**Potential Issues:**- `authenticate` has high fan-out (4 callees)- `process_request` is called from 3 places (consider if this is intentional)

Common Patterns

User SaysDirectionUse Case
"Who calls X?"incomingImpact analysis
"What does X call?"outgoingUnderstanding implementation
"Show call graph"bothFull picture
"Trace from main to X"outgoingExecution path

Visualization Options

StyleBest For
Tree (default)Simple hierarchies
Box diagramComplex relationships
Flat listMany connections
MermaidExport to docs

Mermaid Export

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

Related Skills

WhenSee
Find definitionrust-code-navigator
Project structurerust-symbol-analyzer
Trait implementationsrust-trait-explorer
Safe refactoringrust-refactor-helper

来源与署名

来源:actionbook/rust-skills位于skills/rust-call-graph提交5c40d3a

许可证: 无许可证

内容归原作者所有。SourceWeft 从公开仓库中收录这些内容。

举报或申请下架