读取 Rails 应用的 Ruby 源码,编译为 Rust、Go、TypeScript 等多种目标语言的独立项目。
rigortype/rigor
无需标注即可从代码推断类型的 Ruby 静态分析工具,只报告确定性的 bug。
- Star
- 107
- Fork
- 1
- 未关闭 Issue
- 538
- 最近提交
- 18小时前
这是什么?
Rigor 是一款面向 Ruby 的静态分析工具,能发现调用未定义方法、参数个数错误、可能为 nil 的接收者、不可达分支以及恒为真的条件等问题。它基于 Prism 解析代码,并通过流敏感的推断引擎追踪表达式产生的具体值,而不只是类别。因此报错信息会带上计算出的值,例如提示字符串 "hello-world" 上不存在某方法,而不是笼统地指向 String。
使用前无需添加类型标注,也没有运行时依赖。项目会读取 sig/ 目录中已有的 RBS 签名作为类型来源,rigor sig-gen 还能根据推断结果生成 RBS。工具坚持零误报原则:只有接收者类型可以静态确定且证据充分时才会报告。针对 Rails、RSpec、Sidekiq、Sinatra、dry-rb 等生态提供插件,rigor-sorbet 则可接入 Sorbet 签名。
工具以 rigortype gem 形式全局安装,提供检查、逐行标注推断类型、诊断汇总和生成签名等命令。CI 输出支持 GitHub 注解、GitLab Code Quality、SARIF、JUnit 等格式。
核心功能
- 01无需标注即可对 Ruby 代码做流敏感的值级类型推断。
- 02报告未定义方法、参数个数错误以及可能为 nil 的接收者。
- 03读取已有 RBS 签名,并可根据推断结果生成 RBS。
- 04提供 Rails、RSpec、Sidekiq、Sinatra 等常用框架和 gem 的插件。
- 05支持 GitHub 注解、SARIF 等 CI 原生输出格式。
适用场景
- 在没有类型标注的现有 Ruby 项目中查找拼写错误和未定义方法调用。
- 在 CI 中加入静态检查,配合基线逐步清理已有问题。
- 根据推断出的类型为无类型代码生成 RBS 签名。
- 借助框架插件对 Rails 应用进行类型检查。
快速上手
- 1
使用 mise 在 Ruby 4.0 上全局安装 Rigor
mise use -g ruby@4.0 gem:rigortype - 2
在代码上运行 Rigor 查找错误
rigor check app lib
使用前须知
- 目前处于早期评估阶段(0.4.x 版本),在 v1.0.0 之前兼容性接口仍可能变化。
- 项目由一人维护且资金有限,开发进度可能不稳定。
- 仅适用于 Ruby 代码,不能分析其他语言。
收录于专题
标签
常见问题
- rigor 是什么?
- 无需标注即可从代码推断类型的 Ruby 静态分析工具,只报告确定性的 bug。 Rigor 是一款面向 Ruby 的静态分析工具,能发现调用未定义方法、参数个数错误、可能为 nil 的接收者、不可达分支以及恒为真的条件等问题。它基于 Prism 解析代码,并通过流敏感的推断引擎追踪表达式产生的具体值,而不只是类别。因此报错信息会带上计算出的值,例如提示字符串 "hello-world" 上不存在某方法,而不是笼统地指向 String。
- rigor 可以免费使用吗?用的什么许可证?
- rigor 以 MPL-2.0 许可证开源。用于商业产品前,请先确认许可证条款。
- rigor 还在维护吗?
- 活跃维护中。rigor 最近一次提交是在 2026年11月6日。
- rigor 适合用来做什么?
- 在没有类型标注的现有 Ruby 项目中查找拼写错误和未定义方法调用。 在 CI 中加入静态检查,配合基线逐步清理已有问题。 根据推断出的类型为无类型代码生成 RBS 签名。 借助框架插件对 Rails 应用进行类型检查。
- rigor 怎么安装和运行?
- 使用 mise 在 Ruby 4.0 上全局安装 Rigor: mise use -g ruby@4.0 gem:rigortype 在代码上运行 Rigor 查找错误: rigor check app lib
- 在哪里获取 rigor?
- 源代码和安装说明在 GitHub 上:https://github.com/rigortype/rigor
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
一个 Python 静态分析库,提供自动补全、跳转定义、重构和代码搜索,常用于编辑器插件。
面向 Python 的静态类型检查器,提供命令行工具和 Visual Studio Code 扩展,适用于大型代码库。
一款 PHP 静态分析工具,无需运行代码即可发现潜在错误。
一个 pytest 插件,在运行测试时顺带用 mypy 对源文件做静态类型检查。
Ruby 静态代码分析与格式化工具,依据社区 Ruby 风格指南检查代码,并可自动修复多数问题。