Sogou输入法使用的代码静态检测工具

本文章转载于搜狗测试

Sogou输入法使用的代码静态检测工具_第1张图片

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进行分析得到一些例子跟大家分享:

Sogou输入法使用的代码静态检测工具_第2张图片

1.申请内存没有释放

Sogou输入法使用的代码静态检测工具_第3张图片

2. 释放回收内存的时候错误

Sogou输入法使用的代码静态检测工具_第4张图片

3.内存分配错误

Sogou输入法使用的代码静态检测工具_第5张图片

4.空指针异常

Sogou输入法使用的代码静态检测工具_第6张图片

如果上面分配失败,会导致下面出现空指针引用的情况.

等等,发现的问题多种多样。相对于PC-lint使用Cppcheck查找出来的问题开发同学全部认可,而大部分问题会导致出现内存泄漏或者崩溃性的问题。

扩展使用:

CppCheck还是支持命令行方式的,如图:

Sogou输入法使用的代码静态检测工具_第7张图片

这样就可以结合命令的方式进行添加到自动化中进行实时的监控。

1.每日check(具体实现方式不说了)

2.开发svn提交代码时进行check,check通过后才可以提交。

3.总结出现问题的类型,存储问题进行数据分析(哪些问题出现的多、哪些开发容易出现什么样的问题等)

4.结合coverity更好的保证代码的质量。

你可能感兴趣的:(Sogou输入法使用的代码静态检测工具)