代码分析在VS 2010中不起作用

时间:2013-02-26 22:54:34

标签: c++ visual-studio-2010 analysis

我使用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所有规则)。

任何想法?

1 个答案:

答案 0 :(得分:1)

  • 未使用的功能不是“死代码”。想象一下,你正在编写一个库 - 这可能会向其用户公开它不使用它的功能。
  • 对于CA1804,我只能做出假设:假设分析不够深入,无法创建完整的控制流图,并注意到if/else块之后的代码无法到达。但是,即使它进行了全面的分析,我希望在test()块之后if部分发出“死代码”警告,而不是“未使用的本地”警告 - 如果代码可以访问,将使用j