工程(注释标记词换代·oracle→判据出处): 用户 2026-11-07 令——判据出处注记的标记词改用项目已有中文名,避免 Oracle 被读成数据库。注释格式句、机检正则、标识符、卡片与登记同步换代;零行为改动。

改动面 112 文件 572+/572-:game/tests/** 与 game/probe/** 共 106 件 545 行 `# oracle:`→`# 判据出处:`;tools/capability_audit.py 正则字面量换中文+ORACLE_*→CRITERION_*/check_oracle_markers→check_criterion_markers/oracle_marked(flagged)→criterion_* 共 11 行;test-conventions.md:119 格式句+:155 措辞;待办清单与需求卡片-QA覆盖余量收口批各 1 处字面量;coverage_enum.py:21 与 camp_scene_layout_test.gd:101 旁支措辞;ui_click_probe.gd 对拍局部变量 oracle→expected 7 处;auto_player.gd 三处 safe_set 真值措辞。不动:历史审计报告两份、test-oracle-anchor 分支名、git 史、生成日志;指针格式/扫描面/判红条件/验收义务全不变。

读数(区内实跑):改前 capability_audit --strict「417 注记函数·红项 0」→改后「417 判据出处注记函数·红项 0」exit=0;新标记 545 行/106 文件,现行义务面 oracle 残留 0(在册沿革除外);diff 自检 game/ 非注释新增行仅 6 行且全在 ui_click_probe.gd 的 expected 变量段;112 改动文件 CRLF=0;py_compile tools/capability_audit.py OK;--docs exit=0【验收通过】无新增红;--gates exit=0(静态扫描绿、闸壳 bash -n ×13 失败 0)。
This commit is contained in:
DKChan committed 2026-11-07 07:11:15 +08:00
1 parent 166114e094
commit 9f21236f80
112 files changed
+572 -572

No files matched your search

+11 -11
View File
@@ -16,7 +16,7 @@ r"""capability_audit.py — 能力清单、覆盖域表与 GDD 纯度机检(
对上能力表里的行名;部分/未覆盖行的缺口非空且指待办清单。
G 判据出处随测注记(test-conventions §8.3):game/tests/** 与 game/probe/** 内每个验证函数
(函数体含 check(/check_quiet(/_problems.append(/push_error( 判定调用,定义行与 _check( 前缀除外)
须带 ≥1 条 `# oracle: <design/相对路径>:<行号> <判据一句>` 注记;指针指向存在的设计文档行且不出
须带 ≥1 条 `# 判据出处: <design/相对路径>:<行号> <判据一句>` 注记;指针指向存在的设计文档行且不出
design/ 全域。扫描面=game/tests/**+game/probe/**(sim/ 不进——测量面直构惯例)。
条件闸行豁免(代表用例含「条件闸」字样)不参与 D/E。
@@ -337,13 +337,13 @@ def check_coverage(cov_tables, names):
red(README.relative_to(REPO), 1, "覆盖域表", "%s 未在覆盖域表登记" % doc)
ORACLE_RE = re.compile(r"^#\s*oracle:\s*(\S+\.md):(\d+)\s+\S")
CRITERION_RE = re.compile(r"^#\s*判据出处:\s*(\S+\.md):(\d+)\s+\S")
VERDICT_RE = re.compile(r"(?<![_\w])check(?:_quiet)?\(|_problems\.append\(|push_error\(")
ORACLE_FUNC_RE = re.compile(r"^(?:static\s+)?func\s+([A-Za-z_]\w*)")
CRITERION_FUNC_RE = re.compile(r"^(?:static\s+)?func\s+([A-Za-z_]\w*)")
def check_oracle_markers():
"""判据出处随测注记机检(G 道):验证函数须带 # oracle 注记,指针可核。"""
def check_criterion_markers():
"""判据出处随测注记机检(G 道):验证函数须带 # 判据出处: 注记,指针可核。"""
files = sorted((REPO / "game" / "tests").rglob("*.gd")) + sorted((REPO / "game" / "probe").glob("*.gd"))
files = [p for p in files if p.name != "test_kit.gd" and p.name != "run_all.gd"]
if not files:
@@ -355,7 +355,7 @@ def check_oracle_markers():
lines = read(p).splitlines()
starts = []
for i, ln in enumerate(lines):
m = ORACLE_FUNC_RE.match(ln)
m = CRITERION_FUNC_RE.match(ln)
if m:
starts.append((m.group(1), i))
ranges = []
@@ -379,11 +379,11 @@ def check_oracle_markers():
for ln in body:
st = ln.strip()
if st.startswith("#"):
m = ORACLE_RE.match(st)
m = CRITERION_RE.match(st)
if m:
oks.append(m)
if not oks:
red(rel, s0 + 1, "判据出处注记", "验证函数 %s 缺 # oracle 注记" % name)
red(rel, s0 + 1, "判据出处注记", "验证函数 %s 缺 # 判据出处: 注记" % name)
flagged += 1
continue
marked += 1
@@ -421,16 +421,16 @@ def main():
names, referenced = check_capability_rows(cap_tables, suites, funcs, cards_corpus())
missing_suites = check_suite_coverage(suites, referenced)
check_coverage(cov_tables, names)
oracle_marked, oracle_flagged = check_oracle_markers()
criterion_marked, criterion_flagged = check_criterion_markers()
if selfcheck:
print("capability_audit 扫描面异常:")
for s in selfcheck:
print(" ! " + s)
print("| ── 能力审计:系统文档 %d 篇 · 能力行 %d · 套件 %d · 覆盖域表 %d 行 · 链断套件 %d · oracle 注记函数 %d · 红项 %d"
print("| ── 能力审计:系统文档 %d 篇 · 能力行 %d · 套件 %d · 覆盖域表 %d 行 · 链断套件 %d · 判据出处注记函数 %d · 红项 %d"
% (len(system_docs()), len(names), len(suites),
sum(len(r) for _, r in cov_tables), len(missing_suites), oracle_marked, len(reds)))
sum(len(r) for _, r in cov_tables), len(missing_suites), criterion_marked, len(reds)))
for path, line, check, msg in reds:
print(" ✗ [%s] %s:%d %s" % (check, path, line, msg))
if selfcheck:
+1 -1
View File
@@ -18,7 +18,7 @@ r"""coverage_enum.py — 本体枚举器(游戏内容↔测试验证对账,B
比对=差集:本体存在、验证零关联=缺口清单,按类别分组、标首见批次(本工具生成时间)。
诚实边界(契约 §7 在案):grep 关联有假阳假阴——断言测了实体但文本没带 id=假缺口(人工核销
兜);文本带 id 但断言弱=假覆盖(oracle 改造堵)。推荐约定「断言文本含被测实体 id」提高精度,
兜);文本带 id 但断言弱=假覆盖(判据改造堵)。推荐约定「断言文本含被测实体 id」提高精度,
不立规约。交互点(按钮/物件被点过没有)不在本工具判据内——那归探针真输入覆盖登记。
用法: python tools/coverage_enum.py [--out <路径>]