我使用VS2010创建了一个控制台应用程序,如下所示
int test(int i)
{
if ( i == 0 )
return 0;
else
return 1;
int j = 2;
j++;
return j;
}
void deadCode(char * pa)
{
printf("%s", pa);
}
int _tmain(int argc, _TCHAR* argv[])
{
test(2);
return 0;
}
我选中了“在构建时启用C / C ++的代码分析”并选择规则集“Microsoft所有规则”,当我构建项目时,我得到了
1> RunCodeAnalysis:
1>运行代码分析...
1>代码分析完成 - 0个错误,0个警告
我期望test()中的粗体部分出现“CA1804”警告,应该显示死代码deadCode()的另一个警告。
我的问题是为什么Code Analysis没有发现缺陷?我还尝试创建仅启用CA1804警告的规则集,但结果与上面相同(Microsoft所有规则)。
任何想法?
答案 0 :(得分:1)
if/else
块之后的代码无法到达。但是,即使它进行了全面的分析,我希望在test()
块之后if
部分发出“死代码”警告,而不是“未使用的本地”警告 - 如果代码可以访问,将使用j
。