docs(收口): 批 1 台架记录与门禁/产物分家口径落档(道C 文案兑现)
- test/board/ch395f_test.h:f3 轮台架记录追加——VERDICT PASS, task stall 468→14(net 类 431→0,掩码复活实锤),余 13 条为 netTask 自挂起前喂一次 vs 精确匹配判据的语义打架 + 1 条 uiTask 瞬态 + 1 条设计内 P2 留痕;lead 裁决不放宽超集判定 - 主机单测覆盖率口径.md:中间产物路径 L80 与坑 12 重写为 %TEMP%/dtu_host/<工作树哈希>/ 分家 + runs 独占(adabb6a 落地, 旧固定共享名作废;判据正文指向 harness 顶部) - 并行任务工作树方案.md §5 表:单测产物一行——不需要锁但必须 按树分家(对照 build/bench 真独占) - 门禁说明/cubemx-survival.md §6:新增第 7 条「基线漏项=静默不检」 (net-msgq-adopt 实证,--write 后抽查新增条目) - 门禁说明/id-check.md §5:拦下过真事追加——P1-10 注释裸编号被 校验 6 拦(紧邻写法在 C 注释同样生效)
This commit is contained in:
@@ -77,7 +77,8 @@
|
||||
编译失败、XML 缺失)/ `3` 用法错误。全量实测约 **67 s**(33 套 × 编译 + 插桩运行;
|
||||
2026-10-25 实测;16 套时约 25 s、28 套时约 45 s,套件数涨了耗时就涨,别拿旧数当预算)。
|
||||
|
||||
中间产物(exe / PDB / Cobertura XML)一律落 `%TEMP%\dtu_test_cov\<模块>`,**不进仓库**,
|
||||
中间产物(exe / PDB / Cobertura XML)一律落 `%TEMP%\dtu_host\<工作树哈希>\coverage\<模块>`
|
||||
(与主机单测同根、按树分家,2026-10-25 起;改根用 `--work-dir` 或 `DTU_HOST_BUILD`),**不进仓库**,
|
||||
所以本脚本不需要新增任何 `.gitignore` 规则。
|
||||
|
||||
## 4. 统计面:进什么、不进什么
|
||||
@@ -673,11 +674,13 @@ uint16_t ch395f_link_change_count(void);
|
||||
既有三套的复位面与断言面一字不动、新状态也不会场景间残留。改完必跑存量回归(本批 net_listener 34/34、
|
||||
net_events 34/34、net_pending 43/43、net_select 22/22;nand_port 149/149、lftpd_io 33/33、vol_lock 33/33、
|
||||
soe 32/32、cfg_file 151/151)。
|
||||
12. **覆盖率中间产物根目录是固定共享的** `%TEMP%/dtu_test_cov/<模块名>`:并行期每人只跑 `--module <自己模块>`
|
||||
(子目录互不冲突);**绝不加 `--clean`**(它 `rmtree` 整棵共享根,会把队友正在编译的目录连根删掉,
|
||||
表现为"莫名其妙的编译失败、重跑就好");**不带 `--module` 的全量闸只在收口时由 Lead 单跑**。
|
||||
另注:逐套 `run_unit_test.py` 写的是固定 `tempfile/<suite>_obj` 与 `<suite>.exe`,所以**同一套件同一时刻
|
||||
只能一人跑**(不同套件互不干扰)。
|
||||
12. **产物目录已按工作树分家(2026-10-25,adabb6a)**:主机单测与覆盖率的中间产物统一落
|
||||
`%TEMP%/dtu_host/<仓库根 sha1 前 10 位>/`,且**每次运行独占 `runs/<pid>-<纳秒>/` 子目录**
|
||||
(obj+exe 在内,finally 删除;`DTU_HOST_BUILD` 改根、`DTU_HOST_BUILD_KEEP=1` 保留现场)。
|
||||
并行期**不再需要**"每人只跑 `--module` 自己模块",同树并发跑同名套件也不再撞 obj/exe;
|
||||
旧固定共享名 `%TEMP%/dtu_test_cov/` 与固定 `<suite>_obj`/`<suite>.exe` 一并作废,`--clean`
|
||||
改为只清本工作树根。**判据正文** = `test/host/common/unit_test_harness.py` 顶部「产物目录归属」。
|
||||
⚠ 加锁**不是**解法:这里没有真独占资源,只是名字撞——加锁等于把 L0.5 全局串行化。
|
||||
|
||||
**两处口径问答(免得下次重新推导)**:① 子集数不能和并集基线直接比 —— `soe_store` 单套对
|
||||
`App/log/soe_rec.c` 只到 78/87(89.7%),而台账是全部 33 套的**并集** 81/87(93.1%);本批
|
||||
|
||||
@@ -121,6 +121,7 @@ D:/Code/DTU Code/
|
||||
| ------ | -------------------------------------------- | ----------- |
|
||||
| `new` | 建分支 + 工作树 + junction + 台账 | 可并行 |
|
||||
| 编码 | 在新空间里改代码 | 可并行 |
|
||||
| 单测产物 | `%TEMP%\dtu_host\<工作树哈希>\` 分家 + 每跑独占 `runs\<pid>-<ns>\` | **不需要锁,但必须按树分家**(旧固定共享名跨树互踩:A 树可能执行 B 树编出的同名 exe,summary 相同不可辨;build/bench 是真独占,继续用锁) |
|
||||
| 门禁 | `scripts/ci_local.py`(L0 + L0.5,纯软件) | **可并行** |
|
||||
| 构建 | `@build`(UV4 增量,需持 `build` 锁) | **必须串行** |
|
||||
| 台架 | `@test` / 板级套件(需先持台架锁,见 §7) | **必须串行** |
|
||||
|
||||
@@ -62,6 +62,12 @@ CubeMX 重生成存活审计.......Failed
|
||||
5. 基线文件是 `.cubemx_survival_baseline.json`(仓库根):它若被顺手 `--write`,门禁当场失效且看不出来。
|
||||
**`--write` 必须与"确认过的改动"写在同一个提交里并说明。**
|
||||
6. 它不判断定制**是否仍然正确**,只判断"还在不在原来的位置"。
|
||||
7. **基线漏项 = 静默不检**(2026-10-25 实证):`--check` 只比对基线里已登记的条目——一条定制
|
||||
若从未进过基线,检查面再全也不会报它。`docs/任务规划/测试与架构专项.md` P1-10 返工时
|
||||
`--write` 顺带补出了原本缺失的
|
||||
`net-msgq-adopt`(`Src/freertos.c` RTOS_QUEUES 区须含 `net_msg_queue_adopt`),该条目此前
|
||||
处于"不存在于基线 → 永不检查"态。**新增标记区外定制时,登记必须与代码同提交**(同 §5 的
|
||||
`--write` 同提交纪律),收口时值得跑一次"`--write` 后看 diff 有没有**新增**条目"的抽查。
|
||||
|
||||
- 标记区**外**的存量只给 WARN(本仓现存:`Src/stm32f4xx_it.c` 的 3 个 Fault 处理函数、
|
||||
`Src/freertos.c` 的栈注释)——CubeMX 不保护它们,只能人工盯。
|
||||
|
||||
@@ -65,6 +65,10 @@
|
||||
|
||||
## 5. 好处
|
||||
|
||||
- **拦下过真事(2026-10-25 追加)**:`docs/任务规划/测试与架构专项.md` P1-10 的返工提交被
|
||||
**校验 6** 拦下 4 处——C 注释里裸写编号、未紧邻属主文档名;改成「条目属主 `docs/任务规划/测试与架构专项.md` P1-10」即过。
|
||||
实证**紧邻写法在代码注释里同样是硬约束**,不是只约束 Markdown。
|
||||
|
||||
- 把"编号卫生"从人脑记忆变成机器判定:销项只做一半、引用写错文档、自造号,都会在提交时被点名。
|
||||
- 台账机制让存量不阻塞日常工作,同时"无台账外新账"这句话是可验证的承诺。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user