2010-02-10 114 views
6

有没有办法让FxCop分析非托管C++代码?设置/ clr标志允许FxCop打开.exe。它找到了很多C++项目,但对代码的分析非常薄弱。例如,下面的代码被跳过:FxCop(或等效)for non.Net C++代码


int i=0; 
if (i=2) printf("Don't worry..everything will be okay."); 

我想一个工具,它可以捕捉i=2,并警告说,它应该是i==2。任何关于让FxCop更彻底的建议还是其他人认为有用的工具?

回答

4

MSVC(至少VC9/VS2008)已经发出警告您的具体的例子:

warning C4706: assignment within conditional expression 

(哎呀。我才意识到,我有我的测试项目设置调到最警告级别4 -/W4 MSVC在默认设置下不会发出此警告)。因此,将项目设置设置为/ W4并获得更多诊断信息(希望没有太多噪音)。

我发现在VC9中的警告是相当不错的,你可以很容易地设置编译器将它们视为错误,如果你想强制这个问题。

Visual Studio的Team Server版本包含对PREfast(Microsoft提供的静态分析工具(该选项位于C++项目的高级/启用代码分析C/C++))的支持。您也可以在Windows驱动程序工具包和/或Windows SDK工具,虽然我不能保证集成到Visual Studio上获得WDK/SDK版本的说明:

有些人喜欢(非免费)的另一种选择是Gimpel's PC-Lint product

0

我们使用覆盖率,不是免费的,但一个很棒的静态分析工具