我使用 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/