加 CubeMX 重生成存活审计:防标记区外定制被静默覆盖
背景:.ioc 的 KeepUserCode 只保护 USER CODE 标记区,标记之外的手工改动 重生成即被覆盖,且多数不报编译错(2026-09-29 实测一次覆盖 4 处,含 HardFault_Handler 崩溃采集被打回空 while(1)、两个 FreeRTOS 加固宏被删)。 新增 scripts/check_cubemx_survival.py: - 16 项易失清单(IWDG 延后启动 / 崩溃采集 / 栈溢出检测 / 堆失败钩子 / 断言改造 / 看门狗模块与工程挂载 / 复位原因锁存 / HAL 驱动与使能 / .ioc 关键项),断言前剥掉 C 注释防误报 - 哈希基线漂移检测(.cubemx_survival_baseline.json),--write 重建 - 标记区外存量以 WARN 提示(3 个 Fault 处理函数、栈注释) 已挂 pre-commit cubemx-survival 钩子(改动 .ioc / Src / Inc / task_watchdog / .uvprojx 时触发)。 文档:看门狗设计说明 §10.2 新增"重生成不丢的三层手段"方法论 (L1 写 .ioc > L2 搬进 USER CODE 区(可自造标记区)> L3 审计兜底) 及 .ioc / USER CODE 区可用位置 / 存量清单三张对照表;AGENTS.md 平台约束 新增该规则;pre-commit 使用说明 §2.12 新增钩子详解。 门禁:build 0 错误 0 警告;pre-commit 全通过。
This commit is contained in:
@@ -136,3 +136,15 @@ repos:
|
||||
language: system
|
||||
files: ^(docs/内存管理/.*\.md|scripts/check_mem_numbers\.py|App/.*\.c|App/.*\.h|Src/.*\.c|Inc/.*\.h)$
|
||||
pass_filenames: false
|
||||
|
||||
# 6) CubeMX 重生成存活审计(2026-09-29 加)
|
||||
# 背景:.ioc 的 KeepUserCode 只保护 USER CODE 标记区;标记之外的手工改动
|
||||
# 重生成即被覆盖,且多数不报编译错(崩溃采集被打回空 while(1)、加固宏被删)。
|
||||
# 本钩子验证"重生成易失清单"各项是否仍在预期位置,并对关键区做哈希漂移检测。
|
||||
# 范围:仅在这些易失文件变动时触发(改动 .ioc 或生成文件本身就值得复核)。
|
||||
- id: cubemx-survival
|
||||
name: CubeMX 重生成存活审计
|
||||
entry: python scripts/check_cubemx_survival.py --check
|
||||
language: system
|
||||
files: ^(STM32F407-Demo\.ioc|Src/.*\.(c|h)|Inc/.*\.h|App/util/task_watchdog\.(c|h)|MDK-ARM/.*\.uvprojx|scripts/check_cubemx_survival\.py)$
|
||||
pass_filenames: false
|
||||
|
||||
Reference in New Issue
Block a user