非.Net C ++代码的FxCop(或等效)

时间:2010-02-10 00:32:53

标签: .net c++ fxcop

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


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

我想要一个可以捕获i=2的工具,并警告它应该是i==2。有关让FxCop更彻底或其他人认为有用的其他工具的建议吗?

2 个答案:

答案 0 :(得分: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中获取该工具,但我无法保证将WDK / SDK版本集成到Visual Studio中的说明:

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

答案 1 :(得分:0)

我们使用覆盖率,而不是免费但非常棒的静态分析工具