. . .
1.2.2介绍:
cppcheck 是一个静态代码检查工具,支持c, c++ 代码;作为编译器的一种补充检查,cppcheck对产品的源代码执行严格的逻辑检查。 执行的检查包括:
1. 自动变量检查 2. 数组的边界检查 3. class类检查
4. 过期的函数,废弃函数调用检查 5. 异常内存使用,释放检查
6. 内存泄漏检查,主要是通过内存引用指针 7. 操作系统资源释放检查,中断,文件描述符等 8. 异常STL 函数使用检查
9. 代码格式错误,以及性能因素检查
1.2.3 基本使用:
首先下载安装,例如我的是安装在 C:\\Cpptest\\Cppcheck 目录下,要使
用它必须先转到该路径下:
1.检查一个文件:cppcheck [filepath]
例如,我检查一个file1.c的文件代码,在命令工具中可以输入:D:\\Cpptest\\Cppcheck>cppcheck file1.c 来审查。 2.检查一个文件夹中的所有文件: cppcheck [filspath] 例如,我检查files文件下的所有文件:
C:\\Cpptest\\Cppcheck>cppcheck files
3. 格式化输出内容格式:
C:\\Cpptest\\Cppcheck>cppcheck --enable=all --template=vs C:\\files.c 2>C:\\Cpptest\\err.txt
--template=vs 就是指定以vs这种格式输出,还可以自定义输出格式,
1.2.4 高级使用:
1.xml 输出
a.使用方式:cppcheck --xml-version=2 foo.cpp b.error的组成元素:
..........
. . .
id:error的id
severity:error的性质(error、warning......) msg:error的具体信息(短格式) verbose:error的信息(长格式) c.location的组成元素:
file:含有相对或者绝对路径的文件名 line:行数 msg:消息描述 2.改良输出结果
cppcheck --template=vs path (Visual Studio 兼容模式) cppcheck --template=gcc path (Gcc兼容模式)
cppcheck --template={\3.输出过滤器(选特定的错误信息输出)
命令行模式:
cppcheck --suppress=memleak:src/file1.cpp src/ 使用文件模式(将过滤规则存到文件中) cppcheck--suppressions suppressions.txt src/
..........
. . .
1.3. 任务描述: 1.理解CPPCheck软件的基本功能和特征;
2. 掌握软件测试方法在CPPCheck测试中的运用; 3.完成CPPCheck相关任务模块测试用例的设计; 4.实现CPPCheck的核心功能的测试; 5.撰写测试CPPCheck软件的相关文档; 6.撰写出符合要求的课程设计报告。
C++ code 各种注册的check子类及rule 检查 cppcheck系统结构图: 参数分析 代 码 解 Sotting 析 tokens Cppcheck核心 错误输出 错误报告输出ErrorLogger ..........
. . .
1.4.运行环境:
硬件:装有windows操作系统的计算机
测试工具:CppCheck Quick Test Professional VC++6.0
1.5.条件与限制: 条件:被测试代码的路径必须是全英文,内存要动态分配 限制:只能执行C/C++源代码,该软件只能进行静态检测
二.测试设计
2.1测试阶段的选择:
2.1.1单元测试
(1)定义:单元测试(又称为模块测试)是针对程序模块软件设计的最小
单位)来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。在过程化编程中,一个单元就是单个程序、函数、过程等;对于面向对象编程,最小单元就是方法,包括基类(超类)、抽象类、或者派生类(子类)中的方法。
(2)单元测试任务包括: 1.模块接口测试;
2.模块局部数据结构测试; 3.模块边界条件测试;
4.模块中所有独立执行通路测试; 5.模块的各条错误处理通路测试。 1、 单元的基本属性: 1.明确的功能 2.可定义的规格
3.与其他单元接口的清晰划分 2、 单元测试的目的:
在于发现各模块内部可能存在的各种错误,主要是基于白盒测试。 1.验证代码是与设计相符合的; 2.发现设计和需求中存在的错误; 3.发现在编码过程中引入的错误。(和设计不相符或和设计相符,但是由于
..........