读取 Rails 应用的 Ruby 源码,编译为 Rust、Go、TypeScript 等多种目标语言的独立项目。
AhmadHassan-BTed/OpenHeart
用 Rust 编写的静态分析引擎,将源码转为紧凑的程序图,并生成 19 种 UML 与编译器中间表示图。
- Star
- 1,980
- Fork
- 0
- 未关闭 Issue
- 3
- 最近提交
- 3天前
这是什么?
OpenHeart 是一个用 Rust 编写的静态程序分析引擎。它借助 tree-sitter 解析源码,经过十个阶段的流水线处理,并将结果保存为可内存映射的二进制文件。核心数据结构是一种称为 SCPG 的程序图,用平衡括号位串和 rank/select 索引代替指针密集的 AST 节点,以降低内存占用。
基于该图,项目可生成 19 种视图:14 种 UML 2.5 图(包括类图、时序图、状态机图、用例图、部署图等)以及 5 种编译器中间表示,如控制流图、数据流图、控制依赖图、调用图和 ROBDD 路径摘要。输出格式支持 JSON、PlantUML、Mermaid 和 XMI。
网页版工作台运行在 GitHub Pages 上,无需后端即可在浏览器中克隆并分析公开的 GitHub 仓库。同一引擎也可以作为命令行工具或本地 HTTP 服务运行。
核心功能
- 01基于 tree-sitter 解析源码,构建紧凑的程序图。
- 02生成 14 种 UML 2.5 图和 5 种编译器中间表示图。
- 03支持导出 JSON、PlantUML、Mermaid 和 XMI 格式。
- 04提供无需后端的浏览器工作台,可分析公开的 GitHub 仓库。
- 05提供分析本地项目的命令行工具和本地 Web 服务模式。
适用场景
- 将陌生代码库逆向生成 UML 图,快速了解其结构。
- 在编译器或程序分析研究中查看控制流、数据流或调用图。
- 从现有代码生成 PlantUML 或 Mermaid 图,用于文档编写。
快速上手
- 1
构建引擎
cargo build --release - 2
分析单个代码库
target/release/openheart analyze ./my_project ./output_dir - 3
启动网页服务器和交互式工作室
target/release/openheart server 8080
使用前须知
- 从源码构建引擎需要 Rust 工具链(1.75 及以上版本)。
- README 除自身基准测试声明外,未说明分析的准确性。
标签
常见问题
- OpenHeart 是什么?
- 用 Rust 编写的静态分析引擎,将源码转为紧凑的程序图,并生成 19 种 UML 与编译器中间表示图。 OpenHeart 是一个用 Rust 编写的静态程序分析引擎。它借助 tree-sitter 解析源码,经过十个阶段的流水线处理,并将结果保存为可内存映射的二进制文件。核心数据结构是一种称为 SCPG 的程序图,用平衡括号位串和 rank/select 索引代替指针密集的 AST 节点,以降低内存占用。
- OpenHeart 可以免费使用吗?用的什么许可证?
- OpenHeart 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
- OpenHeart 还在维护吗?
- 活跃维护中。OpenHeart 最近一次提交是在 2026年10月17日。
- OpenHeart 适合用来做什么?
- 将陌生代码库逆向生成 UML 图,快速了解其结构。 在编译器或程序分析研究中查看控制流、数据流或调用图。 从现有代码生成 PlantUML 或 Mermaid 图,用于文档编写。
- OpenHeart 怎么安装和运行?
- 构建引擎: cargo build --release 分析单个代码库: target/release/openheart analyze ./my_project ./output_dir 启动网页服务器和交互式工作室: target/release/openheart server 8080
- 在哪里获取 OpenHeart?
- 源代码和安装说明在 GitHub 上:https://github.com/AhmadHassan-BTed/OpenHeart
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
48843RustApache-2.0更新于 昨天
一个本地代码知识图谱,通过 MCP 和 CLI 为 AI 编程工具提供精准的代码审查上下文。
3.2万3055PythonMIT更新于 4天前
一个增量解析器生成工具与解析库,可为源代码构建具体语法树,并在编辑时高效更新。
2.7万2982RustMIT更新于 18小时前
TypeScript 7 编译器(tsc)的实验性 Rust 移植版,保持相同的命令行、语言服务和 API。
137792RustMIT更新于 14小时前
用 Rust 重写的 TypeScript 7 编译器与语言服务,可直接替换现有类型检查流程。
4909RustApache-2.0更新于 2小时前
一款终端打字游戏,把你自己的源代码或 GitHub 仓库变成打字练习题。
164045RustMIT更新于 4天前