一、 实验要求
明白CppCheck的配置及原理,并使用CppCheck进行代码缺陷的检查,进行总结。
二、 CppCheck的原理介绍
1、Cppcheck先是分析拆解代码,将每个有效字符作为一个token(token是抽象代码中所有字符的
类,包含字符的字符串,类型等),提供tokenlist,规则实现者通过匹配需要的字符找到感兴趣的代
码,然后通过计算查找bug注意点:其中Cppcheck会做预处理和简化代码的操作,比如include头文件,
展开宏,在每一个token直接用一个空格分隔等。
2. 开发中使用主要的类有:
(1)Tokenizer类: 代码token化, 计划代码
(2)SymbolDatabase类:符号数据库,生成和存储各种符号:scope,function, variable等
(3)Scope类: 各种代码block。最常用的有functionScopes, classAndStructScopes等
(4)Token类: 里面有str(), next(), previous(), tokAt(), link(),Match()等常用函数
(5)Variable类:getTypeString()
(6)Function类:可以找到实现的scope
(7)Value类: token可以通过getValue()得到可能的值
3. 作为编译器的一种补充检查,cppcheck对产品的源代码执行严格的逻辑检查。 执行的检查包括:
(1)自动变量检查
(2)数组的边界检查
(3)class类检查
(4)过期的函数,废弃函数调用检查
(5)异常内存使用,释放检查
(6)内存泄漏检查,主要是通过内存引用指针
(7)操作系统资源释放检查,中断,文件描述符等
(8)异常STL 函数使用检查
(9)代码格式错误,以及性能因素检查
三、 CppCheck的使用
1. 自动变量检查
2. 数组的边界检查
3. Class类检查
4. 过期的函数,废弃函数调用检查
5. 异常内存使用,释放检查
6. 内存泄漏检查
7. 操作系统资源释放检查
8. 异常STL函数使用检查
10. 代码格式错误检查
四、 心得体会
经过一段时间的学习,对CppCheck进行了了解和学习,并且使用它进行了各种对应的测试,在这个过程中,自己的一些方面有了进步,比如软件的安装配置,软件的使用,代码的编写等,每一个不同的实验都能带来不同的成长,感谢老师在课堂上大量的提问的方式,同样使我学到了很多,对软件测试有了一些自己的想法,并且通过紧张的提问,很容易的就记住了这门课的知识,对做实验有所帮助。