跳转到内容

TBL-006 文件间 ID 唯一性

验证特定列的值(ID)在多个文件之间唯一。发现重复时,会报告为 error。这是项目作用域规则,会跨越 include 加载的所有文档进行评估。

像需求 ID、ADR 编号、测试 ID 这种应在整个仓库中保持唯一的标识符很常见。但当多个文件、多个团队同时添加内容时,可能在不知情的情况下使用相同的 ID。重复的 ID 会破坏可搜索性和可追溯性,因此值得机械化检测。

字段类型必填说明
filesstring验证 ID 唯一性的目标文件 glob
columnstring存放 ID 的列名
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 行进行验证。