版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目 录1Testbed功能介绍11.1编程规则验证11.2数据流分析11.3控制流分析11.4表达式分析21.5接口分析21.6软件质量度量分析22使用Testbed 进行编码规则的定制和检查22.1确定测试需求22.2建立测试工程22.3定制代码分析规则22.4配置Report选项22.5分析执行及结果查看23结果分析及测试报告编写23.1质量度量信息的获取23.2程序质量度量报告单23.3静态分析质量报告单2附录A:静态分析推荐规则使用说明21 Testbed功能介绍1.1 编程规则验证编程标准验证是高可靠性软件开发不可缺少的软件质量保证方法,使用LDRA Testbed 自动地验证应用软
2、件是否遵循了所选择的编程规则。编程规则由软件项目管理者根据自身项目的特点并参考现有的成熟的软件编程标准制定,如DERA(欧洲防务标准),MISRA(汽车软件标准),LDRA Testbed依据此规则搜索应用程序,并判断代码是否违反所制定的编程规则。LDRA Testbed报告所有违反编程规则的代码并以文本方式或图形反标注的方式显示。测试人员或编程人员可根据显示的信息对违反编程规则的代码进行修改。1.2 数据流分析LDRA Testbed分析软件中全局变量、局域变量及过程参数的使用状况,并以图形显示、HTML或ASCII文本报告方式表示,清晰地识别出变量使用引起的软件错误,此种方法既可使用于单元
3、级,亦可使用于集成级、系统级。 通过 Testbed数据流分析功能,可方便地分析出软件中一些可能的程序欠缺,如:1. 没使用的函数参数;2. 不匹配的参数;3. 变量未赋初值就引用;4. 代码中有多余变量;5. 给值传递参数赋值;6. 无返回值的函数路径;7. 函数的实参是全局变量。1.3 控制流分析控制流分析检查以下内容:1. 不可达代码;2. 不合理的循环结构;3. 存在浮点相等比较;4. 函数存在多个出口;5. 函数存在多个入口。1.4 表达式分析表达式分析检查以下内容:1. 表达式中的括号使用不当;2. 数组下标越界;3. 存在被零除;4. SWITCH语句缺少DEFAULT;5. C
4、ASE语句缺少BREAK;6. 存在混合运算;7. 对指针进行逻辑比较;8. 在逻辑表达式中使用赋值操作符。1.5 接口分析接口分析检查以下内容:1. 实参和形参个数不匹配;2. 实参和形参类型不匹配;3. 函数参数定义的结构和调用的结构不一致。1.6 软件质量度量分析对于软件开发工程师、项目负责人及高级管理者来说,软件质量的管理与监控是非常困难的且费时。LDRA Testbed很好地解决了这一问题,使得管理者很容易地收集正在开发的软件系统的相关信息并判断软件是否满足软件质量标准要求,从而达到对软件项目的质量跟踪与控制。Testbed 提供数据文件接口,用户可基于现行软件标准自行定义适合本系统
5、或项目的软件质量模型。静态分析的软件度量元和相应的说明见表1:表 1 软件质量度量元说明序号度量元指标要求说明1函数代码行数<=200函数包含的语句数。2注释度量>=20%代码的有效注释率。3函数参数<=7函数参数个数。4Goto语句0Goto语句数。5圈复杂度<=10控制流图中边的数量与节点数量之间的差值加2。6基本复杂度<=4圈复杂度与流程图中结构化子图的数量之间的差值;基本复杂度高意味着非结构化程度高,难以模块化和维护。7LCSAJ密度<=20LCSAJ 密度是一个描述软件可维护性的概念,它是指当改变一行代码时,对其它线性代码顺序和跳转的影响程度,值越
6、大说明影响的测试路径相对越多,因此系统可维护性越低。8控制流结点数<=10控制流结点数表示流程图中控制流相交的交点数。9基本结点数<=5将流程图中的结构化部分简化成一个点,简化以后流程图的结点数是基本结点数。10扇入度量<=7调用本函数的上层函数的个数。11扇出度量<=7本函数调用下层函数的个数。2 使用Testbed 进行编码规则的定制和检查LDRA Testbed可通过编辑编码规则文件cpen.dat/cppen.dat实现编码规则的定制,下面将具体介绍:2.1 确定测试需求在测试需求分析阶段确定:1. 确定测试对象:整个MSVC工程还是文件集合;纯C文件、纯C+还
7、是C/C+混合文件。2. 确定测试内容:确定静态分析规则,可参考附录A所示静态分析推荐规则使用说明。3. 确定测试“类型”:确定是进行击System分析还是Group分析(选择Group时,不对代码进行集成测试,只是采用批处理方式分析单个文件)。2.2 建立测试工程1. 启动Testbed,根据分析对象,选择测试工程类型。如需对整个MSVC工程进行分析,选择Create Set Based Upon MSVC v6 Project;如分析对象是一个或多个C、C+文件,选择Select/Create/Delete Set。下面以在Set 菜单下选择Select/Create/Delete Set
8、选项为例进行说明。 2. 在Select/Create Set输入框中输入“Demo”,点击【Create】按钮3. 点击【System】按钮(选择Group时,不对代码进行集成测试,只是采用批处理方式分析单个文件)。4. 点击右上侧【Add】按钮,选择好要分析的文件,点击【Add】按钮后点【OK】按钮进行确认。2.3 定制代码分析规则1. 点击菜单栏中的Configure,在下拉菜单中点击Static Options 选项,将会出现如下窗口,点击cpen.dat/cpppen.dat后的Edit 按钮,按照提示编辑cpen.dat/cpppen.dat后。若存在已编辑好的编码规则文件,可按旁
9、边的浏览键直接指定该dat 文件,则下面第3步可以省略。2. 编辑第2 列,根据实际需求,将对应编码规则置“0”或“1”,置“0”代表该条编码规则无效,置“1”代表该条编码规则有效。2.4 配置Report选项1. Quality Report配置点击菜单栏中的Configure,在下拉菜单中点击Quality Report Options 选项,将会出现如下窗口,在Programming Standard Model 下拉框中选择“No Model all standards”。如分析的文件为C、C+混合类型,则在下图右侧所示下拉列表中分别选择一个.C和.CPP文件,选中对应文件后选择在Pr
10、ogramming Standard Model 下拉框中选择“No Model all standards”。在Optional Configuration中Violation Summaries选中“All”,根据需要选择Report Violations Only(Quality Report只列出有违反的)。2. Metrics Report配置点击菜单栏中的Configure,在下拉菜单中点击Metrics Report Options 选项,将会出现如下窗口,根据测试需求配置metpen,dat及Kiviat.dat文件。2.5 分析执行及结果查看1. 点击菜单栏中的Analysi
11、s,在下拉菜单中点击Select Analysis,将会出现如下窗口,选择前3 项,点击Start Analysis 按钮,开始进行静态分析。2. 静态分析结束后,点击菜单栏中的Individual /System Results,选择下拉菜单Text Results 中的Quality Report(HTML),查看质量报告。3 结果分析及测试报告编写3.1 质量度量信息的获取度量度量信息可通过以下几种方式获取:1. 查看规则审查报告:点击菜单栏中的Individual Results/System Results,选择下拉菜单Text Results 中的Quality Report (H
12、TML)。度量元指标查看位置具体说明注释度量>=20%在Quality Report (HTML)中的 Global Basic Information获取可执行代码行总数与注释行总数注释行总数/(注释行总数+可执行代码行总数)函数代码行数<=200System Results菜单下选择Text Results子菜单中的Quality Report(HTML)函数代码行超过200行函数参数<=7函数参数超过7个Goto语句0使用goto语句圈复杂度<=10圈复杂度超过10LCSAJ密度<=20LCSAJ密度超过202. 查看质量度量报告:点击菜单栏中的Indivi
13、dual Results/System Results,选择下拉菜单Text Results 中的Metrics Report (HTML)。度量元指标查看位置具体说明圈复杂度<=10Metric Report中Complexity MetricsCyclomatic Complexity,基本复杂度<=4Essential Cyclomatic Complexity控制流结点数<=10Knots基本结点数<=5Essential KnotsLCSAJ密度<=20LCSAJ and UnreachabilityMaximum LCSAJ Density扇入度量&l
14、t;=7Dataflow InformationFan In 扇出度量<=7Fan Out3. 查看图形化报告:点击菜单栏中的System Results,选择下拉菜单Graphical Results 中的Static Bar Charts。度量元指标查看位置具体说明圈复杂度<=10System Results菜单下Graphical Results子菜单 中的Static Bar ChartsCyclomatic Complexity基本复杂度<=4Essential Cyclomatic Complexity控制流结点数<=10Knots基本结点数<=5Es
15、sential Knots以圈复杂度为例:选择Static Bar Charts子菜单下的“Essential Cyclomatic Complexity”,弹出如下所示柱状图,在该界面,将Graph菜单下的Show Bar Components选中,可查看函数基本圈复杂度具体信息。3.2 程序质量度量报告单表 2 程序质量度量报告单度量元指标说明违反个数所在软件具体描述函数代码行数<=200函数包含的语句数注释度量>=20%代码的有效注释率函数参数<=7函数参数个数Goto语句0Goto语句数圈复杂度<=10控制流图中边的数量与节点数量之间的差值加2基本复杂度<
16、=4圈复杂度与流程图中结构化子图的数量之间的差值LCSAJ密度<=20LCSAJ 密度是一个描述软件可维护性的概念控制流结点数<=10控制流结点数表示流程图中控制流相交的交点数基本结点数<=5将流程图中的结构化部分简化成一个点,简化以后流程图的结点数是基本结点数。扇入度量<=7调用本函数的上层函数的个数扇出度量<=7本函数调用下层函数的个数3.3 静态分析质量报告单报告单中列出的审查内容根据测试需求确定,其中部分度量指标在质量度量报告中会重复出现,此表可以不列出。审查结果根据根据Quality Report确定。表 3 静态分析质量报告单审查项目测试内容审查结果控
17、制流分析是否存在不可达代码是 否 是否存在循环条件不可达是 否 函数是否包含无限循环(无终止条件)是 否 是否存在无限循环结构是 否 在循环语句中是否有多个控制变量是 否 是否存在浮点相等比较是 否 使用goto语句是 否 函数是否存在多个入口是 否 函数是否存在多个出口是 否 数据流分析是否存在标识名重用是 否 是否存在没使用的函数参数是 否 函数不是所有的路径上都有返回值是 否 函数的实参是全局变量是 否 代码中有多余变量是 否 变量未赋初值就引用是 否 参数与期望的作用不匹配是 否 给值传递参数赋值是 否 标识符超过31个字符是 否 函数定义无相应原型是 否 存在潜在的无限循环是 否 指
18、针在使用之前没有进行非空检查是 否 往没有打开过的文件中写是 否 文件指针在退出时没有关闭是 否 表达式分析表达式中使用是 否 存在数组下标越界是 否 存在被零除是 否 SWITCH语句是否为空是 否 SWITCH语句只含DEFAULT情况是 否 SWITCH语句缺少DEFAULT是 否 CASE语句缺少BREAK是 否 返回类型为VOID 的函数出现在表达式中是 否 函数中是否存在Return语句为空是 否 存在混合运算是 否 对指针进行逻辑比较是 否 在逻辑表达式中使用赋值操作符是 否 表达式中使用空函数是 否 接口分析实参和形参个数不匹配(C+无)是 否 实参和形参类型不匹配是 否 函数
19、参数定义的结构和调用的结构不一致是 否 其它循环体缺少括弧是 否 函数参数列表为空是 否 函数参数列表申明不一致是 否 基本模块中使用#define定义是 否 SWITCH结构含多个(大于1)DEFAULT是 否 函数返回类型不一致是 否 函数和函数的原型的返回不一致是 否 函数和函数的原型的形参不一致是 否 函数参数超过7个是 否 圈复杂度超过10是 否 LCSAJ密度超过20是 否 函数代码行超过200行是 否 附录A:静态分析推荐规则使用说明审查项目Line级别测试内容对应英文规则控制流分析362M存在不可达代码# Unreachable Code found. 184# Constru
20、ct leads to infeasible code.185C存在循环条件不可达# Infeasible loop condition found.40M函数包含无限循环(无终止条件)# Procedure contains infinite loop.27M存在无限循环结构# Infinite loop used.204M在循环语句中有多个控制变量# More than one control variable for loop. 78M存在浮点相等比较# Equality comparison of floating point.13M使用goto语句# goto detected.58
21、C函数存在多个入口# Procedure has more than one entry point59C函数存在多个出口# Procedure has more than one exit point数据流分析2M标识名重用# Label name reused.41M存在没使用的函数参数# Unused procedure parameter.42M函数不是所有的路径上都有返回值# Function does not return a value on all paths.43M函数的实参是全局变量# Actual parameter is also global to procedure
22、.44M代码中有多余变量# Variables were declared but never used.45M变量未赋初值就引用# UR data flow anomalies found.51M参数与期望的作用不匹配# Parameters do not match expected actions.54M给值传递参数赋值# Attempt to change parameter passed by value.12M标识符超过31个字符# Identifier exceeds * significant characters.127M函数定义无相应原型# Procedure defini
23、tion has no associated prototype.137M存在潜在的无限循环# Potentially infinite loop found.361M指针在使用之前没有进行非空检查# Pointer not checked for null before use380M往没有打开过的文件中写# Attempt to write to unopened file381M文件指针在退出时没有关闭# File pointer not closed on exit表达式分析192M表达式中的括号使用正确:表达式中使用# Curly brackets used in expressio
24、n.71M存在数组下标越界# Array bound exceeded.264M存在被零除# Divide by 0 found.82MSWITCH语句是否为空# Empty switch statement.83MSWITCH语句只含DEFAULT情况# Switch contains default only.72MSWITCH语句缺少DEFAULT# No default case in switch statement. 84MCASE语句缺少BREAK# Switch Case not terminated with break. AV 19386M返回类型为VOID 的函数出现在表
25、达式中# Void procedure used in expression.88M函数中是否存在Return语句为空# Function with empty return expression.153M存在混合运算# Use of mixed mode arithmetic. 149M对指针进行逻辑比较# Logical comparison of pointers.176M在逻辑表达式中使用赋值操作符# Assignment operator in boolean expression.88M表达式中使用空函数# Void procedure used in expression.接口分析22M
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五版绿色包装材料研发及推广合同2篇
- 2025年度石料厂产品质量安全承包管理合同范本2篇
- 二零二五年度城市综合体建筑设计合同3篇
- 2025年度高新技术企业知识产权质押担保合同范本3篇
- 二零二五版农村小微企业发展借款合同解析论文3篇
- 二零二五年生物制药工艺技术聘用合同2篇
- 二零二五版股权代持协议签订前的合同谈判注意事项3篇
- 二零二五年度建筑工程安全施工环境保护监理合同3篇
- 二零二五版购房合同违约责任条款解析3篇
- 2025年度紧急物资承揽运输合同3篇
- 停车场施工施工组织设计方案
- GB/T 37238-2018篡改(污损)文件鉴定技术规范
- 普通高中地理课程标准简介(湘教版)
- 河道治理工程监理通知单、回复单范本
- 超分子化学简介课件
- 高二下学期英语阅读提升练习(一)
- 易制爆化学品合法用途说明
- 【PPT】压力性损伤预防敷料选择和剪裁技巧
- 大气喜庆迎新元旦晚会PPT背景
- DB13(J)∕T 242-2019 钢丝网架复合保温板应用技术规程
- 心电图中的pan-tompkins算法介绍
评论
0/150
提交评论