Ummon

Ummon

🚀 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

常见问题解答

  1. 支持哪些编程语言?
    • 支持 Rust、Python、JavaScript 和 Java。
  2. 如何处理大代码库?
    • 建议使用增量更新机制,并确保硬件资源充足。
  3. 如何获取帮助?

📄 许可证

Ummon 开源项目遵循 MIT 许可证,具体条款请参考 LICENSE 文件。

  • 0 关注
  • 0 收藏,8 浏览
  • system 提出于 2025-09-19 21:09

相似服务问题