diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 938b3de9..c7998c34 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -606,9 +606,11 @@ repos: # 是同一类坑);宁可在没装组件的机器上被挡一次、看清 [ENV] 那行提示,也不要一根假绿的闸。 # 本机与 CI runner 同一台;实测两份 VS 安装都自带该 exe(口径 §7 第 8 条已按实测更正)。 # 口径 / 分母 / 基线 / 盲区详解都在 docs/测试说明/主机单测覆盖率口径.md,本处只留接线事实。 + # 触发面**含门禁自身**(.pre-commit-config.yaml):不带自身就等于谁改坏这根闸的 files: + # 模式,它就再也不跑且无人察觉(同 lv-conf-sync / bsp-err 的既有做法)。 - id: test-coverage name: 主机单测覆盖率(增量拦截:已覆盖行只增不减) entry: python scripts/check_test_coverage.py language: system - files: ^(App/|Drivers/BSP/|test/host/|scripts/check_test_coverage\.py|scripts/test_coverage_baseline\.json) + files: ^(App/|Drivers/BSP/|test/host/|scripts/check_test_coverage\.py|scripts/test_coverage_baseline\.json|\.pre-commit-config\.yaml$) pass_filenames: false diff --git a/docs/测试说明/主机单测覆盖率口径.md b/docs/测试说明/主机单测覆盖率口径.md index 74503427..ae236eb0 100644 --- a/docs/测试说明/主机单测覆盖率口径.md +++ b/docs/测试说明/主机单测覆盖率口径.md @@ -192,7 +192,8 @@ 不会假报回退(首版会,已修:并集口径下子集必然变小,所以 `--module` 子集跑跳过全部回退判定)。 真实事件(某次改动真把覆盖行弄少了)仍待观察。 -落库的就是下面这份(`.pre-commit-config.yaml` 第 8 节,与文件里逐字一致,只多不少);`docs/门禁说明/README.md` +落库的就是下面这份(`.pre-commit-config.yaml` 第 8 节);`docs/门禁说明/README.md` 里只挂一行索引指向 +本文,同一事实不在两处维护: ```yaml - repo: local @@ -201,7 +202,7 @@ name: 主机单测覆盖率(增量拦截:已覆盖行只增不减) entry: python scripts/check_test_coverage.py language: system - files: '^(App/|Drivers/BSP/|test/host/|scripts/check_test_coverage\.py|scripts/test_coverage_baseline\.json)' + files: '^(App/|Drivers/BSP/|test/host/|scripts/check_test_coverage\.py|scripts/test_coverage_baseline\.json|\.pre-commit-config\.yaml$)' pass_filenames: false ``` diff --git a/docs/门禁说明/host-unit-tests.md b/docs/门禁说明/host-unit-tests.md index 5ec0d4e5..c0da9e2c 100644 --- a/docs/门禁说明/host-unit-tests.md +++ b/docs/门禁说明/host-unit-tests.md @@ -84,7 +84,9 @@ 4. **专属钩子不是唯一防线**(2026-10-24 更正,原写"没有对应钩子的模块 = 零回归",如今不成立):上表 16 个模块各有专属钩子;仓库另有 12 套(P1 新增)没有专属钩子,改坏了由 `test-coverage` **总闸**兜 住——它跑全部 28 套,并守"已覆盖行只增不减"。总闸的触发面是 `App/`、`Drivers/BSP/`、 - `test/host/`、覆盖率脚本与基线;纯文档改动不触发它(那时确实没有可回归的行为)。 + `test/host/`、覆盖率脚本与基线,**外加门禁自身**(`.pre-commit-config.yaml`)——不带上自身 + 就等于谁改坏这根闸的 `files:` 模式,它就再也不跑(同 `lv-conf-sync`/`bsp-err` 的既有做法)。 + 纯 UI/文档改动不触发它,那时确实没有可回归的行为。 5. 时序与并发不在范围:中断抢占、DMA 完成回调、临界区、真机 tick 抖动都照不到(历史上最贵的 几个坑正是这类,见 `docs/问题记录/*_Trap_Records.md`)。 6. 断言写的是"作者当时想到的分支":**行 / 函数覆盖有度量了**(`test-coverage` 总闸出