rust-call-graph
180
总安装量
180
周安装量
#1481
全站排名
安装命令
npx skills add https://github.com/zhanghandong/rust-skills --skill rust-call-graph
Agent 安装分布
opencode
145
codex
135
gemini-cli
129
claude-code
121
github-copilot
120
amp
83
Skill 文档
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 Says | Direction | Use Case |
|---|---|---|
| “Who calls X?” | incoming | Impact analysis |
| “What does X call?” | outgoing | Understanding implementation |
| “Show call graph” | both | Full picture |
| “Trace from main to X” | outgoing | Execution path |
Visualization Options
| Style | Best For |
|---|---|
| Tree (default) | Simple hierarchies |
| Box diagram | Complex relationships |
| Flat list | Many connections |
| Mermaid | Export to docs |
Mermaid Export
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
| When | See |
|---|---|
| Find definition | rust-code-navigator |
| Project structure | rust-symbol-analyzer |
| Trait implementations | rust-trait-explorer |
| Safe refactoring | rust-refactor-helper |