Go-CodeGraph
Go-CodeGraph 是一个基于 Go 语言开发的代码分析与可视化工具。该工具能够解析代码库中的符号(Symbol)信息,建立代码调用关系图谱,并支持符号追踪功能,帮助开发者更好地理解和分析代码结构。
主要功能
符号解析
- 支持多种编程语言的代码文件解析,提取其中的符号信息
- 能够识别函数、方法、变量、类、接口、类型别名等不同类型的符号
- 基于 tree-sitter 强大的语法解析能力
- 支持语言: Go, JavaScript/JSX, TypeScript/TSX
代码索引
- 支持对整个目录进行索引
- 将符号信息持久化存储到本地数据库
- 增量索引能力,快速更新已有索引
符号追踪
- 根据符号名称快速定位其在代码库中的所有引用
- 分析符号的调用关系和使用场景
- 帮助理解代码调用链路
安装方法
# 克隆项目
git clone https://gitee.com/kingecg/go-codegraph.git
cd go-codegraph
# 构建项目
go build -o codegraph .
# 或直接使用 go run 运行
go run main.go
使用方法
索引代码库
对指定目录进行符号索引:
./codegraph index <目录路径>
追踪符号
追踪指定符号在代码库中的引用:
./codegraph trace <符号名称>
项目结构
go-codegraph/
├── cmd/ # 命令行入口
│ └── root.go # 命令定义与执行
├── parser/ # 符号解析模块
│ ├── parser.go # 核心抽象与文件分派
│ ├── parser_golang.go # Go 语言解析
│ ├── parser_javascript.go # JavaScript/JSX 解析
│ └── parser_typescript.go # TypeScript/TSX 解析
├── storage/ # 数据存储模块
│ └── db.go # 数据库操作
├── main.go # 程序入口
├── go.mod # Go 模块依赖
├── test.sh # 测试脚本
└── LICENSE # 开源协议
核心模块说明
Parser 模块
负责解析多种语言的源代码文件,提取其中的符号信息。通过 tree-sitter 库进行语法分析,按文件扩展名自动选择对应的语言解析器,识别不同类型的代码元素。支持 Go(函数、方法、类型)、JavaScript/JSX(函数、类、箭头函数、函数表达式)、TypeScript/TSX(函数、类、接口、类型别名)。
Storage 模块
使用 SQLite 数据库持久化存储索引的符号信息,提供高效的查询能力,支持符号的保存和检索。
CLI 模块
提供命令行交互界面,包含索引命令(index)和追踪命令(trace),便于在终端中快速使用。
技术栈
- Go 1.x: 开发语言
- tree-sitter: 代码语法解析 (Go / JavaScript / TypeScript)
- SQLite: 本地数据存储
- cobra: CLI 框架
贡献指南
欢迎提交 Issue 和 Pull Request 共同完善本项目。
开源协议
本项目遵循 MIT 开源协议。