在Polyspace中查找死代码时,如何强制调用站点分析?
我使用Polyspace IHME-8.1.0.12(R2011a)在我的项目中查找死代码。目前,分析抓住了这个案例:在Polyspace中查找死代码时,如何强制调用站点分析?,c,static-analysis,unreachable-code,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()
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);
}
但不是这种情况:
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\u site()
调用,或者,每个调用站点使用x=1
调用f2()
在查找无法访问的代码时,是否有一个配置选项我应该激活以分析所有呼叫站点?或者这是Polyspace的一个限制?您能告诉我应用程序中是否有main吗? 如果没有,则Polyspace将使用其主生成器,因此也可以调用f2(这取决于主生成器的配置)。 如果主生成器也调用f2,则认为x取任何值。
如果您查看x上的工具提示,或者单击x并查看“检查详细信息”窗口,您可以看到Polyspace考虑的x范围。我有一个
main()
函数,但我也有中断处理程序,因此我使用-main generator
。我将-在循环中调用的函数
设置为未使用的
,希望我的问题会消失。我已经在我的项目中检查了这一点,现在检测到所有已知的死代码案例。感谢您的回答,也感谢@Sourav对我的问题的帮助(他删除了他的评论,但这些评论确实很有帮助)。@Dmitrygrioryev我很高兴它有帮助。:-)