Repolode
AhmadHassan-BTed

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. 1

    构建引擎

    cargo build --release
  2. 2

    分析单个代码库

    target/release/openheart analyze ./my_project ./output_dir
  3. 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 数据每日更新。

相关项目