无需标注即可从代码推断类型的 Ruby 静态分析工具,只报告确定性的 bug。
roundhouse-rb/roundhouse
读取 Rails 应用的 Ruby 源码,编译为 Rust、Go、TypeScript 等多种目标语言的独立项目。
- Star
- 527
- Fork
- 50
- 未关闭 Issue
- 163
- 最近提交
- 14小时前
这是什么?
Roundhouse 通过整程序类型推断分析未经修改的 Rails 源码,无需类型注解,也无需启动应用或连接数据库。推断结果包括关联返回的类型、模型字段及其类型,以及方法可能返回 nil 的情况。同一套分析可用于终端和 CI 中的 `check` 命令、编辑器的 LSP 服务,以及供 AI 代理使用的 MCP 服务。
基于这套分析,转译器可以生成独立项目,目标语言包括 Rust、Go、TypeScript、Crystal、Elixir、Kotlin、Swift、Python、C# 和 Ruby。生成的代码自带测试,运行时不依赖 Rails。项目通过对比 Rails 与各目标端对同一 URL 的响应来验证输出。另有一条路径可借助 Spinel 将 Ruby 代码提前编译为单个原生二进制文件,默认使用 SQLite 作为数据库。
核心功能
- 01无需类型注解,从 Rails 源码中推断类型和空值安全信息。
- 02提供 `check` 命令,可用于终端和 CI 流程。
- 03提供 LSP 服务与 MCP 服务,分别对接编辑器和 AI 代理。
- 04可将 Rails 应用转译为十余种目标语言的独立项目。
- 05通过 Spinel 将类 Rails 的 Ruby 代码编译为原生二进制。
适用场景
- 将 Rails 应用编译为无需 Ruby 解释器的原生可执行文件。
- 在 CI 中检查 Rails 代码的类型问题或 N+1 查询。
- 将 Rails 应用的逻辑迁移到 Go、Rust 或 TypeScript 服务。
- 在编辑器或 AI 代理中梳理 Rails 应用的请求流程。
快速上手
- 1
使用安装脚本安装预编译二进制文件
按 README 中的官方说明安装 - 2
确认二进制文件可以运行
roundhouse --version - 3
分析你的 Rails 应用
roundhouse check --continue /path/to/your/rails/app
使用前须知
- 预编译二进制文件仅在 Apple silicon 版 macOS 和 x86-64 版 Linux 上经过测试;macOS Intel 和 Windows 版本未经测试。
- 它的主要输入是 Rails 应用,因此并不是通用的 Ruby 转换工具。
收录于专题
标签
常见问题
- roundhouse 是什么?
- 读取 Rails 应用的 Ruby 源码,编译为 Rust、Go、TypeScript 等多种目标语言的独立项目。 Roundhouse 通过整程序类型推断分析未经修改的 Rails 源码,无需类型注解,也无需启动应用或连接数据库。推断结果包括关联返回的类型、模型字段及其类型,以及方法可能返回 nil 的情况。同一套分析可用于终端和 CI 中的 `check` 命令、编辑器的 LSP 服务,以及供 AI 代理使用的 MCP 服务。
- roundhouse 可以免费使用吗?用的什么许可证?
- roundhouse 以 Apache-2.0 许可证开源。用于商业产品前,请先确认许可证条款。
- roundhouse 还在维护吗?
- 活跃维护中。roundhouse 最近一次提交是在 2026年11月6日。
- roundhouse 适合用来做什么?
- 将 Rails 应用编译为无需 Ruby 解释器的原生可执行文件。 在 CI 中检查 Rails 代码的类型问题或 N+1 查询。 将 Rails 应用的逻辑迁移到 Go、Rust 或 TypeScript 服务。 在编辑器或 AI 代理中梳理 Rails 应用的请求流程。
- roundhouse 怎么安装和运行?
- 使用安装脚本安装预编译二进制文件 确认二进制文件可以运行: roundhouse --version 分析你的 Rails 应用: roundhouse check --continue /path/to/your/rails/app
- 在哪里获取 roundhouse?
- 源代码和安装说明在 GitHub 上:https://github.com/roundhouse-rb/roundhouse
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
一个 Python 静态分析库,提供自动补全、跳转定义、重构和代码搜索,常用于编辑器插件。
用 Rust 编写的超快速 TypeScript/JavaScript 编译器与解析器,可在 Rust 与 JavaScript 中使用。
用 Rust 编写的高性能 JavaScript/TypeScript 工具集,包含解析器、代码检查、格式化、转换、压缩和模块解析。
一个 JavaScript 编译器,可将新版语法转译为目标环境可运行的代码。
Zen C 是一门系统级编程语言,语法接近高级语言,编译为可读的 GNU C11 代码。