コンテンツにスキップ

TBL-005 列間制約

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

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

フィールド 必須 説明
when object 条件(下記)
then object 制約(下記)
section string 検証対象を特定セクション配下のテーブルに絞る
files string このルールを適用するファイルの glob
フィールド 説明
column string 条件を判定する列
equals string 値がこの文字列と一致するとき
oneOf string[] 値がこの配列のいずれかに含まれるとき
matches string 値が正規表現にマッチするとき

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

フィールド 説明
column string 制約をかける列
notEmpty boolean 値が空でないこと
equals string 値が一致すること
oneOf string[] 値が含まれること
matches string 値がマッチすること

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 }
}
}