コンテンツにスキップ

ベースライン

ベースライン(baseline)は、プロジェクトがすでに抱えている診断を記録し、rigor checkがそれらについて黙り、新しいものだけを表面化できるようにします。既存のコードベースにRigorを導入するための実用的な入り口です: チェックがCIで役立つ前に診断をゼロにする必要はありません。

ベースラインは慣例として.rigor-baseline.ymlという名前のYAMLファイルで、既知の診断のバケットを一覧します:

version: 1
ignored:
- file: app/models/user.rb
rule: call.undefined-method
count: 3
- file: app/lib/legacy.rb
rule: call.argument-type-mismatch
count: 1

各行は(file, rule)をキーとするバケットで、そのルールについてファイルが許可される診断のcountを持ちます。オプションのmessage:フィールド(正規表現ソース)は、メッセージが一致するコールサイトにバケットを絞り込みます。

このファイルは手書きしません——rigor baseline generateが生成します。

プロジェクトにあるベースラインファイルは、何かが有効化するまで休眠状態です——ファイルの存在だけでは何もしません。設定キーで有効化します:

baseline: .rigor-baseline.yml

または実行ごとにrigor check --baseline=PATHで指定します。--no-baselineは1回の実行で設定されたベースラインを無視し、設定ファイルのbaseline: falseincludes:を通じて継承されたベースラインを無効化します。

ベースラインがアクティブな場合、各バケットは全体として照合されます:

  • 現在の数 ≤ 記録された数 — バケット内のすべての診断が沈黙する。
  • 現在の数 > 記録された数 — 超過分だけでなく、バケット内のすべての診断が表面化する。

理由: ファイルが編集されると行番号がずれるため、部分的な照合ではどの診断が新しいものかを確実に指し示せません。バケット全体を表面化することで、そのルール×ファイルをまとめてレビューするよう促します。

ベースラインフィルタは最後に実行されます——# rigor:disableコメントと重要度プロファイルの後です。ベースラインは別のレイヤーがすでに抑制した診断を復活させることはありません。

コマンド用途
rigor baseline generate現在の診断から新しいベースラインを書き出す。--forceなしで既存ファイルの上書きを拒否する。
rigor baseline regenerate無条件に書き直す——診断を修正した後にファイルを縮小するために実行する。
rigor baseline dumpベースラインを表示する。--rule--fileでフィルタリング可能。
rigor baseline driftバケットがどう動いたかを表示する——--only=overで増えたバケット、reducibleですでに改善したバケット、clearedで空のバケット。
rigor baseline pruneもはや何にも一致しないバケットを削除する。--dry-runでプレビュー。

generateregenerate--match-mode=rule(デフォルト——ファイル×ルール単位で1バケット)または--match-mode=message(メッセージごとに1バケット: より精密だがチャーンが増える)を受け付けます。

rigor triageは診断ストリームを要約します——ルール分布、最も診断の多いファイル、考えられる原因のヒューリスティックなヒント——を表示して、何から取り組むかを決められるようにします:

Terminal window
rigor triage

参考情報であり常に0で終了します。意図したループはtriageで優先順位付け → ルールを修正または抑制 → rigor baseline regenerateでファイルを縮小、というものです。rigor-baseline-reduceスキルはこのループをインタラクティブに進めます。

ベースラインが増えたときにCIを失敗させるには、rigor check--baseline-strictを追加します。

© 2026 TypedDuck. Licensed under CC BY-SA 4.0.