コンテンツにスキップ

TBL-005 列間制約

ある列が when の条件を満たすとき、別の列が then の制約を満たすことを検証します。条件付きルールで、行ごとに評価されます。違反は error で報告されます。

Statusstable のときは Approver 列が空でないこと」「Typeexternal のときは URL 列が https:// で始まること」のような 行内の条件付き整合性 は、許可値や正規表現だけでは表現できません。このルールはそうした列間の関係を表します。

フィールド必須説明
whenobject条件(下記)
thenobject制約(下記)
sectionstring検証対象を特定セクション配下のテーブルに絞る
filesstringこのルールを適用するファイルの glob
フィールド説明
columnstring条件を判定する列
equalsstring値がこの文字列と一致するとき
oneOfstring[]値がこの配列のいずれかに含まれるとき
matchesstring値が正規表現にマッチするとき

equals / oneOf / matches はいずれか 1 つを指定します。

フィールド説明
columnstring制約をかける列
notEmptyboolean値が空でないこと
equalsstring値が一致すること
oneOfstring[]値が含まれること
matchesstring値がマッチすること

notEmpty / equals / oneOf / matches はいずれか 1 つ。

| ID | Status | Approver |
| ------ | ------ | -------- |
| REQ-01 | stable | alice |
| REQ-02 | stable | |

when: { column: "Status", equals: "stable" }, then: { column: "Approver", notEmpty: true } を設定している場合、stable なのに Approver が空の行が違反になります。

docs/requirements.md
line 4 error Row where Status="stable": column "Approver" must not be empty TBL-005
| ID | Status | Approver |
| ------ | ------ | -------- |
| REQ-01 | stable | alice |
| REQ-02 | stable | bob |
{
"rule": "tbl005",
"options": {
"when": { "column": "Status", "equals": "stable" },
"then": { "column": "Approver", "notEmpty": true }
}
}