用于非 .Net C++ 代码的 FxCop(或等效项)
Posted
技术标签:
【中文标题】用于非 .Net C++ 代码的 FxCop(或等效项)【英文标题】:FxCop (or equivalent) for non-.Net C++ code 【发布时间】: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 更彻底或其他人认为有用的其他工具的任何建议?
【问题讨论】:
【参考方案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 中的说明:
http://blogs.msdn.com/vcblog/archive/2008/02/05/prefast-and-sal-annotations.aspx http://buildingsecurecode.blogspot.com/2007/08/security-code-scanning-with-microsoft.html有些人喜欢的另一种选择(非免费)是Gimpel's PC-Lint product。
【讨论】:
【参考方案2】:我们使用coverity,不是免费的,而是一个很棒的静态分析工具
【讨论】:
以上是关于用于非 .Net C++ 代码的 FxCop(或等效项)的主要内容,如果未能解决你的问题,请参考以下文章
FxCop 或其他实用程序需要 VB.NET 中的内联文档? [关闭]
有没有办法在 FxCop 10.0 中获取 CAT.NET 规则
ASP.NET Web 应用程序的 FxCop 规则列表子集