在 Polyspace 中发现死代码时如何强制调用站点分析?
How to force call site analysis when finding dead code in Polyspace?
我使用 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=1
.
调用 f2()
是否有我应该激活的配置选项来在查找无法访问的代码时分析所有调用站点?或者这是 Polyspace 的限制?
你能告诉我应用程序中是否有主程序吗?
如果不是,则 Polyspace 将使用其主生成器,因此也可能调用 f2(这取决于主生成器的配置方式)。
如果 f2 也被主生成器调用,则 x 被认为可以取任何值。
如果您查看 x 上的工具提示,或者如果您单击 x 并查看检查详细信息,您可以看到 Polyspace 正在考虑的 x 范围 window.
我使用 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=1
.
f2()
是否有我应该激活的配置选项来在查找无法访问的代码时分析所有调用站点?或者这是 Polyspace 的限制?
你能告诉我应用程序中是否有主程序吗? 如果不是,则 Polyspace 将使用其主生成器,因此也可能调用 f2(这取决于主生成器的配置方式)。 如果 f2 也被主生成器调用,则 x 被认为可以取任何值。 如果您查看 x 上的工具提示,或者如果您单击 x 并查看检查详细信息,您可以看到 Polyspace 正在考虑的 x 范围 window.