prune-boot-dead-code 规格复核(修订版)

原文件:.trae/specs/prune-boot-dead-code/spec.md、tasks.md、checklist.md(保留不动)· 复核基线 644c8fb · 2026-10-19
结论:原规格的 19 个删除目标、备份文件与冲突副本清理在当前代码中全部仍成立;唯一未完成项“编译验证”仍无法从仓库证实;“行为零变化”一项因之后 10 个功能提交已不再适用;新增死代码与注释漂移需要一轮续做。详见主报告 GD32E50X_BOOT_专家评审_2026-10-19.html。

逐条复核

原条目结论2026-10-19 复核(基于 644c8fb)状态
A删除 OTAHandler::ota_stateota_time全仓 grep 0 命中仍成立
B删除 handleOTAMessage 旧接口0 命中;链路统一走 handleLinkMessage仍成立
C删除 sendDATA_ACK 两个重载0 命中仍成立
D删除 can_dma_init 占位0 命中;canfd_config 中无调用仍成立
E删除 BootPlatform 及其 4 个预留接口0 命中仍成立
F删除 SPI0_IRQHandler 空壳 ISR仅启动文件 [WEAK] 处出现;SpiOta.cpp:725-727 仍禁用 SPI0 中断,未使能 SPI0_IRQn仍成立
G删除 .bak 备份与 RTE 冲突副本仓库中已不存在仍成立
HC 包装层审计(保留 delay_1ms/1us、system_soft_reset、EXTI/CAN IRQ)保留项仍有调用方;spi_ota_* 仅剩类型名 spi_ota_frame_type_t仍成立
I注释一致性(已删符号 0 命中)已删符号仍 0 命中;但出现新的注释漂移(见 R39)部分退化
J行为零变化该次提交(3377a2e)之后又有 10 个功能提交,行为已演进,此项仅对当时快照有意义不再适用
K/G2.2编译验证(当时未执行)仓库仍无 CI 与构建产物,无法从仓库证实;且构建依赖仓库外 spi_link(R31),克隆后无法独立编译仍未完成
L“不漏不错”自检当时范围内成立;之后新增 branchToApplication(未使用)、HW_*SyncManChannel/HW_SetLed 等死代码(R30、R39)需续做

复核方法

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 未使能

建议续做(prune 第二轮)

目标位置说明
branchToApplicationGD32E50X_BOOT/sys/OTA.cpp:25-37naked 跳转函数,无调用方
HW_Enable/DisableSyncManChannel、HW_SetLed、HW_Reset/SetALEventMask、HW_GetSyncMan、s_alEventMaskGD32E50X_BOOT/comm/ecat/boot_ecat_hw.cpp:649-665 等SSC 5.11 未调用,且其中两处写错寄存器
escResetForJump(被注释调用)GD32E50X_BOOT/comm/ecat/boot_ecat_hw.cpp:511,552应先决定恢复还是删除(见主报告 R15)
注释漂移ota_layout.h:5、config.h:19、OTA.cpp:138、OTA.cpp:957-958路径、“见上方注释块”、配置字数量、过时行号
编译验证—先把 spi_link 纳入仓库,再以 CI 跑 cbuild 完成原 K/G2.2 项