test(criteria): 规范加 §1.5「两张表各缺一半时按 id 联接,不按相邻关系配对」(pi 的建议 + 我方实测的串行实例)
This commit is contained in:
@ -31,6 +31,17 @@
|
||||
`client/electron/test/background.test.mjs` 里还有一批 `\{[\s\S]{0,80}…`、`{0,160}` 窗口。
|
||||
下次碰那个文件时按本节形状改成"取规则体",不要在那里再加一条注释算了。
|
||||
|
||||
### 1.5 两张表各缺一半时,必须**按 id 联接**,不能按相邻关系配对(pi 2026-09-14)
|
||||
|
||||
读 SDK 的系统色时踩到的:`sysResource.js` 只有**名字→id**,`resources.txt` 只有 **id→值**,
|
||||
而后者把名字与值排得并不总是紧邻(我第一遍按文本邻近关系读,直接串了行,
|
||||
把 `ohos_id_color_background` 读成了 `ohos_id_color_background_dark` 的值)。
|
||||
正确做法:名字查 id、id 查值,**两次联接都基于标识符**;顺便用一张表校验另一张表
|
||||
(例如 `_dark` 结尾的名字应当拿到深色值),对不上就说明联接方式错了。
|
||||
|
||||
这与第 1 条是同一件事:**邻接不是结构**。它同样适用于"我自己写的判据"
|
||||
(§6.6 里那条被变异测试抓住两次的窗口式正则就是反例)。
|
||||
|
||||
## 2. 合成的清单 + 空 allow-list:条目要结构化
|
||||
|
||||
"清单从 SDK/参考实现生成 + allow-list 目前为空"是个好形状,但它**迟早被侵蚀**:
|
||||
|
||||
@ -49,7 +49,7 @@ if (!existsSync(CRITERIA_DOC)) {
|
||||
process.exit(1);
|
||||
}
|
||||
const criteriaDoc = readFileSync(CRITERIA_DOC, 'utf8');
|
||||
for (const must of ['配对/解析', 'allow-list', '变异验证', '剥掉注释', '按行', '自报条数', '只支撑你看到的那一层', '已经在某个提交里', '自带修法']) {
|
||||
for (const must of ['配对/解析', 'allow-list', '变异验证', '剥掉注释', '按行', '自报条数', '只支撑你看到的那一层', '已经在某个提交里', '自带修法', '按 id 联接']) {
|
||||
if (!criteriaDoc.includes(must)) {
|
||||
console.error(`✗ 判据规范里少了「${must}」这条 —— 规则被删掉了还是搬走了?`);
|
||||
process.exit(1);
|
||||
|
||||
Reference in New Issue
Block a user