Files
STM32F4-Base/docs/代码规范
wandering1 744a1cb086 ci(gates): 接线 test-coverage 覆盖率总闸(FAIL 语义),并修三处已成假话的门禁文档
用户裁定 2026-10-24:缺 mscoverage 组件时**失败**,不做 skip。于是 P1 之后那个
"钩子只挂 16/28 套"的缺口关闭了。

为什么挂这一根而不是补 12 根 per-module 钩子:本闸跑**全部 28 套**,并且守
"已覆盖行只增不减"的基线台账。这是 per-module 钩子结构性做不到的——删掉一套
测试,它那根钩子只会因为"没有文件要检查"而静默跳过(Skipped 不等于失败)。
实测接线代价:45 s(28 套,含 28 次 MSVC 编译与插桩运行)。

FAIL 语义已按本仓"合成自证"的纪律验证(不是只测绿的那一半):把
DTU_MS_COVERAGE 指到一个不存在的文件 → 钩子 Failed、脚本退出码 2、并打印可
执行的 [ENV] 提示(说明该 exe 装在哪、怎么覆盖)。脚本对显式环境变量刻意
"不做自动探测回退",所以指错会被点名,而不是悄悄换一份工具跑出另一本账。

顺手修掉三条**现在已经不成立**的文档说法(门禁文档最贵的就是骗人):
- 口径 §7 第 8 条:原写"只有 BuildTools 且没勾代码覆盖率工具的机器会退出码 2"。
  实测本机 Community 18.10 与 BuildTools 18.9 **两份安装都自带**该 exe(mtime
  2026-09-15 02:30 / 2026-09-05 16:17,都是各自安装当日,不是后来补勾)→ VS 18
  的 BuildTools 默认就带它。真实风险面只剩:裸 MSVC 无 VS 的机器、环境变量指错、
  以及靠 PATH 兜底的环境。
- 门禁说明 host-unit-tests.md 盲区第 4 条:原写"没有对应钩子的模块 = 零回归"——
  如今 12 套新模块由总闸兜住,这句话已经不成立,改成两种口径并写清触发面。
- 同篇第 6 条:原写"无覆盖率统计"。行/函数覆盖**已有**度量(本闸出 Cobertura 并
  守基线),仍无的只是分支覆盖——那是用户裁定 2026-10-23 记下的**已接受缺口**,
  不是待办,改口时把这个区分写清楚。

钩子计数同步(新增 1 根 → 声明 40 根 / pre-commit 阶段 39 根 + commit-msg 的
gitlint,已用脚本核对,不是手数):AGENTS.md(总数、枚举、索引表)、
pre-commit使用说明.md(66 / 91 / 234 三处,含清点日期)、门禁说明 README
(正文与索引标题,另加一行索引指向口径文档——23 篇不变,同一事实不在两处维护)、
门禁说明 gitlint.md(--no-verify 跳过的"其它 38 个"→39)、并行任务工作树方案。

自查:end-of-file-fixer 与 trailing-whitespace 复跑 Passed(首轮 --all-files 只
因末行空行红过一次,已按钩子自身规范化);doc-links --all --sections-strict 通过
(178 个文档);id-check --strict 零台账外新账;8 个改动文件 U+FFFD = 0、无 CRLF。
零代码改动,故未跑 @build。未 push。
2026-10-24 07:50:53 +08:00
..