diff --git a/docs/测试说明/主机单测覆盖率口径.md b/docs/测试说明/主机单测覆盖率口径.md index 4fb83229..a3b45162 100644 --- a/docs/测试说明/主机单测覆盖率口径.md +++ b/docs/测试说明/主机单测覆盖率口径.md @@ -163,8 +163,17 @@ **未挂 pre-commit**,三条理由(不是忘了): -1. 39 个钩子里已有 16 个主机单测钩子(每套各编译各跑),再加一份"全量插桩"是**同一件事做两遍**, - 还要多约 25 s; +1. 39 个钩子里已有 16 个主机单测钩子(每套各编译各跑),再加一份"全量插桩"在**当时**确实是同一 + 件事做两遍,还要多约 25 s; + + ⚠ **这条理由的事实基础已变(2026-10-24,P1 落地后)**:本仓现有 + `test/host/**/run_unit_test.py` **28 套**,而钩子只挂 **16 套**——另外 12 套(P1 新增的 + 全部模块)目前只被 `ci_local.py`(L0.5 自动发现)与 `check_test_coverage.py` 跑到, + **不在提交钩子里**。所以现状不是"重复两遍",而是**有一遍没做**。 + + 仍未挂,只剩第 2 条那一个原因:必须先定"缺 VS 组件时 skip 还是 FAIL"——那是留给用户裁定的事 + (选 skip 等于造一根会静默失效的门禁,与 `always: true 已失效` 那条同类坑)。与其悄悄挂一根 + 可能假绿的钩子,不如把缺口写在这里。 2. 它依赖 VS 可选组件(§7 第 8 条)。挂之前必须先定"缺组件时 skip 还是 FAIL"—— 选 skip 就是一个会静默失效的门禁(与 `AGENTS.md` 里那条 `always: true 已失效、必须靠 files: 覆盖` 是同一类坑); @@ -189,8 +198,10 @@ **下一步(按性价比排序)**: -1. **扩大覆盖面**:按 **§9 的建桩优先级清单**吃(P1 13 个 .c / 2,617 行 → P2 5 个 / 2,226 行; - P3 的 29 个 / 4,814 行**刻意不做**并已写明理由)。比把已有 19 个文件从 88% 推到 95% 值钱得多。 +1. **扩大覆盖面**:按 **§9 的建桩优先级清单**吃。**P1 已吃完**(2026-10-24 合入主干,13 个 .c 全部 + 进分母,`files_tested` 19 → 32);下一步是 **P2 的 5 个 / 2,226 行**(`net_socket.c` 1,251 行需分片、 + `sys_log_mcu`+`cfg_file_store_mcu`+`soe_store` 共用一套假 FatFs、`console_log`)。P3 的 29 个 / + 4,814 行**刻意不做**并已写明理由。比把已覆盖文件从 85% 推到 95% 值钱得多。 2. **不做**:第二条覆盖率通道(gcc/WSL、`dotnet-coverage`、OpenCppCoverage 三条路都不走,用户裁定 2026-10-23)。要重开这个裁定,前提是能同时给出"两份分母怎么对齐"的答案,否则只是多一本对不上的账。