コンテンツにスキップ

TBL-006 ファイル間 ID 一意性

複数のファイルにまたがって、特定カラムの値(ID)がユニークであることを検証します。重複が見つかると error で報告されます。プロジェクトスコープ のルールで、include で読み込んだ全ドキュメントを横断して評価されます。

要件 ID、ADR 番号、テスト ID のように、リポジトリ全体で一意であるべき識別子はよくあります。しかし複数のファイルや複数のチームが同時に追加していくと、知らずに同じ ID を使ってしまうことがあります。重複した ID は検索性も追跡性も壊すので、機械的に検出する価値があります。

フィールド必須説明
filesstringID 一意性を検証する対象ファイルの glob
columnstringID が格納されているカラム名
idPatternstringこの正規表現にマッチする値だけを ID とみなす(マッチしない値は無視)

files は他のルールの files オプションと同じ glob 構文ですが、TBL-006 では必須です。

docs/auth/requirements.md:
| ID | 内容 |
| ------ | -------------- |
| REQ-01 | ユーザー登録 |
docs/todo/requirements.md:
| ID | 内容 |
| ------ | ---------------- |
| REQ-01 | タスク作成 |

両ファイルで REQ-01 を使っているので違反になります。

docs/todo/requirements.md
line 3 error ID "REQ-01" is already defined in docs/auth/requirements.md:3 TBL-006

ID にゾーン名を含めて区別します。

docs/auth/requirements.md:
| ID | 内容 |
| ----------- | -------------- |
| REQ-AUTH-01 | ユーザー登録 |
docs/todo/requirements.md:
| ID | 内容 |
| ----------- | ---------------- |
| REQ-TODO-01 | タスク作成 |
{
"rule": "tbl006",
"options": {
"files": "**/requirements.md",
"column": "ID",
"idPattern": "^REQ-"
}
}

idPattern を指定すると、そのパターンにマッチする値だけが ID として扱われます。テーブルにヘッダー行サンプルや見出し行が混じっていても、ID 行だけを対象にできます。