Repolode
rigortype

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

    使用 mise 在 Ruby 4.0 上全局安装 Rigor

    mise use -g ruby@4.0 gem:rigortype
  2. 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 数据每日更新。

相关项目