当我运行静态分析工具时,我遇到与以下代码的 cmsis_armcc.h 文件中未初始化变量相关的安全问题:
__STATIC_INLINE uint32_t __get_CONTROL(void)
{
register uint32_t __regControl __ASM("control");
return(__regControl);
}
问题在于 cmsis_armcc.h 在 Keil IDE 中是只读文件。有什么方法可以解决这个问题吗?我将不胜感激任何建议。预先感谢您!
解决方案包括:
在静态分析中将all第三方提供的文件设置为忽略或提供存根是正常的。 它们通常包括在用户代码中不明智的系统级代码,并且经常使用分析器可能无法识别的特定于平台的编译器扩展和指令。 如果这是您的分析器遇到问题的唯一系统文件,我会感到惊讶,因此您需要一个全局解决方案。
对于第一个选项,将真实文件复制到静态分析特定头路径,并根据需要进行修改。 对于第二个,这将特定于您的工具,如果为第一个提供系统包含路径,则方法也是如此。
考虑到这些系统文件中的许多都是深度嵌套且数量众多的,我倾向于第一个选项,但此代码中可能存在无法分析器的语法和扩展。 这通常可以通过定义混淆代码的宏来解决,以便在分析之前由预处理器用良性的东西替换它。