From 2c3939494d16ae42c4b1bc4ecb717619239d9530 Mon Sep 17 00:00:00 2001 From: Wanderingss <1624155937@qq.com> Date: Sat, 24 Oct 2026 00:11:20 +0800 Subject: [PATCH] =?UTF-8?q?docs(=E6=B5=8B=E8=AF=95):=20=E6=9B=B4=E6=AD=A3?= =?UTF-8?q?=E8=A6=86=E7=9B=96=E7=8E=87=E5=8F=A3=E5=BE=84=20=C2=A78=20?= =?UTF-8?q?=E7=9A=84=E6=8E=A5=E7=BA=BF=E7=90=86=E7=94=B1=E2=80=94=E2=80=94?= =?UTF-8?q?=E7=8E=B0=E5=9C=A8=E7=BC=BA=E5=8F=A3=E6=8D=A2=E4=BA=86=E6=96=B9?= =?UTF-8?q?=E5=90=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit P1 合入后本仓主机单测从 16 套涨到 28 套,而 pre-commit 只挂 16 个 -unit-test 钩子。§8 理由 1 写的是"再加一份全量插桩等于同一件事做两遍"——这句话在只有 16 套时成立,现在**反了**:P1 新增的 12 套(net_cfg / ftp_cfg / prot_set_store / task_prof / lftpd_io / net_select / net_listener / net_pending / net_events / lftpd_inet / lftpd / iec104_serv)目前只被 ci_local 的 L0.5(自动发现)与 check_test_coverage.py 跑到,**不在提交钩子里**。 仍然不擅自接线,理由只剩 §8 第 2 条那一个,而且它是要用户裁定的:挂之前必须 先定"缺 VS 可选组件(mscoverage)时 skip 还是 FAIL"——选 skip 就是造一根会 静默失效的门禁(与 AGENTS 里"pre-commit 4.x 移除了 always: true、必须靠 files: 覆盖"是同一类坑);选 FAIL 则任何没装该组件的机器都提交不了。与其悄悄挂一根 可能假绿的钩子,不如把缺口写在文档里。 同时更新 §8 下一步第 1 条的过期数字:P1 已吃完(files_tested 19 → 32), 下一步是 P2 的 5 个文件 / 2,226 行;"把已有 19 个文件从 88% 推到 95%"改成按 当前实测口径表述。核对:该文档 U+FFFD=0、无 CRLF,doc-links 钩子 Passed。 --- docs/测试说明/主机单测覆盖率口径.md | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) 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)。要重开这个裁定,前提是能同时给出"两份分母怎么对齐"的答案,否则只是多一本对不上的账。