コンテンツにスキップ

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

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

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

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

フィールド必須説明
chainobject[]チェーンを構成する段階(最低 2 段階)。順序がそのまま検証順
idPatternstringこの正規表現にマッチする値だけを ID とみなす(マッチしない値は無視)
フィールド必須説明
stagestring段階の名前(エラーメッセージに表示)
filesstringこの段階のドキュメントを示す glob
idColumnstringこの段階で ID が定義されているカラム名(最初の段階で必須)
refColumnstringこの段階で前段の 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 集合から除外できます。