Skip to content

嵌入式工具箱 v1.20.0:细节深化 III(verify v1.15.0)

Choose a tag to compare

@liujycode liujycode released this 17 Oct 10:35
· 20 commits to main since this release

嵌入式工具箱 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