有没有办法让FxCop分析非托管C++代码?设置/ clr标志允许FxCop打开.exe.它找到了很多C++项目,但对代码的分析非常薄弱.例如,跳过以下代码:
int i=0;
if (i=2) printf("Don't worry..everything will be okay.");
Run Code Online (Sandbox Code Playgroud)
我想要一个可以捕获i=2并警告它应该是的工具i==2.有关让FxCop更彻底或其他人认为有用的其他工具的建议吗?
MSVC(至少 VC9/VS2008)已经对您的具体示例发出警告:
warning C4706: assignment within conditional expression
Run Code Online (Sandbox Code Playgroud)
(哎呀:我刚刚意识到我的测试项目设置已升至警告级别 4 - /W4。MSVC 在默认设置下不会发出此警告)。因此,将项目设置设置为 /W4 并获得更多诊断信息(希望没有太多噪音)。
我发现 VC9 中的警告相当不错,如果你想强制解决这个问题,你可以轻松地将编译器设置为将它们视为错误。
Visual Studio 的 Team Server 版本包含对 PREfast 的支持 - 来自 Microsoft 的静态分析工具(该选项位于 C++ 项目的 Advanced/Enable Code Analysis For C/C++ 中)。您还可以在 Windows 驱动程序工具包和/或 Windows SDK 中获取该工具,但我不能保证将 WDK/SDK 版本集成到 Visual Studio 中的说明:
有些人喜欢的另一种选择(非免费)是Gimpel 的 PC-Lint 产品。