PCLint
PC-Lint 是GIMPEL SOFTWARE 公司研发的C/C++软件代码静态分析工具,他的全称是PC-Lint/FlexeLint for C/C++。PC-Lint 能够在Windows、MS-DOS 和OS/2 平台上使用,以二进制可执行文档的形式发布,而FlexeLint 运行于其他平台,以源代码的形式发布。PC-lint在全球拥有广泛的客户群,许多大型的软件研发组织都把PC-Lint 检查作为代码走查的第一道工序。PC-Lint 不但能够对程式进行全局分析,识别没有被适当检验的数组下标,报告未被初始化的变量,警告使用空指针连同冗余的代码,还能够有效地提出许多程序在空间利用、运行效率上的改进点。 适用于C/C++,做嵌入式开发时用过这个工具,还是很强大的,缩进对齐不规范也可以检测出来。 PREfast Prefast是一种代码分析工具,它能够帮助你找到编译器不能找到的错误或者缺陷。Prefast首次被微软集成到Visual Studio 2005 Team Suite中去,使用起来非常方便。 Prefast能帮你找到哪些错误
1)没有初始化 2)空指针取值 3)可能错误的运算符优先级 4)可能的buffer overrun 5)可能的无穷循环 6)格式字符串错误 7)安全问题 8)=和==误用 9)逻辑运算问题 10)其他 可以集成到VS环境,不过没用过,不做评论 FxCop FxCop是一个代码分析工具,它依照微软.NET框架的设计规范对托管代码assembly(可称为程序集,assembly实际上指的就是.net中的.exe或者.dll文件(不包括netmodule文件),这种文件中包含四种信息:assembly的清单(包括引用外部的assembly、netmodule与资源文件及包含在同一文件中的assembly);类型描述信息,包括版本信息与类的描述等;MSIL微软中间语言;资源(图标等))进行检查。它使用基于规则的引擎,来检查出你代码中不合规范的部分;你也可以定制自己的规则加入到这个引擎。这个工具微软免费提供。最新版需要.NET 2.0支持;此外,也有一个较老的针对.NET1.1的版本。
最新版FxCop使用一项叫做内窥(introspection,或称内观、内视)的技术,以窥探你的assembly内部,而前一个版本则使用映射(reflection,或称反射)技术。这一点值得关注,因为使用上一个版本调试碰到问题你不得不停下来,对代码作了任何更改之后都需要重新开始调试;而这些对于新版本都没有必要了。
大多数代码分析工具扫描你的源代码,但是FxCop直接对你编译好的代码处理。.NET的每个assembly都有其metadata(可称为元数据,metadata是关于一个assembly中各元素的类型信息库,它本身也存放在这个assembly中),它对assembly以及assembly内用到的所有类型进行描述。FxCop会使用这个metadata以获知代码内部的运行状况。另外,它也对代码编译时生成的MSIL(Microsoft Intermediate Language,微软中间语言)进行检查。
通过对metadata和MSIL检查的结合,FxCop可以得出大量信息,以此获得对代码执行时所作所为的理解。它把你的代码和各条规则逐一比较检查,在每一个实例中,当找到不符合规则的代码时就生成一条消息。 适用于托管代码检测,这个工具也没用过