Repository navigation
嵌入式工具箱 v1.20.0:细节深化 III(verify v1.15.0)
嵌入式工具箱 v1.20.0:细节深化 III(verify v1.15.0)
继续补细节缺口:把"值求值"扩到 C/C++ enum 常量,把补丁模式的文件级检查做对。
一、C/C++ enum 常量求值
- 文件内与
--headers头文件里的enum常量现在参与数值核验:enum { MODE_FAST = 0x2, MODE_SLOW, MODE_MAX = 0x10000 };→MODE_SLOW按 C 语义自增为 3;typedef enum { ... } name_t;(头文件常见形式)同样识别;#define优先于同名 enum 常量;某表达式算不出时,其后的隐式项跳过(不猜)。
- 效果:现代 HAL 风格"用 enum 常量写寄存器"(
TIM1->CR1 = LEVEL_HIGH;)不再进"未判定",
值超宽(E04)等检查得以生效;此前只能记"无法映射的标识符"。
二、补丁模式整文件上下文(修一类误报)
- 此前
--patch把 diff 还原成"只含新增行"的合成文本再核验——文件级检查(E06/E07/E11)
看不到未改动的时钟使能/置位,会误报(例如新增一行 USART1 写入,而开时钟在没改的那几行里)。 - 现在:磁盘上有完整文件时(按当前目录与补丁所在目录查找),文件级上下文取自整文件,
只对新增行出结论;行号仍按新文件对齐。 - 找不到完整文件时明确提示:"文件级检查看不到未改动的上下文,可能有误报;建议在仓库目录内
运行或加--no-clock-check"。
三、实测
- 九生态语料复测零回归(ESP-IDF 224/0/34/190、TI 363/0/300/63、libopencm3 366/3/287/76、
AVR 33/0/2/31、SAMD 49/0/22/27、Renesas 36/0/26/10、Silabs 309/0/218/91、NXP 3/0/1/2); - 401 项测试全过(新增 enum 常量 ×2、补丁上下文 ×2 用例);召回 229/229 保持;
正样本 55 文件 0 误报。
安装(不变)
- Claude Code:
/plugin marketplace add liujycode/embedded-toolkit后/plugin install embedded-toolkit@embedded-toolkit - 其他 Agent:
npx skills add liujycode/embedded-toolkit