【问题标题】:FxCop (or equivalent) for non-.Net C++ code用于非 .Net C++ 代码的 FxCop(或等效项)
【发布时间】:2010-02-10 00:32:53
【问题描述】:

有没有办法让 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 更彻底或其他人认为有用的其他工具的任何建议?

【问题讨论】:

    标签: .net c++ fxcop


    【解决方案1】:

    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

    【讨论】:

      【解决方案2】:

      我们使用coverity,不是免费的,而是一个很棒的静态分析工具

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-12-18
        • 1970-01-01
        • 1970-01-01
        • 2011-05-01
        • 2023-04-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多