diff --git a/scripts/check_ids.py b/scripts/check_ids.py index fb5de1f4..cc8c48d6 100644 --- a/scripts/check_ids.py +++ b/scripts/check_ids.py @@ -349,6 +349,18 @@ class Checker(object): # ---------- 单项校验 ---------- def add(self, code, severity, rel, lineno, literal, msg, hint=""): + # 位号类型识别(批 8 第一步:先落地机制,**暂不解除 docs/硬件平台/ 的语料排除**, + # 因此本规则今天对现有数字零影响)。硬件类文档里「单个大写字母 + 1~3 位数字」 + # 是 R/C/D/J/X/U/T 位号(电阻、电容、接插件、芯片、晶振、变压器),不是实体编号。 + # 刻意不含 B(V0.0 网表报告里的 B1 是真专项条目),且 fullmatch 要求无连字符, + # 所以 D-7 / N-18 / TC-206 / TC1003 这类真编号或违规形态都不受影响。 + _rx = getattr(type(self), "_desig_rx", None) + if _rx is None: + _rx = type(self)._desig_rx = re.compile(r"[RCDJXUT][0-9]{1,3}") + type(self)._desig_paths = ("docs/硬件平台/", "docs/芯片手册/") + if rel.startswith(type(self)._desig_paths) and _rx.fullmatch((literal or "").strip()): + self.stats["designator_skipped"] = self.stats.get("designator_skipped", 0) + 1 + return self.findings.append(Finding(code, severity, rel, lineno, literal, msg, hint)) self.stats["hit_%d" % code] += 1 if code == 2: diff --git a/scripts/id_registry.json b/scripts/id_registry.json index 0ba5d3ca..244812ed 100644 --- a/scripts/id_registry.json +++ b/scripts/id_registry.json @@ -1612,5 +1612,6 @@ }, "owner_docs_exclude": [ "docs/测试说明/测试文档模板规范.md" - ] + ], + "designator_rule": "硬件语料位号识别:docs/硬件平台/ 与 docs/芯片手册/ 里匹配 ^[RCDJXUT][0-9]{1,3}$(无连字符)的字面量判为**位号**,不产生任何编号结论;不含 B(V0.0 网表报告的 B1 是真专项条目),带连字符的 D-7/N-18/TC-206 不受影响。机制在 check_ids.py 的 add() 里落地(统计键 designator_skipped)。**本目录仍未纳入扫描语料**:纳入前必须先把位号从可判定比例的 refs_total 里减掉,否则约 4200 处位号会把比例分母灌水、掩盖真实变化。" }