Repolode
rigortype

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. 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静的解析ツール。未定義メソッドや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 の数値は毎日更新されます。

関連プロジェクト