docs(review): 专家评审 2026-10-19
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -0,0 +1,41 @@
|
|||||||
|
<!DOCTYPE html><html lang="zh-CN"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>prune-boot-dead-code 规格复核 2026-10-19</title><style>
|
||||||
|
body{font-family:-apple-system,"PingFang SC","Microsoft YaHei",sans-serif;margin:0;background:#f5f6f8;color:#1f2328;line-height:1.6}
|
||||||
|
.wrap{max-width:1180px;margin:0 auto;padding:28px 24px 60px}
|
||||||
|
h1{font-size:26px;margin:0 0 6px}h2{font-size:20px;margin:36px 0 12px;padding-bottom:6px;border-bottom:2px solid #d0d7de}
|
||||||
|
h3{font-size:16px;margin:20px 0 8px}
|
||||||
|
.meta{color:#57606a;font-size:13px}
|
||||||
|
table{border-collapse:collapse;width:100%;background:#fff;font-size:13px;margin:8px 0}
|
||||||
|
th,td{border:1px solid #d0d7de;padding:6px 8px;vertical-align:top;text-align:left}
|
||||||
|
th{background:#eef1f4;white-space:nowrap}
|
||||||
|
code,.loc{font-family:Consolas,Menlo,monospace;font-size:12px;word-break:break-all}
|
||||||
|
.sev{display:inline-block;padding:1px 8px;border-radius:10px;color:#fff;font-weight:600;font-size:12px;white-space:nowrap}
|
||||||
|
.s0{background:#a40e26}.s1{background:#d1242f}.s2{background:#bf8700}.s3{background:#1f6feb}
|
||||||
|
.card{background:#fff;border:1px solid #d0d7de;border-radius:8px;padding:14px 18px;margin:10px 0}
|
||||||
|
.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
|
||||||
|
.kpi{background:#fff;border:1px solid #d0d7de;border-radius:8px;padding:12px;text-align:center}
|
||||||
|
.kpi b{display:block;font-size:26px}
|
||||||
|
pre{background:#0d1117;color:#e6edf3;padding:14px;border-radius:8px;overflow:auto;font-size:12px;line-height:1.45}
|
||||||
|
.ok{color:#1a7f37;font-weight:600}.no{color:#d1242f;font-weight:600}.warn{color:#9a6700;font-weight:600}
|
||||||
|
</style></head><body><div class="wrap">
|
||||||
|
<h1>prune-boot-dead-code 规格复核(修订版)</h1>
|
||||||
|
<div class="meta">原文件:.trae/specs/prune-boot-dead-code/spec.md、tasks.md、checklist.md(保留不动)· 复核基线 644c8fb · 2026-10-19</div>
|
||||||
|
<div class="card">结论:原规格的 19 个删除目标、备份文件与冲突副本清理在当前代码中<b class="ok">全部仍成立</b>;唯一未完成项“编译验证”<b class="no">仍无法从仓库证实</b>;“行为零变化”一项因之后 10 个功能提交已不再适用;新增死代码与注释漂移需要一轮续做。详见主报告
|
||||||
|
<a href="GD32E50X_BOOT_专家评审_2026-10-19.html#R39">GD32E50X_BOOT_专家评审_2026-10-19.html</a>。</div>
|
||||||
|
<h2>逐条复核</h2><table><tr><th>原条目</th><th>结论</th><th>2026-10-19 复核(基于 644c8fb)</th><th>状态</th></tr><tr><td>A</td><td>删除 OTAHandler::ota_stateota_time</td><td>全仓 grep 0 命中</td><td class="ok">仍成立</td></tr><tr><td>B</td><td>删除 handleOTAMessage 旧接口</td><td>0 命中;链路统一走 handleLinkMessage</td><td class="ok">仍成立</td></tr><tr><td>C</td><td>删除 sendDATA_ACK 两个重载</td><td>0 命中</td><td class="ok">仍成立</td></tr><tr><td>D</td><td>删除 can_dma_init 占位</td><td>0 命中;canfd_config 中无调用</td><td class="ok">仍成立</td></tr><tr><td>E</td><td>删除 BootPlatform 及其 4 个预留接口</td><td>0 命中</td><td class="ok">仍成立</td></tr><tr><td>F</td><td>删除 SPI0_IRQHandler 空壳 ISR</td><td>仅启动文件 [WEAK] 处出现;SpiOta.cpp:725-727 仍禁用 SPI0 中断,未使能 SPI0_IRQn</td><td class="ok">仍成立</td></tr><tr><td>G</td><td>删除 .bak 备份与 RTE 冲突副本</td><td>仓库中已不存在</td><td class="ok">仍成立</td></tr><tr><td>H</td><td>C 包装层审计(保留 delay_1ms/1us、system_soft_reset、EXTI/CAN IRQ)</td><td>保留项仍有调用方;spi_ota_* 仅剩类型名 spi_ota_frame_type_t</td><td class="ok">仍成立</td></tr><tr><td>I</td><td>注释一致性(已删符号 0 命中)</td><td>已删符号仍 0 命中;但出现新的注释漂移(见 R39)</td><td class="warn">部分退化</td></tr><tr><td>J</td><td>行为零变化</td><td>该次提交(3377a2e)之后又有 10 个功能提交,行为已演进,此项仅对当时快照有意义</td><td class="warn">不再适用</td></tr><tr><td>K/G2.2</td><td>编译验证(当时未执行)</td><td>仓库仍无 CI 与构建产物,无法从仓库证实;且构建依赖仓库外 spi_link(R31),克隆后无法独立编译</td><td class="no">仍未完成</td></tr><tr><td>L</td><td>“不漏不错”自检</td><td>当时范围内成立;之后新增 branchToApplication(未使用)、HW_*SyncManChannel/HW_SetLed 等死代码(R30、R39)</td><td class="warn">需续做</td></tr></table>
|
||||||
|
<h2>复核方法</h2>
|
||||||
|
<pre>for s in ota_stateota_time handleOTAMessage sendDATA_ACK can_dma_init get_reset_cause unused_pin_init \
|
||||||
|
print_system_clock_info scanAppFlashContent getResetCause initUnusedPins printSystemClockInfo \
|
||||||
|
BootPlatform onSpiInterrupt spi_ota_irq_handler spi_ota_cs_exti_handler systick_config delay_1s \
|
||||||
|
delay_decrement USART0_init enter_deep_sleep check_sleep; do
|
||||||
|
grep -rn "$s" --include=*.c --include=*.cpp --include=*.h GD32E50X_BOOT/ # 结果均为 0
|
||||||
|
done
|
||||||
|
grep -rn SPI0_IRQHandler GD32E50X_BOOT/ # 仅 startup_gd32e50x_cl.s [WEAK]
|
||||||
|
grep -n nvic_irq_enable GD32E50X_BOOT/device/SpiOta.cpp # 仅 EXTI10_15_IRQn,SPI0 未使能</pre>
|
||||||
|
<h2>建议续做(prune 第二轮)</h2>
|
||||||
|
<table><tr><th>目标</th><th>位置</th><th>说明</th></tr>
|
||||||
|
<tr><td>branchToApplication</td><td class="loc">GD32E50X_BOOT/sys/OTA.cpp:25-37</td><td>naked 跳转函数,无调用方</td></tr>
|
||||||
|
<tr><td>HW_Enable/DisableSyncManChannel、HW_SetLed、HW_Reset/SetALEventMask、HW_GetSyncMan、s_alEventMask</td><td class="loc">GD32E50X_BOOT/comm/ecat/boot_ecat_hw.cpp:649-665 等</td><td>SSC 5.11 未调用,且其中两处写错寄存器</td></tr>
|
||||||
|
<tr><td>escResetForJump(被注释调用)</td><td class="loc">GD32E50X_BOOT/comm/ecat/boot_ecat_hw.cpp:511,552</td><td>应先决定恢复还是删除(见主报告 R15)</td></tr>
|
||||||
|
<tr><td>注释漂移</td><td class="loc">ota_layout.h:5、config.h:19、OTA.cpp:138、OTA.cpp:957-958</td><td>路径、“见上方注释块”、配置字数量、过时行号</td></tr>
|
||||||
|
<tr><td>编译验证</td><td>—</td><td>先把 spi_link 纳入仓库,再以 CI 跑 cbuild 完成原 K/G2.2 项</td></tr></table>
|
||||||
|
</div></body></html>
|
||||||
Reference in New Issue
Block a user