refactor(编号): 16 个测试模块码单词化 + 门禁识别面连带放宽
批 2(用户授权改名 + 「新名要一眼看懂」裁定)
- 16 个有歧义模块码单词化,共 1,146 处随 scripts/rename_ids.py 改写:
AI→ADCIN、AH→ADCHEALTH、PS→PROTSET、PE→PROTELEM、PH→PHASOR、
TS→TIMESYNC、VL→VOLLOCK、NP→NANDPORT、CFG→CONFIG、CLK→SYSCLK、
WD→WATCHDOG、STO→STORAGE、SH→SHA256、FA→FTPAUTH、FR→FREQ、104→IEC104
- 不动 NET/GD5F/RTC/SOE/UI/ADC/LOG/RS485/TOOL(已是单词、芯片名或业界通用词,
改了纯属 churn)
- 别名按全局登记:这批字面量已完全限定(TC-<码>-<nnn>),不存在裸形多义
- 映射表存档 scripts/rename_maps/batch2.json 作审计轨迹;§6 模块码表同步
连带修门禁(关键教训)
- 模块码涨到 9 位(ADCHEALTH/WATCHDOG)后,候选正则与族正则的 {0,4} 上界
会让改名后的号**整批从门禁眼里消失**:实测编号字面量从 8271 掉到 7315、
悬空假降 490 处。已放宽到 {0,9} 并写进 §6 注记
- 结论:改名批次必须连带复核识别面,只改数据不改判据 = 静默放行;
这次是靠「可判定比例跌破基线即失败」那条线拦下来的
现状与遗留
- 校验 1 未登记前缀 0 处;可判定比例 82.71%(基线 82.6%,只涨不跌成立)
- 遗留:7 个模块的「单元测试说明.md」仍缺(PROTSET 116、NANDPORT 109、
PROTELEM 65、FREQ 48、FTPAUTH 45、SHA256 25、SOE 14 处悬空)——改名不解决
缺文档,处置方式待议
- 遗留:T-2/T-3/T-4/T-6 历史任务号悬空(别名表未收全,属本工具批次漏项)
- 未改任何 C/H 可编译语义(仅注释与宏名内的编号),故不需 @build
This commit is contained in:
+10
-4
@@ -88,12 +88,16 @@ def match_files(patterns, candidates):
|
||||
|
||||
|
||||
def render(template, groups):
|
||||
"""按模板渲染新号。**只有模板带格式说明符时**才把数字组转 int——
|
||||
否则 `TC-PROTSET-011` 会被渲染成 `TC-PROTSET-11`(丢前导零,实测差点毁掉整批补零形态)。"""
|
||||
vals = {}
|
||||
for k, v in groups.items():
|
||||
if v is None:
|
||||
vals[k] = ""
|
||||
elif v.isdigit() and re.search(r"\{%s:[^}]+\}" % re.escape(k), template):
|
||||
vals[k] = int(v)
|
||||
else:
|
||||
vals[k] = int(v) if v.isdigit() else v
|
||||
vals[k] = v
|
||||
return template.format(**vals)
|
||||
|
||||
|
||||
@@ -149,18 +153,20 @@ def merge_aliases(new_aliases, batch):
|
||||
"""把本批 `旧号 → 新号` 并进 id_aliases.json,带 scope(同字面量多义的关键)。"""
|
||||
doc = json.loads(ALIASES_FILE.read_text(encoding="utf-8"))
|
||||
table = doc.setdefault("aliases", {})
|
||||
scope = [norm(x) for x in batch.get("files", [])]
|
||||
# 已**完全限定**的字面量(如 `TC-PROTSET-011`)可以全局认别名;裸形(`S3`)必须带 scope
|
||||
scope = [] if batch.get("global_alias") else [norm(x) for x in batch.get("files", [])]
|
||||
added = 0
|
||||
for old, news in sorted(new_aliases.items()):
|
||||
scope_txt = ("旧号仅在本批 scope 内指向新号;scope 外同字面量属其它族,不受本条影响"
|
||||
if scope else "全库生效(本批无 scope)")
|
||||
if scope else "全库生效(本批字面量已完全限定,无歧义)")
|
||||
entry = {
|
||||
"to": sorted(news)[0] if len(news) == 1 else sorted(news),
|
||||
"status": "renamed",
|
||||
"scope": scope,
|
||||
"note": "%s(scripts/rename_ids.py 批:族 %s)|%s"
|
||||
% (batch.get("note", "批量改名"), batch.get("family"), scope_txt),
|
||||
}
|
||||
if scope:
|
||||
entry["scope"] = scope
|
||||
cur = table.get(old)
|
||||
if cur is None:
|
||||
table[old] = entry
|
||||
|
||||
Reference in New Issue
Block a user