一个用于通过Tree-sitter Stack Graphs索引代码仓库的库,设计用于在MCP服务器和其他工具中使用。
TSG Indexer 是一个使用Tree-sitter Stack Graphs分析代码仓库并构建代码结构图表示的Rust库。它捕捉定义与引用之间的关系,从而实现强大的代码导航和分析能力。
关键特性:
TSG Indexer 是一个使用 tree-sitter-stack-graphs 分析代码仓库并构建代码结构图表示的库。该图捕捉定义与引用之间的关系,从而实现强大的代码导航和分析能力。
支持20多种编程语言,包括Rust、Python、JavaScript、TypeScript、Java等。 递归目录遍历以进行全面的代码库分析。 多种输出格式(JSON、DOT图)。 通过功能标志可选的CLI和LSP支持。 能够生成不支持语言的TSG文件。 该库旨在集成到模型控制协议(MCP)服务器和其他需要代码索引和导航能力的工具中。它利用GitHub的tree-sitter解析系统和stack-graphs技术来创建全面的代码分析解决方案。
cli - 命令行界面支持lsp - 语言服务器协议支持添加到你的Cargo.toml:
[dependencies]
tsg_indexer = { version = "0.1.0", features = ["cli", "lsp"] }
或者克隆并构建仓库:
# 克隆仓库
git clone https://github.com/entrepeneur4lyf/tsg_indexer.git
cd tsg_indexer
# 构建项目
cargo build --release
use tsg_indexer::{IndexerConfig, run_indexer};
use std::path::PathBuf;
fn main() -> anyhow::Result<()> {
// 创建配置
let config = IndexerConfig {
path: PathBuf::from("src/"),
format: "json".to_string(),
output: Some(PathBuf::from("output.json")),
verbose: true,
};
// 运行索引器
run_indexer(config)
}
当启用cli功能时:
# 索引单个文件
tsg_indexer_cli examples/test_rust.rs
# 递归索引目录
tsg_indexer_cli src/
# 输出为DOT格式
tsg_indexer_cli --format dot src/
# 输出到文件
tsg_indexer_cli --output graph.json src/
# 详细模式
tsg_indexer_cli --verbose src/
此库旨在用于模型控制协议(MCP)服务器中的代码索引和导航能力。它提供了使用tree-sitter和stack-graphs解析和分析代码仓库所需的核心功能。
要与MCP服务器集成:
# 索引examples目录(启用CLI功能)
tsg_indexer_cli examples/
# 默认情况下,输出将以JSON格式显示图结构
欢迎贡献!以下是你可以贡献的一些方式:
MIT许可证 & Apache 2.0许可证 - 我不确定如何正确地许可这个项目,哈哈。