C/C++ 代码分析概述
更新:2007 年 11 月
C/C++ 代码分析工具为开发人员提供了有关他们的 C/C++ 源代码中可能存在的缺陷的信息。工具报告的常见编码错误包括缓冲区溢出、内存未初始化、null 指针取消引用以及内存和资源泄漏。
IDE(集成开发环境)集成
分析工具与 IDE 完全集成,以方便开发人员使用。在生成过程中,针对源代码生成的任何警告都显示在“错误列表”中。这些警告包括缺陷路径信息(如果有);双击警告会突出显示指向警告的缺陷路径。
#pragma 支持
开发人员可以使用 #pragma 指令将警告作为错误处理;还可以启用或禁用警告,如下面的示例所示:
#pragma warning (error: 6260)
#pragma warning (disable: 6011)
#pragma warning (enable: 6056)
批注支持
批注可以提高代码分析的准确性。批注可提供有关函数参数及返回类型的 pre(前置)条件和 post(后置)条件的其他信息。
#include <CodeAnalysis/SourceAnnotations.h>
[returnvalue:Post( MustCheck=SA_Yes )] double* CalcSquareRoot
(
[Pre( Null=SA_No )] double* source,
unsigned int size
);
在上面的示例中:
[Post ( MustCheck=SA_Yes)] 要求调用方检查 CalcSquareRoot 的返回值
[Pre ( Null=SA_No)] 要求调用方将非 null 参数“source”传递给 CalcSquareRoot
作为签入策略的一部分运行分析工具
作为一个单位,可能希望所有签入行为满足特定的策略。特别是希望确保遵从下列策略:
要签入的代码中没有生成错误。
在最近一次生成中运行了代码分析。
可以通过指定签入策略来实现该任务。
Team System 与 Team Build 的集成
您可以使用生成系统的集成功能在生成过程中运行分析工具。有关更多信息,请参见 Team Foundation Build 概述。
命令行支持
分析工具是与开发环境完全集成的,此外,开发人员还可以从命令行使用分析工具,如下面的示例所示:
C:\>cl /analyze Sample.cpp