C++Test操作手册(14页).doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《C++Test操作手册(14页).doc》由会员分享,可在线阅读,更多相关《C++Test操作手册(14页).doc(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-C+Test操作手册-第 10 页A-SPICEC+test操作手册撰写部门:手写算法组发行范围:全公司变更记录版本号修改点说明变更人变更日期审批人审批日期V1.0正式发布赵哲2017-6-11张文涛2017-10-31V1.1修改,1. 加入附录-MISRA-C2012规则2. 修改格式张文涛2017-10-30王杰2017-10-31修改点说明的内容有如下几种:创建、修改(+修改说明)、删除(+删除说明)目 录1C+TEST介绍12C+TEST安装13静态分析13.1规则设定13.2静态测试实施23.3查看结果34单元测试74.1生成测试套件74.2生成单元测试用例74.3桩函数84.4
2、测试实施84.5根据结果完善测试脚本94.6查看结果94.7生成测试报告105附录 MISRA-C2012规则10C+test介绍Parasoft C+test 是一个集成解决方案,用于使一系列被广泛证明可改进软件开发团队生产力和软件质量的最佳实践得以自动化处理。通过 C+test,可进行编码策略增强、静态分析、综合代码复审、单元测试和组件测试、以及运行时错误检测,以此向团队提供一种确保 C 和 C+ 代码达到其预期功能的实用方法。 C+test安装第一步:打开安装源程序,同普通的windows应用程序一样,选择安装路径,完成安装。第二步:在安装目录搜索libs_sp.jar并删除;在安装目录
3、找lic_client.jar并替换第三步:运行程序,打开许可证页面,许可证: 网络版本:定制版 定制:全选确定,至此完成安装过程静态分析在静态分析栏中的Results标签是对静态分析结果的一个罗列。每个红色精灵帽都代表 一种违规行为,而它旁边的数字则代表测试代码中出现这种违规的次数。紧接着的字母表明违规行为的严重级别。再后面就是对这条规范的大致描述以及规则编号。测试配置中的“静态”标签则是对这些规则的管理,当用户需要使用某条规则的时候,只需要在相应规则左侧的方框内打上勾就表明选择了该条规则。而当用户不需要某条规则检查的时候,只需要去掉相应规则的勾就可以了。1.1 规则设定l 开发人员在做静态
4、测试时启用的规则为MISRA C 2012 MISRA2012,规则详情参见附录MISRA-C2012中内容。MISRA-C2012检查项分为两大类,一类称为指导(Directives),另一类称为规则(Rules)。汉王项目要求选择全部规范进行静态分析检查。1.2 静态测试实施开发人员选择好被测源文件后依次选择 测试执行-内建-Static Analysis-MISRA-C2012,即可开始运行测试程序。如需自定义启用禁用规则,可在测试配置中复制内建测试配置,然后再用户自定义中修改即可(内建项均为默认配置,不可修改,如需修改必须建自定义项),最后依次选择 测试执行-用户自定义-“MISRA-
5、C2012自定义名称”。1.3 查看结果测试完成后,点击“proceed”来生成测试报告文档,结果保存在htlm中,可点击“configure.”设置生成路径,并可在首选项中按自己需求设置报表内容和保存格式等。开发人员根据静态分析报告显示的问题修改代码,修改后再次利用静态分析工具进行分析,得出分析结果。对于静态分析检查出来的问题,如果不予修改,给予放行,要经过项目经理批准,最终对放行的问题给出放行说明,开发人员负责编写项目静态分析结果说明MISRA-C 2012检查结果说明,即对放行的问题进行说明。不能放行的规范条目如下 序号指导:MISRA C 2012 Directives MISRA20
6、12-DIR1嵌入汇编程序时嵌入的过程应该是纯汇编程序 MISRA2012-DIR-4_3-3序号规则:MISRA C 2012 Rules MISRA2012-RULE2字面量零 (0) 不得用作空指针常量 (null-pointer-constant) MISRA2012-RULE-11_9_a-33用 NULL 来代替字面零 (0) 作为空指针常量 MISRA2012-RULE-11_9_b-34不应该使用逗号运算符 MISRA2012-RULE-12_3-45初始化器列表不应该包含持久的副作用 MISRA2012-RULE-13_1_a-36逻辑 & 或者 | 运算符的右边操作数不应该
7、包含副作用 MISRA2012-RULE-13_5-37sizeof 操作符的参数不应该是含副作用的表达式 MISRA2012-RULE-13_6_a-28不应该在sizeof操作符的操作数中访问由一个不稳定的数值指定的对象 MISRA2012-RULE-13_6_b-29函数调用不得是 sizeof 运算符的操作数 MISRA2012-RULE-13_6_c-210不应该使用 goto 语句 MISRA2012-RULE-15_1-411goto 语句应该跳转到随后在同一个函数中声明的标签 MISRA2012-RULE-15_2-312任何由 goto 语句引用的标签应该声明在同一个模块中,
8、或者在一个包围 goto 语句的模块中 MISRA2012-RULE-15_3-313对于任何循环语句,不要有超过一个 break 或 goto 语句用于循环终止 MISRA2012-RULE-15_4-414switch, while, do.while 或 for 语句的主体应该是复合语句 MISRA2012-RULE-15_6_a-315在 if 和 else 之后应该紧跟着复合语句 MISRA2012-RULE-15_6_b-316所有的 if.else-if 结构中应该由 else 分支结束 MISRA2012-RULE-15_7-317只能当最接近的封闭复合语句是 switch 语
9、句主体部分时才能使用 switch 标签 MISRA2012-RULE-16_2-318无条件的 break 语句应该作为每一个非空 case 子句的结尾 MISRA2012-RULE-16_3_a-319无条件限制的break语句应作为所有非空default条件的终结。 MISRA2012-RULE-16_3_b-320需要为 switch 语句提供 default 分支 MISRA2012-RULE-16_4_a-321default 标签在结束 break 之前应该有一个语句或者一个注释 MISRA2012-RULE-16_4_b-322如果存在一个 default 标签,应该作为 sw
10、itch 语句的第一个或最后一个 switch 标签 MISRA2012-RULE-16_5-323每一个switch语句应该含有至少两个switch子句 MISRA2012-RULE-16_6-324switch 的表达式中不能出现有效的布尔类型值 MISRA2012-RULE-16_7_a-325switch表达式不应该表示一个有效的布尔值 MISRA2012-RULE-16_7_b-326函数原型应该总是对函数调用可见 MISRA2012-RULE-17_3-227非 void 返回类型的函数的所有退出路径应该有一个明确的包含表达式的返回语句 MISRA2012-RULE-17_4-22
11、8函数参数对应的数组类型参数应该包含合适数量的元素 MISRA2012-RULE-17_5-429应该使用具有非 void 返回类型的函数返回值 MISRA2012-RULE-17_7_a-330不得使用一个非 void 返回类型函数返回的值 MISRA2012-RULE-17_7_b-331不应该修改函数参数 MISRA2012-RULE-17_8-432对象的申明需要包含不超过2成指针嵌套 MISRA2012-RULE-18_5-433不得声明灵活的数组成员 MISRA2012-RULE-18_7-334不得使用可变长数组类型 MISRA2012-RULE-18_8-335禁止使用预处理操
12、作符 # 和 # MISRA2012-RULE-20_10-436一个紧跟在#操作符的宏参数不应该在其后紧跟或在其前加上#操作符 MISRA2012-RULE-20_11-337一个被用作 # 或者 # 操作符的操作数的宏参数,并且它本身受制于进一步的宏替换,那么它应该只能被用作这些操作符的操作数 MISRA2012-RULE-20_12-338预处理指令即使被预处理器排除也必须有语法意义 MISRA2012-RULE-20_13-339在同一个文件中 #else, #elif 和 #endif 必须对应有 #if 或 #ifdef 预处理指令 MISRA2012-RULE-20_14-340
13、字符 , , /* 或 / 不得出现在头文件的名称中 MISRA2012-RULE-20_2_a-341字符 不得出现在头文件的名称中 MISRA2012-RULE-20_2_b-342#include 指令后面应当添加 或是 filename MISRA2012-RULE-20_3-343C90中规定宏不应该与关键字定义为相同名称 MISRA2012-RULE-20_4_a-344C99中规定宏不应该与关键字定义为相同名称 MISRA2012-RULE-20_4_b-345禁止使用 #undef MISRA2012-RULE-20_5-446类似函数的宏的参数不应该包含类似预处理命令的标识
14、MISRA2012-RULE-20_6-347不得使用标准头文件 MISRA2012-RULE-21_11-348不得使用 中的异常处理功能 MISRA2012-RULE-21_12-449禁止使用动态内存分配 MISRA2012-RULE-21_3-350禁止使用 setjmp 宏和 longjmp 函数 MISRA2012-RULE-21_4_a-351不要使用标准头文件 MISRA2012-RULE-21_4_b-352禁止使用标准库文件 中的处理函数 MISRA2012-RULE-21_5_a-353禁止使用信号处理文件 中的处理函数 MISRA2012-RULE-21_5_b-354
15、不得使用标准的库的 input/output 函数 MISRA2012-RULE-21_6-355禁止使用 stdlib.h 中库函数 atof, atoi 和 atol MISRA2012-RULE-21_7-356禁止使用 stdlib.h 中的库函数 abort, exit, getenv 和 system MISRA2012-RULE-21_8-357函数不应该包含未使用的标签声明 MISRA2012-RULE-2_6-458禁止在 C 语言风格的注释中使用 /* 字符序列 MISRA2012-RULE-3_1_a-359字符序列 / 不得被用于 C 语言风格的注释中 MISRA201
16、2-RULE-3_1_b-360字符序列 /* 不得被用于 C+ 语言风格的注释中 MISRA2012-RULE-3_1_c-361不得在 / 注释中使用行合并 MISRA2012-RULE-3_2-362八进制和十六进制转义序列将被终止 MISRA2012-RULE-4_1-363禁止使用三字母词 MISRA2012-RULE-4_2-464由 signed 整型命名的位域应该有超过一位的长度 MISRA2012-RULE-6_2-365八进制常量(除了0)不应该被使用 MISRA2012-RULE-7_1-366使用大写 L 而非小写 l 来指定 long 类型 MISRA2012-RUL
17、E-7_3-367不能修改窄字符串字面量 MISRA2012-RULE-7_4-368内联函数应该声明为静态存储类 MISRA2012-RULE-8_10-369在一个列举列表内,含蓄指定列举常数的值应该是唯一的 MISRA2012-RULE-8_12-370不得使用严格的类型限定符 MISRA2012-RULE-8_14-371带有内部链接的对象和函数应使用静态关键字进行定义和声明 MISRA2012-RULE-8_8-3可以放行的规范条目如下 序号MISRA C 2012 Directives MISRA2012-DIR1使用多重包含保护机制 MISRA2012-DIR-4_10-3 2禁
18、止使用动态内存分配 MISRA2012-DIR-4_12-33所有汇编程序的使用应该被注释说明 MISRA2012-DIR-4_2-44代码段落不应该被“注释掉” MISRA2012-DIR-4_4-45函数应该优先于类似函数宏的使用 MISRA2012-DIR-4_9-4序号MISRA C 2012 Rules MISRA2012-RULE6禁止强制类型转换操作删除以指针指定的 const 或 volatile 限制 MISRA2012-RULE-11_8-37包含自增 (+) 或自减 (-) 运算符的表达式不应该有其它潜在的副作用 MISRA2012-RULE-13_3-48不得使用一个内
19、置赋值运算符的结果 MISRA2012-RULE-13_4-49函数应该在其最后有单一的出口 MISRA2012-RULE-15_5-410不得使用 va_list, va_arg, va_start, va_end, va_copy 标识符 MISRA2012-RULE-17_1_a-311不得使用 va_list, va_arg, va_start, va_end 标识符 MISRA2012-RULE-17_1_b-312函数不应该直接或者间接地调用自己 MISRA2012-RULE-17_2-313不得使用联合体关键字 MISRA2012-RULE-19_2-414#include 之前
20、只允许有预处理命令和注释 MISRA2012-RULE-20_1-415在函数式宏定义中,每个参数的实例应该被括号括起来,除非它被用于 # 或 # 操作符 MISRA2012-RULE-20_7-316除在 #ifdef 预处理命令、#ifndef 预处理命令和 defined() 操作符之外,所有的宏变量在使用前必须定义 MISRA2012-RULE-20_9_a-317不要使用在编译单元中未定义的预编译器指令 #if 和 #elif 宏 MISRA2012-RULE-20_9_b-318避免使用标准 C 库中与时间有关的函数 MISRA2012-RULE-21_10-319不得使用在中的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Test 操作手册 14
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内