REF-002 ID の定義と参照
定義ファイル(要件書など)で宣言された ID と、他ファイル(テストや設計書など)からの参照が双方向で整合していることを検証します。プロジェクトスコープ のルールで、include で読み込んだ全ドキュメントを横断して評価されます。
- 参照されているが定義が無い ID → error
- 定義されているが参照されていない ID → warning
要件 ID は定義ファイル(requirements.md など)で宣言され、テスト・設計・実装ドキュメントから参照される構造になりがちです。要件をリネームしたり削除したりしても、参照側のドキュメントは自動では追従しません。逆に、定義した要件がどこからも参照されていなければ、その要件は実装やテストに繋がっていない可能性があります。このルールは双方向のトレーサビリティを機械的に検証します。
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
definitions | string | ✓ | ID を定義するファイルの glob |
references | string[] | ✓ | ID を参照するファイルの glob 配列 |
idColumn | string | ✓ | 定義ファイルで ID が格納されているカラム名 |
idPattern | string | ✓ | ID として扱う値の正規表現 |
idPattern は定義側のテーブル列の値、参照側ドキュメント内のテキスト両方の照合に使われます。プレーンテキスト中のトークンも対象なので、ID らしくない単語を誤って拾わないよう、明示的なプレフィックス(^REQ- など)を含めるのが安全です。
docs/requirements.md:| ID | 内容 || ------ | ---------------- || REQ-01 | ユーザー登録 || REQ-02 | パスワード再設定 |
docs/tests.md:- REQ-01 のテストは ...- REQ-99 のテストは ...REQ-99 が定義されていないため error、REQ-02 がどこからも参照されていないため warning になります。
docs/tests.md line 2 error ID "REQ-99" is referenced but not defined in any definition file REF-002
docs/requirements.md line 4 warning ID "REQ-02" is defined but never referenced REF-002定義側にない REQ-99 を REQ-02 に修正し、REQ-02 が参照されるようにします。
docs/tests.md:- REQ-01 のテストは ...- REQ-02 のテストは ...{ "rule": "ref002", "options": { "definitions": "**/requirements.md", "references": ["**/tests.md", "**/design.md"], "idColumn": "ID", "idPattern": "^REQ-\\d+$" }}- TBL-006 ファイル間 ID 一意性 — 定義ファイル内で ID が重複していないかの検証
- REF-003 安定度の整合性 — ID の参照が安定度の観点で整合しているかの検証
- GRP-001 トレーサビリティチェーン — ID 間の依存関係グラフの検証