診断
rigor checkが問題を見つけると診断を報告します: ファイル、行と列、重要度、ルールID、メッセージ。このページはルールカタログ、重要度モデル、抑制のリファレンスです。各ルールの根拠についてはハンドブック第8章を参照してください。
すべてのルールはfamily.ruleという2セグメントの識別子を持ちます:
| ファミリー | 対象 |
|---|---|
call | コールサイト——未定義メソッド、引数の数、引数の型、nilレシーバー。 |
flow | 制御フロープルーフ——常に例外、デッドブランチ、定数条件。 |
def | メソッド定義——戻り型、ivar書き込み、可視性。 |
assert | assert_typeチェック。 |
dump | dump_type通知。 |
rigor explain <rule>は任意のIDのカタログエントリー全体を表示します。引数なしのrigor explainはすべてを一覧表示します。
| ルール | 発火条件 |
|---|---|
call.undefined-method | メソッドが受信側の静的に既知のクラスで定義されていない。 |
call.wrong-arity | 位置引数の数がどのシグネチャとも一致しない。 |
call.argument-type-mismatch | 引数の型がパラメータ契約(contract)に違反することが証明できる。 |
call.possible-nil-receiver | 受信側が`T |
call.unresolved-toplevel | トップレベルの暗黙的self呼び出しが、同一ファイルのdef、pre_eval:パッチ、Kernel / Objectメソッドのいずれにも解決されない。 |
flow.always-raises | 式が到達可能なすべてのパスで例外を投げることが証明できる。 |
flow.unreachable-branch | if / unless / 三項演算子のブランチが静的に到達不能。 |
flow.always-truthy-condition | 条件が証明可能に常に真または常に偽。 |
flow.dead-assignment | ローカル変数が同じメソッド内で書かれるが読まれない。 |
def.return-type-mismatch | メソッドボディの結果が宣言されたRBSの戻り型に違反する。 |
def.ivar-write-mismatch | インスタンス変数が最初の書き込みと異なる型で書かれる。 |
def.method-visibility-mismatch | 明示的レシーバーの呼び出しがprivateメソッドに到達する。 |
def.override-visibility-reduced | オーバーライドが、プロジェクト定義の祖先から継承した可視性を下げる。 |
def.override-return-widened | オーバーライドの宣言された戻り型が、継承した戻り型を広げる(共変性)。 |
def.override-param-narrowed | オーバーライドが、継承したパラメータ型を狭める(反変性)。 |
assert.type-mismatch | assert_typeの期待値が推論型と一致しない。 |
dump.type | dump_type呼び出し — 情報として推論型を出力する。 |
プラグインはさらにファミリーとルールを追加できます。rigor explainはアクティブな設定が読み込んだものをすべて一覧表示します。
重要度プロファイル
Section titled “重要度プロファイル”各ルールは作成時の重要度で発行され、その後プロファイルが実行時に再スタンプします。severity_profile:設定キーで設定する3つのプロファイルがあります:
| プロファイル | スタンス |
|---|---|
lenient | 証明された診断のみがエラー。不確かなものはwarning / infoに下がる。レガシーコードへの段階的導入向け。 |
balanced (デフォルト) | ほとんどのルールがerror。dump.typeはinfo。不確かなルールはwarning。 |
strict | すべてのルールがerror。CIに適している。 |
より細かい制御のために、severity_overrides:はルールIDまたはファミリーをerror、warning、info、またはoffのいずれかにマッピングします:
severity_profile: balancedseverity_overrides: flow.always-truthy-condition: off call: warningルール固有のオーバーライドはファミリーオーバーライドより優先されます。
最も狭い範囲から広い範囲まで3つのレイヤーがあります。
ソース内、1行。末尾コメントでその行の指定したルールを抑制します:
config.merge(extra) # rigor:disable call.undefined-method修飾IDファミリーワイルドカード(call)、カンマまたはスペース区切りのリスト、またはallを受け付けます。
ソース内、ファイル全体。ファイル内のどこかに# rigor:disable-file <rules>を記述すると、すべての行でそれらのルールが抑制されます。# rigor:disable-file allでファイルを黙らせます。
プロジェクト全体。disable:設定キーで実行全体のルールをオフにします:
disable: - flow.dead-assignment表示は維持したいが失敗させたくない既知のバックログには、disable:の一括設定よりベースラインを使用してください——disable:は新しい発生も隠してしまいます。
© 2026 TypedDuck. Licensed under CC BY-SA 4.0.