首页 > 解决方案 > 是否有一个静态 C 分析器可以检测未初始化的静态变量?

问题描述

我们在嵌入式固件中遇到了一些 C 代码问题,该问题仅出现在 200 个系统中的 1 个系统上,归结为在初始化之前使用全局静态变量。

在普通的 C 语言中,这不是问题,因为静态变量被初始化为 0,但是这个嵌入式系统的空间/时间受限,没有 cinit,所以静态变量不会被归零。

现在我们已经发现了问题,我们已经能够修复它,但是我们希望在未来 100% 发现它 - 200 个系统中有 1 个很难找到,下一次它可能是 5000 个中的 1 个,1 个中的 1 个百万或更少,所以再多的测试也不能给我们完全的信心。

我们使用 cppcheck 和 SonarQube 进行静态分析,但我们还没有找到如何用它们来捕获这个错误。

  1. cppcheck 或 SonarQube 中是否有一个选项可以在初始化之前检测静态全局变量的使用?如果是这样,我们如何使用它?
  2. 如果没有,是否有任何其他提供此警告的静态分析工具?

标签: cstaticinitializationstatic-analysis

解决方案


推荐阅读