コンテンツにスキップ

診断

rigor checkが問題を見つけると診断を報告します: ファイル、行と列、重要度、ルールID、メッセージ。このページはルールカタログ、重要度モデル、抑制のリファレンスです。各ルールの根拠についてはハンドブック第8章を参照してください。

すべてのルールはfamily.ruleという2セグメントの識別子を持ちます:

ファミリー対象
callコールサイト——未定義メソッド、引数の数、引数の型、nilレシーバー。
flow制御フロープルーフ——常に例外、デッドブランチ、定数条件。
defメソッド定義——戻り型、ivar書き込み、可視性。
assertassert_typeチェック。
dumpdump_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呼び出しが、同一ファイルのdefpre_eval:パッチ、Kernel / Objectメソッドのいずれにも解決されない。
flow.always-raises式が到達可能なすべてのパスで例外を投げることが証明できる。
flow.unreachable-branchif / 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-mismatchassert_typeの期待値が推論型と一致しない。
dump.typedump_type呼び出し — 情報として推論型を出力する。

プラグインはさらにファミリーとルールを追加できます。rigor explainはアクティブな設定が読み込んだものをすべて一覧表示します。

各ルールは作成時の重要度で発行され、その後プロファイルが実行時に再スタンプします。severity_profile:設定キーで設定する3つのプロファイルがあります:

プロファイルスタンス
lenient証明された診断のみがエラー。不確かなものはwarning / infoに下がる。レガシーコードへの段階的導入向け。
balanced (デフォルト)ほとんどのルールがerrordump.typeinfo。不確かなルールはwarning
strictすべてのルールがerror。CIに適している。

より細かい制御のために、severity_overrides:はルールIDまたはファミリーをerrorwarninginfo、またはoffのいずれかにマッピングします:

severity_profile: balanced
severity_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.