ReadGo 是一个 Go 代码分析工具,帮助开发者理解和导航 Go 代码库。它提供了分析 Go 源代码的功能,包括类型信息、函数签名和包依赖关系的分析。
- 项目级代码分析
- 类型信息提取
- 函数签名分析
- 包依赖跟踪
- 接口实现检测
- 代码结构可视化
- 缓存支持以提升性能
- Go 1.16 或更高版本
- Make(可选,用于使用 Makefile 命令)
- golangci-lint(用于代码检查)
- 克隆仓库:
git clone https://github.com/iamlongalong/readgo.git
cd readgo
- 安装开发工具:
make install-tools
- 构建项目:
make build
// 初始化分析器
analyzer := readgo.NewAnalyzer()
// 分析文件
result, err := analyzer.AnalyzeFile(context.Background(), "main.go")
// 分析包
result, err := analyzer.AnalyzePackage(context.Background(), "mypackage")
// 分析整个项目
result, err := analyzer.AnalyzeProject(context.Background(), ".")
// 查找特定类型
typeInfo, err := analyzer.FindType(context.Background(), "mypackage", "MyType")
// 查找接口
interfaceInfo, err := analyzer.FindInterface(context.Background(), "mypackage", "MyInterface")
项目包含了常用的开发命令(通过 Makefile):
# 显示所有可用命令
make help
# 构建项目
make build
# 运行测试
make test
# 运行代码检查(格式化、vet、lint、test)
make check
# 运行提交前检查
make pre-commit
# 格式化代码
make fmt
# 清理构建产物
make clean
analyzer := readgo.NewAnalyzer(
readgo.WithWorkDir("path/to/workspace"),
readgo.WithCacheTTL(time.Minute * 5),
)
分析器包含缓存系统以提升性能:
- 默认 TTL:5 分钟
- 可以通过设置 TTL 为 0 来禁用缓存
- 可以通过
GetCacheStats()
获取缓存统计信息
.
├── analyzer.go # 主分析器实现
├── cache.go # 缓存系统
├── common.go # 通用工具
├── errors.go # 错误定义
├── options.go # 配置选项
├── reader.go # 源码读取器
├── types.go # 类型定义
└── validator.go # 代码验证
- Fork 仓库
- 创建特性分支 (
git checkout -b feature/amazing-feature
) - 运行测试和检查 (
make pre-commit
) - 提交更改 (
git commit -m '添加精彩特性'
) - 推送到分支 (
git push origin feature/amazing-feature
) - 创建 Pull Request
- 进行代码修改
- 运行
make fmt
格式化代码 - 运行
make check
验证更改 - 运行
make pre-commit
进行提交前检查 - 创建 pull request
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
- Go 团队提供的优秀
go/ast
和go/types
包 - 社区的反馈和贡献