test(criteria): 规范加 §1.5「两张表各缺一半时按 id 联接,不按相邻关系配对」(pi 的建议 + 我方实测的串行实例)

This commit is contained in:
2026-09-14 15:20:39 +08:00
parent dbdb2f5039
commit f412751b37
2 changed files with 12 additions and 1 deletions

View File

@ -31,6 +31,17 @@
`client/electron/test/background.test.mjs` 里还有一批 `\{[\s\S]{0,80}…``{0,160}` 窗口。 `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条目要结构化 ## 2. 合成的清单 + 空 allow-list条目要结构化
"清单从 SDK/参考实现生成 + allow-list 目前为空"是个好形状,但它**迟早被侵蚀** "清单从 SDK/参考实现生成 + allow-list 目前为空"是个好形状,但它**迟早被侵蚀**

View File

@ -49,7 +49,7 @@ if (!existsSync(CRITERIA_DOC)) {
process.exit(1); process.exit(1);
} }
const criteriaDoc = readFileSync(CRITERIA_DOC, 'utf8'); const criteriaDoc = readFileSync(CRITERIA_DOC, 'utf8');
for (const must of ['配对/解析', 'allow-list', '变异验证', '剥掉注释', '按行', '自报条数', '只支撑你看到的那一层', '已经在某个提交里', '自带修法']) { for (const must of ['配对/解析', 'allow-list', '变异验证', '剥掉注释', '按行', '自报条数', '只支撑你看到的那一层', '已经在某个提交里', '自带修法', '按 id 联接']) {
if (!criteriaDoc.includes(must)) { if (!criteriaDoc.includes(must)) {
console.error(`✗ 判据规范里少了「${must}」这条 —— 规则被删掉了还是搬走了?`); console.error(`✗ 判据规范里少了「${must}」这条 —— 规则被删掉了还是搬走了?`);
process.exit(1); process.exit(1);