本文章转载于搜狗测试
CppCheck静态代码检测工具
工具介绍:
Cppcheck是一种C/C++代码缺陷静态检查工具。不同于C/C++编译器及其它分析工具,Cppcheck只检查编译器检查不出来的bug,不检查语法错误。作为编译器的一种补充检查,cppcheck对产品的源代码执行严格的逻辑检查。
执行的检查包括(可以发现以下的问题):
1.自动变量检查
2.数组的边界检查
3.class类检查
4.过期的函数,废弃函数调用检查
5.异常内存使用,释放检查
6.内存泄漏检查,主要是通过内存引用指针
7.操作系统资源释放检查,中断,文件描述符等
8.异常STL函数使用检查
9.代码格式错误,以及性能因素检查
工具使用:
Cppcheck是一个免费的有界面的静态代码检测工具,用起来非常方便,只需要把要check的文件目录穿进去就可以。相对于PC-lint而言的问题数量大致相同,可能是二者定义问题的level级别不一样吧。现在还没有对二者进行详细的对比,稍后对比后再发出来。
Cppcheck把代码的问题分为6个级别,如图:
通过对输入法代码check出来的error进行分析得到一些例子跟大家分享:
1.申请内存没有释放
2. 释放回收内存的时候错误
3.内存分配错误
4.空指针异常
如果上面分配失败,会导致下面出现空指针引用的情况.
等等,发现的问题多种多样。相对于PC-lint使用Cppcheck查找出来的问题开发同学全部认可,而大部分问题会导致出现内存泄漏或者崩溃性的问题。
扩展使用:
CppCheck还是支持命令行方式的,如图:
这样就可以结合命令的方式进行添加到自动化中进行实时的监控。
1.每日check(具体实现方式不说了)
2.开发svn提交代码时进行check,check通过后才可以提交。
3.总结出现问题的类型,存储问题进行数据分析(哪些问题出现的多、哪些开发容易出现什么样的问题等)
4.结合coverity更好的保证代码的质量。