Railsアプリを解析し、Rust、Go、TypeScript、Elixirなどの単体プロジェクトやSpinelネイティブバイナリを生成するコンパイラ。
rigortype/rigor
コードへの型注釈なしで型を推論するRuby静的解析ツール。未定義メソッドやnilレシーバーなど、確実なバグのみを報告することを目指します。
- スター
- 107
- フォーク
- 1
- 未解決の Issue
- 538
- 最終コミット
- 10 時間前
これは何?
Rigorは、未定義メソッドの呼び出し、引数の数の誤り、実行される経路でnilになる可能性のあるレシーバー、到達不能な分岐、常にtruthyとなる条件などのバグを検出するRuby向け静的解析ツールです。Prismでコードをパースし、式が生成する値をクラスだけでなく追跡する、フローセンシティブな推論エンジンを実行します。メッセージには計算された値が含まれます。たとえば、Stringではなく文字列「hello-world」に対する未定義メソッドとして報告します。
使い始めるのに型注釈や実行時依存関係は必要ありません。sig/にある既存のRBSシグネチャを型情報源として読み込み、rigor sig-genで推論結果からRBSを出力できます。誤検知ゼロを重視しており、レシーバーの型が静的に判明し、根拠が確実な場合にのみ診断を行います。Rails、RSpec、Sidekiq、Sinatra、dry-rbなどのgem向けプラグインが利用でき、rigor-sorbetはSorbetのシグネチャを取り込みます。
このツールはrigortype gemとしてグローバルにインストールし、チェック、型注釈のインライン追加、診断のトリアージ、シグネチャの生成を行うコマンドを提供します。CI向けの出力形式には、GitHub annotations、GitLab Code Quality、SARIF、JUnitなどがあります。
主な機能
- 01フローセンシティブな解析により、型注釈のないRubyコードから値レベルの型を推論します。
- 02未定義メソッド、引数の数の誤り、nilになる可能性のあるレシーバーを報告します。
- 03既存のRBSシグネチャを読み込み、推論結果からRBSを生成できます。
- 04Rails、RSpec、Sidekiq、Sinatraなど、よく使われるgem向けのプラグインを提供します。
- 05GitHub annotationsや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静的解析ツール。未定義メソッドやnilレシーバーなど、確実なバグのみを報告することを目指します。 Rigorは、未定義メソッドの呼び出し、引数の数の誤り、実行される経路でnilになる可能性のあるレシーバー、到達不能な分岐、常にtruthyとなる条件などのバグを検出するRuby向け静的解析ツールです。Prismでコードをパースし、式が生成する値をクラスだけでなく追跡する、フローセンシティブな推論エンジンを実行します。メッセージには計算された値が含まれます。たとえば、Stringではなく文字列「hello-world」に対する未定義メソッドとして報告します。
- 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
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
主にエディタープラグインで使われる、補完、定義へのジャンプ、リファクタリング、コード検索向けのPython静的解析ライブラリです。
大規模なコードベース向けに設計された、コマンドラインツールとVisual Studio Code拡張機能を備える、標準に準拠したPython静的型チェッカーです。
実行せずにPHPコードのバグを見つける静的解析ツール。
pytestのテスト実行中に、ソースファイルへmypyの静的型チェックを行うpytestプラグインです。
Ruby Style Guideのルールを適用し、多くの違反を自動修正できるRuby向け静的コード解析・フォーマッター。