c - 在 Polyspace 中发现死代码时如何强制调用站点分析?

标签 c static-analysis unreachable-code

我使用 Polyspace IHME-8.1.0.12 (R2011a) 来查找项目中的死代码。目前,分析捕获了这种情况:

int f1() {
  int x = 1;
  if (x > 0) return 1;
  else return 0;  // dead code
}

但不是这种情况:

int f2(int x) {
  if (x > 0) return 1;
  else return 0;  // the very same dead code!
}
void call_site() {
  f2(1);
}

请注意,x 成为参数,但它仍然具有常量值 1。函数 f2() 仅由 call_site() 调用,或者,每个调用站点都使用 x 调用 f2() =1.

在查找无法访问的代码时,是否应该激活一个配置选项来分析所有调用站点?或者这是 Polyspace 的限制?

最佳答案

你能告诉我应用程序中是否有 main 吗? 如果没有,则 Polyspace 将使用其主生成器,因此也可能调用 f2 (这取决于主生成器的配置方式)。 如果 f2 也被主生成器调用,则 x 被认为取任意值。 如果您查看 x 上的工具提示,或者单击 x 并查看检​​查详细信息窗口,您可以看到 Polyspace 正在考虑的 x 范围。

关于c - 在 Polyspace 中发现死代码时如何强制调用站点分析?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31069655/

相关文章:

c - malloc 或 calloc

python - 通过类型注释对 Python 中的类型构造函数进行抽象

java - 循环java后到达代码

java - 使用标记的中断获得无法访问的语句错误

c - 如何摆脱可怕的无用宏

c - Minix 未知类型名称 'EXTERN' 错误

c - 使用 scanf() 从键盘读取时从先前输入读取换行符

static-analysis - 如何构建静态代码分析工具?

python - 是否有 Python linter 来检查是否缺少 `raise` 关键字?

c++ - 是否可以假定具有未定义行为的分支无法访问并将其优化为死代码?