有没有办法让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更彻底或其他人认为有用的其他工具的建议吗?
答案 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)
我们使用覆盖率,而不是免费但非常棒的静态分析工具