article
README
🚀 Ummon - 强大的代码分析工具
Ummon 是一款功能强大的代码分析工具,旨在助力开发者更好地理解、管理和优化代码库。它通过解析多种编程语言的源代码,构建知识图谱,并提供命令行接口工具,为开发工作提供有力支持。
🚀 快速开始
注意:本项目目前处于早期阶段,请谨慎使用。若需更多帮助,可访问 GitHub 仓库 或查阅相关文档。
✨ 主要特性
功能概述
Ummon 具备多种核心功能,具体如下:
- 代码分析:支持对 Rust、Python、JavaScript 和 Java 等多种编程语言进行语法解析和语义分析。
- 知识图谱构建:将代码中的实体(如类、函数、变量等)及其关系以图结构存储,方便后续查询与分析。
- 增量更新机制:能检测代码变化,仅对受影响部分重新索引,提升效率。
- LLM 集成:结合大语言模型(Large Language Model, LLM),提供语义理解和智能推荐功能。
代码解析
Ummon 支持对以下编程语言进行解析和分析:
- Rust:支持类/结构体、特征、实现、函数和模块等语法结构。
- Python:支持类、函数、装饰器和导入语句。
- JavaScript:支持类、普通函数、箭头函数和导入语句。
- Java:支持类、接口、方法、构造函数和字段声明。
知识图谱更新
Ummon 提供两种知识图谱更新方式:
增量更新(默认模式)
不使用 --full 标志时,Ummon 执行增量更新:
- 记录上次索引操作的时间戳。
- 检测自上次索引以来修改的文件。
- 删除与已修改文件相关的实体和关系。
- 仅重新索引已修改的文件,保留其余部分。
完全重建
使用 --full 标志时,Ummon 执行完全重建:
- 清空数据库中的所有实体和关系。
- 从头开始重新索引整个代码库。
- 适用于代码库发生重大变化或图谱处于不一致状态的情况。
📦 安装指南
安装步骤
请参考 快速入门指南 进行安装和配置。
环境变量配置
Ummon 使用环境变量管理敏感信息:
OPENROUTER_API_KEY:用于访问 LLM 服务的 API 密钥(查询和领域抽取功能需要)。
💻 使用示例
命令行工具
索引命令
# 默认增量索引当前目录
cargo run -- index .
# 完全重建知识图谱
cargo run -- index . --full
# 查询知识图谱
cargo run -- query "显示所有函数"
查询命令
# 基本查询示例
ummon query "show funcs"
# 结构化查询示例
ummon query "select functions where file_path like 'src/auth/%'"
# 限制结果数量
ummon query "select functions" --limit 10
# 禁用 LLM 处理
ummon query "select functions" --no-llm
智能推荐
# 获取代码改进建议
ummon suggest .
# 获取字段重命名建议
ummon suggest --rename-field User username
# 获取函数实现建议
ummon suggest --implement-function calculate_discount
📚 详细文档
语言支持
Ummon 目前支持对以下编程语言进行解析和分析:
- Rust
- Python
- JavaScript/TypeScript
- Java
分析能力
Ummon 能够识别并存储以下代码元素:
- 类与接口:包含继承关系、实现关系等。
- 函数与方法:包含调用关系、依赖关系等。
- 变量与常量:包含作用域、类型信息等。
- 模块与包:包含导入关系、导出关系等。
LLM 集成
Ummon 支持通过大语言模型(LLM)提供语义理解和智能推荐功能,具体包括:
- 代码片段解释
- 类型推断辅助
- 重构建议生成
- 代码异味检测
📚 开发者指南
请参考 开发者文档 了解如何为 Ummon 贡献代码或进行定制开发。
📚 FAQ
常见问题解答
- 支持哪些编程语言?
- 支持 Rust、Python、JavaScript 和 Java。
- 如何处理大代码库?
- 建议使用增量更新机制,并确保硬件资源充足。
- 如何获取帮助?
- 请访问 GitHub 仓库 提交问题或查阅文档。
📄 许可证
Ummon 开源项目遵循 MIT 许可证,具体条款请参考 LICENSE 文件。
微信扫一扫