コンテンツにスキップ

GRP-001 トレーサビリティチェーン

要件 → 設計 → テスト計画のように、ID が複数のドキュメント段階を順に辿れることを検証します。各段階で参照されない ID が見つかると warning で報告されます。プロジェクトスコープ のルールで、include で読み込んだ全ドキュメントを横断して評価されます。

最初の段階(chain[0])の idColumn で ID を集め、それが次以降の段階の refColumn で参照されているかを順に確認していきます。

要件 → 設計 → テストのような流れでは、「要件 ID は設計に必ず引かれていて、設計に登場した ID はテストに必ず引かれている」 ことが整合性の最低条件です。しかし要件を 1 件追加して設計を書き忘れる、テスト計画を書き忘れる、といった抜けは、ファイルが分かれていると人間の目では追えません。このルールはチェーンの抜けを機械的に検出します。

フィールド 必須 説明
chain object[] チェーンを構成する段階(最低 2 段階)。順序がそのまま検証順
idPattern string この正規表現にマッチする値だけを ID とみなす(マッチしない値は無視)
フィールド 必須 説明
stage string 段階の名前(エラーメッセージに表示)
files string この段階のドキュメントを示す glob
idColumn string この段階で ID が定義されているカラム名(最初の段階で必須)
refColumn string この段階で前段の ID を参照しているカラム名(2 段階目以降で必須)

最初の段階では idColumn を、2 段階目以降では refColumn を指定します。

docs/requirements.md:
| ID | Name |
| ------- | ------ |
| REQ-001 | Login |
| REQ-002 | Logout |
docs/design.md:
| Requirement | Detail |
| ----------- | ------------- |
| REQ-001 | Design login |

REQ-002docs/design.mdRequirement カラムから参照されていないので違反になります。

docs/requirements.md
line 4 warning REQ-002 defined in docs/requirements.md but not referenced in stage "Design" GRP-001
docs/design.md:
| Requirement | Detail |
| ----------- | -------------- |
| REQ-001 | Design login |
| REQ-002 | Design logout |
{
"rule": "grp001",
"options": {
"chain": [
{ "stage": "Requirements", "files": "**/requirements.md", "idColumn": "ID" },
{ "stage": "Design", "files": "**/design.md", "refColumn": "Requirement" },
{ "stage": "Test", "files": "**/test-plan.md", "refColumn": "Covers" }
],
"idPattern": "^REQ-\\d{3}$"
}
}

3 段階以上のチェーンも chain 配列を伸ばすだけで表現できます。idPattern を指定すると、ヘッダー行のサンプルや表記ゆれ行を ID 集合から除外できます。