ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:533.48KB ,
资源ID:11812822      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11812822.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C++Test操作手册.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C++Test操作手册.docx

1、C+Test操作手册 A-SPICEC+test操作手册撰写部门:手写算法组发行范围:全公司变更记录版本号修改点说明变更人变更日期审批人审批日期V1.0正式发布赵哲2017-6-11张文涛2017-10-31V1.1修改,1. 加入附录-MISRA-C2012规则2. 修改格式张文涛2017-10-30王杰2017-10-31 修改点说明的内容有如下几种:创建、修改(+修改说明)、删除(+删除说明) C+test介绍Parasoft C+test 是一个集成解决方案,用于使一系列被广泛证明可改进软件开发团队生产力和软件质量的最佳实践得以自动化处理。通过 C+test,可进行编码策略增强、静态分

2、析、综合代码复审、单元测试和组件测试、以及运行时错误检测,以此向团队提供一种确保 C 和 C+ 代码达到其预期功能的实用方法。 C+test安装第一步:打开安装源程序,同普通的windows应用程序一样,选择安装路径,完成安装。第二步:在安装目录搜索libs_sp.jar并删除;在安装目录找lic_client.jar并替换第三步:运行程序,打开许可证页面,许可证: 网络版本:定制版 定制:全选确定,至此完成安装过程静态分析在静态分析栏中的Results标签是对静态分析结果的一个罗列。每个红色精灵帽都代表 一种违规行为,而它旁边的数字则代表测试代码中出现这种违规的次数。紧接着的字母表明违规行为

3、的严重级别。再后面就是对这条规范的大致描述以及规则编号。测试配置中的“静态”标签则是对这些规则的管理,当用户需要使用某条规则的时候,只需要在相应规则左侧的方框内打上勾就表明选择了该条规则。而当用户不需要某条规则检查的时候,只需要去掉相应规则的勾就可以了。1.1 规则设定 开发人员在做静态测试时启用的规则为MISRA C 2012 MISRA2012,规则详情参见附录MISRA-C2012中内容。MISRA-C2012检查项分为两大类,一类称为指导(Directives),另一类称为规则(Rules)。汉王项目要求选择全部规范进行静态分析检查。1.2 静态测试实施开发人员选择好被测源文件后依次选

4、择 测试执行-内建-Static Analysis-MISRA-C2012,即可开始运行测试程序。如需自定义启用禁用规则,可在测试配置中复制内建测试配置,然后再用户自定义中修改即可(内建项均为默认配置,不可修改,如需修改必须建自定义项),最后依次选择 测试执行-用户自定义-“MISRA-C2012自定义名称”。1.3 查看结果测试完成后,点击“proceed”来生成测试报告文档,结果保存在htlm中,可点击“configure.”设置生成路径,并可在首选项中按自己需求设置报表内容和保存格式等。开发人员根据静态分析报告显示的问题修改代码,修改后再次利用静态分析工具进行分析,得出分析结果。对于静态

5、分析检查出来的问题,如果不予修改,给予放行,要经过项目经理批准,最终对放行的问题给出放行说明,开发人员负责编写项目静态分析结果说明MISRA-C 2012检查结果说明,即对放行的问题进行说明。不能放行的规范条目如下 序号指导:MISRA C 2012 Directives MISRA2012-DIR1嵌入汇编程序时嵌入的过程应该是纯汇编程序 MISRA2012-DIR-4_3-3序号规则:MISRA C 2012 Rules MISRA2012-RULE2字面量零 (0) 不得用作空指针常量 (null-pointer-constant) MISRA2012-RULE-11_9_a-33用 N

6、ULL 来代替字面零 (0) 作为空指针常量 MISRA2012-RULE-11_9_b-34不应该使用逗号运算符 MISRA2012-RULE-12_3-45初始化器列表不应该包含持久的副作用 MISRA2012-RULE-13_1_a-36逻辑 & 或者 | 运算符的右边操作数不应该包含副作用 MISRA2012-RULE-13_5-37sizeof 操作符的参数不应该是含副作用的表达式 MISRA2012-RULE-13_6_a-28不应该在sizeof操作符的操作数中访问由一个不稳定的数值指定的对象 MISRA2012-RULE-13_6_b-29函数调用不得是 sizeof 运算符的

7、操作数 MISRA2012-RULE-13_6_c-210不应该使用 goto 语句 MISRA2012-RULE-15_1-411goto 语句应该跳转到随后在同一个函数中声明的标签 MISRA2012-RULE-15_2-312任何由 goto 语句引用的标签应该声明在同一个模块中,或者在一个包围 goto 语句的模块中 MISRA2012-RULE-15_3-313对于任何循环语句,不要有超过一个 break 或 goto 语句用于循环终止 MISRA2012-RULE-15_4-414switch, while, do.while 或 for 语句的主体应该是复合语句 MISRA201

8、2-RULE-15_6_a-315在 if 和 else 之后应该紧跟着复合语句 MISRA2012-RULE-15_6_b-316所有的 if.else-if 结构中应该由 else 分支结束 MISRA2012-RULE-15_7-317只能当最接近的封闭复合语句是 switch 语句主体部分时才能使用 switch 标签 MISRA2012-RULE-16_2-318无条件的 break 语句应该作为每一个非空 case 子句的结尾 MISRA2012-RULE-16_3_a-319无条件限制的break语句应作为所有非空default条件的终结。 MISRA2012-RULE-16_3

9、_b-320需要为 switch 语句提供 default 分支 MISRA2012-RULE-16_4_a-321default 标签在结束 break 之前应该有一个语句或者一个注释 MISRA2012-RULE-16_4_b-322如果存在一个 default 标签,应该作为 switch 语句的第一个或最后一个 switch 标签 MISRA2012-RULE-16_5-323每一个switch语句应该含有至少两个switch子句 MISRA2012-RULE-16_6-324switch 的表达式中不能出现有效的布尔类型值 MISRA2012-RULE-16_7_a-325switc

10、h表达式不应该表示一个有效的布尔值 MISRA2012-RULE-16_7_b-326函数原型应该总是对函数调用可见 MISRA2012-RULE-17_3-227非 void 返回类型的函数的所有退出路径应该有一个明确的包含表达式的返回语句 MISRA2012-RULE-17_4-228函数参数对应的数组类型参数应该包含合适数量的元素 MISRA2012-RULE-17_5-429应该使用具有非 void 返回类型的函数返回值 MISRA2012-RULE-17_7_a-330不得使用一个非 void 返回类型函数返回的值 MISRA2012-RULE-17_7_b-331不应该修改函数参数

11、 MISRA2012-RULE-17_8-432对象的申明需要包含不超过2成指针嵌套 MISRA2012-RULE-18_5-433不得声明灵活的数组成员 MISRA2012-RULE-18_7-334不得使用可变长数组类型 MISRA2012-RULE-18_8-335禁止使用预处理操作符 # 和 # MISRA2012-RULE-20_10-436一个紧跟在#操作符的宏参数不应该在其后紧跟或在其前加上#操作符 MISRA2012-RULE-20_11-337一个被用作 # 或者 # 操作符的操作数的宏参数,并且它本身受制于进一步的宏替换,那么它应该只能被用作这些操作符的操作数 MISRA2

12、012-RULE-20_12-338预处理指令即使被预处理器排除也必须有语法意义 MISRA2012-RULE-20_13-339在同一个文件中 #else, #elif 和 #endif 必须对应有 #if 或 #ifdef 预处理指令 MISRA2012-RULE-20_14-340字符 , , /* 或 / 不得出现在头文件的名称中 MISRA2012-RULE-20_2_a-341字符 不得出现在头文件的名称中 MISRA2012-RULE-20_2_b-342#include 指令后面应当添加 或是 filename MISRA2012-RULE-20_3-343C90中规定宏不应该

13、与关键字定义为相同名称 MISRA2012-RULE-20_4_a-344C99中规定宏不应该与关键字定义为相同名称 MISRA2012-RULE-20_4_b-345禁止使用 #undef MISRA2012-RULE-20_5-446类似函数的宏的参数不应该包含类似预处理命令的标识 MISRA2012-RULE-20_6-347不得使用标准头文件 MISRA2012-RULE-21_11-348不得使用 中的异常处理功能 MISRA2012-RULE-21_12-449禁止使用动态内存分配 MISRA2012-RULE-21_3-350禁止使用 setjmp 宏和 longjmp 函数 M

14、ISRA2012-RULE-21_4_a-351不要使用标准头文件 MISRA2012-RULE-21_4_b-352禁止使用标准库文件 中的处理函数 MISRA2012-RULE-21_5_a-353禁止使用信号处理文件 中的处理函数 MISRA2012-RULE-21_5_b-354不得使用标准的库的 input/output 函数 MISRA2012-RULE-21_6-355禁止使用 stdlib.h 中库函数 atof, atoi 和 atol MISRA2012-RULE-21_7-356禁止使用 stdlib.h 中的库函数 abort, exit, getenv 和 syste

15、m MISRA2012-RULE-21_8-357函数不应该包含未使用的标签声明 MISRA2012-RULE-2_6-458禁止在 C 语言风格的注释中使用 /* 字符序列 MISRA2012-RULE-3_1_a-359字符序列 / 不得被用于 C 语言风格的注释中 MISRA2012-RULE-3_1_b-360字符序列 /* 不得被用于 C+ 语言风格的注释中 MISRA2012-RULE-3_1_c-361不得在 / 注释中使用行合并 MISRA2012-RULE-3_2-362八进制和十六进制转义序列将被终止 MISRA2012-RULE-4_1-363禁止使用三字母词 MISRA

16、2012-RULE-4_2-464由 signed 整型命名的位域应该有超过一位的长度 MISRA2012-RULE-6_2-365八进制常量(除了0)不应该被使用 MISRA2012-RULE-7_1-366使用大写 L 而非小写 l 来指定 long 类型 MISRA2012-RULE-7_3-367不能修改窄字符串字面量 MISRA2012-RULE-7_4-368内联函数应该声明为静态存储类 MISRA2012-RULE-8_10-369在一个列举列表内,含蓄指定列举常数的值应该是唯一的 MISRA2012-RULE-8_12-370不得使用严格的类型限定符 MISRA2012-RUL

17、E-8_14-371带有内部链接的对象和函数应使用静态关键字进行定义和声明 MISRA2012-RULE-8_8-3可以放行的规范条目如下 序号MISRA C 2012 Directives MISRA2012-DIR1使用多重包含保护机制 MISRA2012-DIR-4_10-3 2禁止使用动态内存分配 MISRA2012-DIR-4_12-33所有汇编程序的使用应该被注释说明 MISRA2012-DIR-4_2-44代码段落不应该被“注释掉” MISRA2012-DIR-4_4-45函数应该优先于类似函数宏的使用 MISRA2012-DIR-4_9-4序号MISRA C 2012 Rule

18、s MISRA2012-RULE6禁止强制类型转换操作删除以指针指定的 const 或 volatile 限制 MISRA2012-RULE-11_8-37包含自增 (+) 或自减 (-) 运算符的表达式不应该有其它潜在的副作用 MISRA2012-RULE-13_3-48不得使用一个内置赋值运算符的结果 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_l

19、ist, va_arg, va_start, va_end 标识符 MISRA2012-RULE-17_1_b-312函数不应该直接或者间接地调用自己 MISRA2012-RULE-17_2-313不得使用联合体关键字 MISRA2012-RULE-19_2-414#include 之前只允许有预处理命令和注释 MISRA2012-RULE-20_1-415在函数式宏定义中,每个参数的实例应该被括号括起来,除非它被用于 # 或 # 操作符 MISRA2012-RULE-20_7-316除在 #ifdef 预处理命令、#ifndef 预处理命令和 defined() 操作符之外,所有的宏变量在使

20、用前必须定义 MISRA2012-RULE-20_9_a-317不要使用在编译单元中未定义的预编译器指令 #if 和 #elif 宏 MISRA2012-RULE-20_9_b-318避免使用标准 C 库中与时间有关的函数 MISRA2012-RULE-21_10-319不得使用在中的 bsearch 和 qsort 库函数 MISRA2012-RULE-21_9-320在函数中不应该有未使用的参数 MISRA2012-RULE-2_7-4单元测试1.4 生成测试套件我们在做单元测试前的准备工作必不可少,测试套件是根据源代码来生成的多个测试组,每组内都是具有相关性的测试用例。选择待测源码后依次

21、选择 测试执行-内建-Unit Testing-Generate Test Suites,当然也可在测试配置中自定义一个生成配置。(我们可以在显示视图中打开测试用例浏览器,来查看生成后的测试套件以及测试用例)1.5 生成单元测试用例测试用例是对单元测试的具体实施最小模块,每一条都是独立的子程序,用来独立测试被测单元。我们先通过C+test工具来生成单元测试用例,以方便随后实施单元测试时修改其中具体内容。生成单元测试用例步骤如下:测试执行-内建-Unit Testing-Generate Unit Tests。同测试套件一样可以自定义生成规则。这里我们可以省略生成测试套件这一步,因为在Gener

22、ate Unit Tests时,已经包含了生成测试套件的内容。注意:我们在复用测试脚本代码时,仅需要生成测试套件,将之前测试脚本拷贝进来即可。1.6 桩函数桩函数提供被调函数的替代实现,使得可以独立地进行单元测试而不依赖外部文件或函数。在使用桩函数时, C+test 会重定向执行流程,调用一个桩函数替代原有函数。桩函数主要有两个用途: 将正在测试的代码从集成环境中隔离出来。 在不可能影响函数行为、且需要使用替代实施的情况下进行测试。您可以为任何测试用例定义自己的桩函数,不管是自动生成的测试用例还是用户定义的测试用例。当您使用用户定义的桩函数时,你可以完全控制外部函数的返回值 无需具有真正可用的

23、外部函数。如果有了用户定义的桩函数,则即使原始函数可用,在测试执行期间也可以一直使用该桩函数。如果原始定义最初不可用、但后来被添加了, C+test 也会继续使用用户定义的桩函数。如果您想要让它使用原始定义,则需要删除桩函数 (或者将它标注出来) 。用户定义的桩函数采用的实施方式是,在函数定义中,函数名称前面加上 CppTest_Stub_ 前缀。例如:/* C+test user stub definition for int doSomething(int i) */EXTERN_C_LINKAGE int doSomething(int i);EXTERN_C_LINKAGE int C

24、ppTest_Stub_doSomething(int i)return i + 10;桩函数的声明必须在桩函数文件中可访问到。在大多数情况下,通过将相应的头文件包含到桩函数文件中来连接它。1.7 测试实施到这里我们的准备工作已基本完成,可以开始编写自己的单元测试脚本了,根据需要和源码罗辑改写生成的测试用例脚本,以便符合项目单元测试需求。C+test可以对任意一条或多条测试用例执行步骤如下:首先找到测试用例浏览器,选取待测用例点击测试执行-内建-Unit Testing-Run Unit Tests 或 测试执行-测试历史-Run Unit Tests。1.8 根据结果完善测试脚本开发人员每次

25、测试执行完成后,会在源代码上用颜色区分开已覆盖的代码行和未被覆盖到的代码行,可以此完善测试脚本(默认绿色是已覆盖,红色是未覆盖)。1.9 查看结果在测试用例浏览器中查看详细信息。这包括: 测试的通过 / 失败状态将用不同的颜色加以显示 测试执行统计信息1.10 生成测试报告同静态测试生成报告相同,测试完成后点击“proceed”生成本次此时执行后的测试结果报告。附录 MISRA-C2012规则MISRA-C Coding Standard,C语言编码标准,把所有的规范分为两大类,一类称为指导(Directives),另一类称为规则(Rules)。共计91条。具体参见MISRA-C2012ind

26、ex.html 详细规则说明。 MISRA C 2012 Directives MISRA2012-DIRo 使用多重包含保护机制 MISRA2012-DIR-4_10-3 o 禁止使用动态内存分配 MISRA2012-DIR-4_12-3o 所有汇编程序的使用应该被注释说明 MISRA2012-DIR-4_2-4o 嵌入汇编程序时嵌入的过程应该是纯汇编程序 MISRA2012-DIR-4_3-3o 代码段落不应该被“注释掉” MISRA2012-DIR-4_4-4o 函数应该优先于类似函数宏的使用 MISRA2012-DIR-4_9-4 MISRA C 2012 Rules MISRA201

27、2-RULEo 禁止强制类型转换操作删除以指针指定的 const 或 volatile 限制 MISRA2012-RULE-11_8-3o 字面量零 (0) 不得用作空指针常量 (null-pointer-constant) MISRA2012-RULE-11_9_a-3o 用 NULL 来代替字面零 (0) 作为空指针常量 MISRA2012-RULE-11_9_b-3o 不应该使用逗号运算符 MISRA2012-RULE-12_3-4o 初始化器列表不应该包含持久的副作用 MISRA2012-RULE-13_1_a-3o 包含自增 (+) 或自减 (-) 运算符的表达式不应该有其它潜在的副

28、作用 MISRA2012-RULE-13_3-4o 不得使用一个内置赋值运算符的结果 MISRA2012-RULE-13_4-4o 逻辑 & 或者 | 运算符的右边操作数不应该包含副作用 MISRA2012-RULE-13_5-3o sizeof 操作符的参数不应该是含副作用的表达式 MISRA2012-RULE-13_6_a-2o 不应该在sizeof操作符的操作数中访问由一个不稳定的数值指定的对象 MISRA2012-RULE-13_6_b-2o 函数调用不得是 sizeof 运算符的操作数 MISRA2012-RULE-13_6_c-2o 不应该使用 goto 语句 MISRA2012-

29、RULE-15_1-4o goto 语句应该跳转到随后在同一个函数中声明的标签 MISRA2012-RULE-15_2-3o 任何由 goto 语句引用的标签应该声明在同一个模块中,或者在一个包围 goto 语句的模块中 MISRA2012-RULE-15_3-3o 对于任何循环语句,不要有超过一个 break 或 goto 语句用于循环终止 MISRA2012-RULE-15_4-4o 函数应该在其最后有单一的出口 MISRA2012-RULE-15_5-4o switch, while, do.while 或 for 语句的主体应该是复合语句 MISRA2012-RULE-15_6_a-3o 在 if 和 else 之后应该紧跟着复合语句 MISRA2012-RULE-15_6_b-3o 所有的 if.else-if 结构中应该由 else 分支结束 MISRA2012-RULE-15_7-3o 只能当最接近的封闭复合语句是 switch

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1