call-graph-cli 0.1.0

Interactive call and type hierarchy TUI
Documentation

cgraph

cgraph 是一个用于浏览函数调用层次与类型继承层次的交互式 TUI 工具。目前已经具备可拖拽的有向图无限画布、全局节点去重、循环/反向边标记、鼠标与空间键盘导航、LSP 语义查询、Tree-sitter 项目静态搜索与 hierarchy 回退、入口/分支管理、文本导出、底部分析状态栏,以及与 Neovim 等客户端双向联动的 Unix socket IPC。

安装

已发布到 crates.io 后,可以使用 Cargo 安装:

cargo install call-graph-cli
cgraph

快速开始

# 打开空画布;会根据当前工作区尝试启动语言服务器
cargo run

# 创建带初始 anchor 的画布
cargo run -- call Foo::Bar
cargo run -- type Student

# 显式指定语言服务器和工作区
cargo run -- --lsp rust-analyzer --workspace /path/to/project

# 不启动 LSP,使用 Tree-sitter 静态项目索引
cargo run -- --no-lsp --workspace /path/to/project

# 在调用方创建的私有 runtime 目录中启用编辑器双向 IPC
install -d -m 700 "$XDG_RUNTIME_DIR/cgraph"
cargo run -- --ipc-socket "$XDG_RUNTIME_DIR/cgraph/project.sock"

进入 TUI 后,输入 ac 搜索 call 节点,输入 at 搜索 type 节点;tl / tr 按需加载并展开左/右关系,拖拽节点或画布空白处查看屏幕外内容,ec 编辑并重载项目配置,? 查看完整操作帮助,q 退出。同一语义符号在整个图中只显示一次;循环或无法保持从左向右的边使用黄色双线和特殊符号。搜索弹窗会异步加载当前项目的符号,随后在本地即时模糊筛选;默认不包含第三方依赖。完整用法参见 docs/

项目根目录可以添加 .cgraph.toml,用完整限定名和 * 通配符过滤高噪声符号;本仓库的配置示例会过滤任意类的 intois_someSome。详见 docs/project-configuration.md

LSP 配置

cgraph 会从工作区的项目文件推断 rust-analyzerclangdpylsp。自动检测不适合复杂的多语言仓库时,可以使用:

cgraph --lsp clangd --lsp-arg=--background-index --workspace /path/to/project
cgraph --no-lsp

运行 cgraph --help 查看全部命令行选项。独立调试 workspace symbol 或 hierarchy 查询时,可以运行:

cargo run --example lsp_workspace_symbols -- rust-analyzer LspProvider .
cargo run --example lsp_hierarchy -- rust-analyzer call outgoing main . src/main.rs 16 10

文档导航

开发检查

cargo fmt --all --check
cargo test --all-targets
cargo clippy --all-targets --all-features -- -D warnings

新增、删除或移动测试时必须同步更新 src/testing/README.md 的清单和覆盖说明;测试套件会自动校验逐文件数量。