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 從公開儲存庫中收錄這些內容。

檢舉或申請下架