版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录1 Testbed功能介绍1.1.1 编程规则验证 1.1.2 数据流分析1.1.3 控制流分析1.1.4 表达式分析2.1.5 接口分析2.1.6 软件质量度量分析2.2 使用Testbed进行编码规则的定制和检查 32.1 确定测试需求 3.2.2 建立测试工程3.2.3 定制代码分析规则6.2.4 配置 Report选项1.2.5 分析执行及结果查看8.3 结果分析及测试报告编写93.1 质量度量信息的获取 9.3.2 程序质量度量报告单1.13.3 静态分析质量报告单12附录A :静态分析推荐规则使用说明1.1 Testbed功能介绍1.1编程规则验证编程标准验证是高可靠性软件开发
2、不可缺少的软件质量保证方法,使用LDRA Testbed自动地验证应用软件是否遵循了所选择的编程规则。编程规则由 软件项目管理者根据自身项目的特点并参考现有的成熟的软件编程标准制定,如DERA (欧洲防务标准),MISRA (汽车软件标准),LDRA Testbed依据此规则 搜索应用程序,并判断代码是否违反所制定的编程规则。LDRA Testbed报告所有违反编程规则的代码并以文本方式或图形反标注的方式显示。测试人员或编程人员可根据显示的信息对违反编程规则的代码进行修改。1.2数据流分析LDRA Testbed分析软件中全局变量、局域变量及过程参数的使用状况,并 以图形显示、HTML或ASC
3、II文本报告方式表示,清晰地识别出变量使用引起 的软件错误,此种方法既可使用于单元级,亦可使用于集成级、系统级。通过Testbed数据流分析功能,可方便地分析出软件中一些可能的程序欠缺,如:1. 没使用的函数参数;2. 不匹配的参数;3. 变量未赋初值就引用;4. 代码中有多余变量;5. 给值传递参数赋值;6. 无返回值的函数路径;7. 函数的实参是全局变量。1.3控制流分析控制流分析检查以下容:1. 不可达代码;2. 不合理的循环结构;3. 存在浮点相等比较;4. 函数存在多个出口;5. 函数存在多个入口。1.4表达式分析表达式分析检查以下容:1. 表达式中的括号使用不当;2. 数组下标越界
4、;3. 存在被零除;4. SWITCH 语句缺少 DEFAULT ;5. CASE语句缺少BREAK ;6. 存在混合运算;7. 对指针进行逻辑比较;8. 在逻辑表达式中使用赋值操作符。1.5接口分析接口分析检查以下容:1. 实参和形参个数不匹配;2. 实参和形参类型不匹配;3. 函数参数定义的结构和调用的结构不一致。1.6软件质量度量分析对于软件开发工程师、项目负责人及高级管理者来说,软件质量的管理与监 控是非常困难的且费时。LDRA Testbed很好地解决了这一问题,使得管理者很 容易地收集正在开发的软件系统的相关信息并判断软件是否满足软件质量标准 要求,从而达到对软件项目的质量跟踪与控
5、制。Testbed提供数据文件接口,用户可基于现行软件标准自行定义适合本系统或项目的软件质量模型。静态分析的软件度量元和相应的说明见表1:表1软件质量度量元说明序号度量元指标要求说明1函数代码行数=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.da实现编码规则的 定制,下面将具体介绍: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
8、Set 选项为例进行说明。2.在Select/Create Se输入框中输入“ Demo”,点击【Create】按钮3.点击【System!按钮(选择Group时,不对代码进行集成测试,只是采 用批处理方式分析单个文件)。4. 点击右上侧【Add】按钮,选择好要分析的文件,点击【Add】按钮后点 【OK】按钮进行确认。Add Filo(o) To Sot冈童找范围二匕匡沓卧-jFqbaseStatiDru epp:sConr.ect icn, epp*msList. epp_UitsJlsg. cjPhoneNumber. epp/|l)fitsServer. epp/ tcpsck. cUm
9、t sCode. c文件名:IbaEeStsti on epp IternzLi st. cpj* FhondTumter epp 汗Add文件趣(T);C/C4+ Fil*s (*. c;*. iac;3* epp;*. cxx3*. cc)Ade with Wildcard:Fl cruise Toldcrs 厂 Vcify Sclcclion2.3定制代码分析规则1.点击菜单栏中的Con figure,在下拉菜单中点击Static Optio ns选项,将会 出现如下窗口,点击cpe n.dat/cpppe n.dat后的Edit按钮,按照提示编辑 cpe n.dat/cpppe n.d
10、at后。若存在已编辑好的编码规则文件,可按旁边的浏览键直 接指定该dat文件,则下面第3步可以省略。5 M2. 编辑第2列,根据实际需求,将对应编码规则置“ 0”或“ T,置“ 0” 代表该条编码规则无效,置“ 1”代表该条编码规则有效。TBbrowse 一 I c pe n. dat I of怪STKNDAfiUS TiXT MUSI BE 5C CELlbCi Oft 壷汨,S retlitv匕 TlTr S 戶1301sPreeednure nanre reusied.0120El nwr,MTSF4/lM:RiJ1 2口口口=:=Here lJjsxi rt a execucLjL/j
11、EJ;a19丄Q豊Uct used11111sNo brcsckets to Loor body I added by Testbedl .M0FA/tEF1210sNc h.T&ci?t3 tc thcTi/e-J-eby TentlBEEip .MTEWMEA13-13-get 口 czc-t e-匚七=日.MTSKA/UEPA14丄0丄电iFzocedaiSil ptLecer dtuLa f-dD1PA 14$151QIS5Ajjuxjyn-u Leld &o etr ucLux nMI8FA/SE?Ji11q昨吕)1 y 1 t 1 r 1141b# 1017017sCode iTi
12、srrT found.HISFA/lEFi13IS-Kc-r te tha i * * * parasre t er 3 i n pr nc皀已工巴.耳4 = . . _ _a1 ,,- i . .-J .”v-|11For Hol?j PEC0JFlLe地Cal盹SCFL輛 EiL* Edji Exifhuz 翌钏匪lp2.4配置Report选项1. Quality Report 配置点击菜单栏中的 Con figure,在下拉菜单中点击 Quality Report Optio ns选项, 将会出现如下窗口,在 Programming Standard Model下拉框中选择“ No Mo
13、del -all standardS。如分析的文件为 C、C+混合类型,则在下图右侧所示下拉列 表中分别选择一个.C和.CPP文件,选中对应文件后选择在 Programming Standard Model 下拉框中选择“ No Model -all sta ndardS。I11 eno4 D: khide 十 udywvd 匚hkeK am在 Optional Configuration 中 Violation Summaries选中“All”,根据需要选 择 Report Violations Only (Quality Report 只列出有违反的)。2. Metrics Report
14、配置点击菜单栏中的Con figure,在下拉菜单中点击 Metrics Report Optio ns选项, 将会出现如下窗口,根据测试需求配置metpen,dat及Kiviat.dat文件。2.5分析执行及结果查看1.点击菜单栏中的 Analysis,在下拉菜单中点击 Select Analysis,将会出现 如下窗口,选择前3项,点击Start Analysis按钮,开始进行静态分析。2.静态分析结束后,点击菜单栏中的In dividual /System Results,选择下拉菜单 Text Results 中的 Quality Report(HTML),查看质量报告。System
15、ResultsQanfi?ure Yi stText Result sraphical Results Analysis Scope Report 町ML IndexOverview Report (ASCII) Overvi ev Report (HTML)Quality Report (ASCII)Qualit y Rupert fHIML)AU mts Server cppNsttics Report (ASCII)Med:rics Kepo讥(HTMLSy st &Tii IfLtegrat iiori Reor-tFrocsdure Parajneters and Qlcbwl薛 K
16、epcrt察 TBUtowf:& - (Testri 尽n 1, rpfr htmlTpjxl首 PiJfi Ejt 些比 现do gbp-knh 、 a ?3 * +Tot*|g uf tfio|liu&E far SuIkcIaJ Q-OHiitp LuJu4iddh 亡 1.1 vt. bviil fiwJ Li ijjru h Jbikni t alAJ. Ll al t 口L f-il i.itJiL-vIlfF i r*li rr . r kaiI JiIv i iri 1 -iafii iff :町 hLs可 Fl a 1.r. ihlitfjrjfrtur rnti/z/tin
17、iHtrbtfnriiifTfft rm h t nvn st3 结果分析及测试报告编写3.1质量度量信息的获取度量度量信息可通过以下几种方式获取:1.查看规则审查报告:点击菜单栏中的In dividual Results/System Results,选择下拉菜单 Text Results 中的 Quality Report (HTML)。度量元指标查看位置具体说明注释度量=20%在 Quality Report (HTML)中 的 Global Basic Information 获取可执行代码行总数与注释行总数注释行总数/ (注释行总数+ 可执行代码行总数)函数代码行数=200Syste
18、m Results菜单下选择Text Results 子菜单中的Quality Report(HTML)函数代码行超过200行函数参数=7函数参数超过7个Goto语句0使用goto语句圈复杂度=10圈复杂度超过10LCSAJ密度=20LCSAJ密度超过202.查看质量度量报告:点击菜单栏中的In dividual Results/System Results,选择下拉菜单 Text Results 中的 Metrics Report (HTML)。度量元指标查看位置具体说明圈复杂度=10Metric Report 中Complexity MetricsCyclomatic Complexity
19、,基本复杂度=4Esse ntial Cyclomatic Complexity控制流结点数=10Knots基本结点数=5Esse ntial KnotsLCSAJ密度=20LCSAJ and Un reachabilityMaximum LCSAJ Den sity扇入度量=7Dataflow In formati onFan In扇出度量=7Fan Out3. 查看图形化报告:点击菜单栏中的System Results选择下拉菜单Graphical Results 中的 Static Bar Charts度量元指标查看位置具体说明圈复杂度=10System Results 菜单下 Grap
20、hical Results 子菜单 中的 Static Bar ChartsCyclomatic Complexity基本复杂度=4Esse ntial Cyclomatic Complexity控制流结点数=10Knots基本结点数=5Esse ntial Knots以圈复杂度为例:选择 Static Bar Charts子菜单下的“ Essential CyclomaticComplexity”,弹出如下所示柱状图,在该界面,将Graph菜单下的Show BarComp onents选中,可查看函数基本圈复杂度具体信息。3.2程序质量度量报告单表2程序质量度量报告单度量元指标说明违反 个数
21、所在软件具体描述函数代码行 数=20%代码的有效注 释率函数参数=7函数参数个数Goto语句0Goto语句数圈复杂度=10控制流图中边 的数量与节点 数量之间的差 值加2基本复杂度=4圈复杂度与流 程图中结构化 子图的数量之 间的差值LCSAJ密度=20LCSAJ密度是一个描述软 件可维护性的 概念控制流结点数=10控制流结点数 表示流程图中 控制流相交的 交点数基本结点数=5将流程图中的 结构化部分简 化成一个点, 简化以后流程 图的结点数是 基本结点数。扇入度量=7调用本函数的 上层函数的个 数扇出度量=7本函数调用下 层函数的个数3.3静态分析质量报告单报告单中列出的审查容根据测试需求确
22、定,其中部分度量指标在质量度量报告中会重复出现,此表可以不列出。审查结果根据根据Quality Report确定。表3静态分析质量报告单审查项目测试容审查结果控制流分析是否存在不可达代码是否是否存在循环条件不可达是否函数是否包含无限循环(无终止条件)是否是否存在无限循环结构是否在循环语句中是否有多个控制变量是否是否存在浮点相等比较是否使用goto语句是否函数是否存在多个入口是否函数是否存在多个出口是否数据流分析是否存在标识名重用是否是否存在没使用的函数参数是否函数不是所有的路径上都有返回值是否函数的实参是全局变量是否代码中有多余变量是否变量未赋初值就引用是否参数与期望的作用不匹配是否给值传递参
23、数赋值是否标识符超过31个字符是否函数定义无相应原型是否存在潜在的无限循环是否指针在使用之前没有进行非空检查是否往没有打开过的文件中写是否文件指针在退出时没有关闭是否表达式分析表达式中使用訂是否存在数组下标越界是否存在被零除是否SWITCH语句是否为空是否SWITCH 语句只含 DEFAULT情况是否SWITCH 语句缺少 DEFAULT是否CASE语句缺少BREAK是否返回类型为VOID的函数出现在表达式中是否函数中是否存在 Return语句为空是否存在混合运算是否对指针进行逻辑比较是否在逻辑表达式中使用赋值操作符是否表达式中使用空函数是否接口分析实参和形参个数不匹配(C+无)是否实参和形参
24、类型不匹配是否函数参数定义的结构和调用的结构不一致是否其它循环体缺少括弧是否函数参数列表为空是否函数参数列表申明不一致是否基本模块中使用#define 定义是否SWITCH 结构含多个(大于 1)DEFAULT是否函数返回类型不一致是否函数和函数的原型的返回不一致是否函数和函数的原型的形参不一致是否函数参数超过7个是否圈复杂度超过10是否LCSAJ密度超过20是否函数代码行超过200行是否附录A :静态分析推荐规则使用说明审查项目Li ne级别测试容对应英文规则控制流分析362M存在不可达代码# Un reachable Code found.184# Con struct leads to
25、in feasible code.185C存在循环条件不可达# In feasible loop con diti on found.40M函数包含无限循环(无终止条件)# Procedure contains infin ite loop.27M存在无限循环结构# Infinite loop used.204M在循环语句中有多个控制变量# More tha n one con trol variable for loop.78M存在浮点相等比较# Equality comparison of floating point.13M使用goto语句# goto detected.58C函数存在多
26、个入口# Procedure has more tha n one entry point59C函数存在多个出口# Procedure has more tha n one exit point数据流分析2M标识名重用# Label n ame reused.41M存在没使用的函数参数# Unu sed procedure parameter.42M函数不是所有的路径上都有返回值# Function does not retur n a value on all paths.43M函数的实参是全局变量# Actual parameter is also global to procedure.
27、44M代码中有多余变量# Variables were declared but n ever used.45M变量未赋初值就引用# UR data flow ano malies found.51M参数与期望的作用不匹配# Parameters do not match expected acti ons.54M给值传递参数赋值# Attempt to cha nge parameter passed by value.12M标识符超过31个字符# Identifierexceeds *significantcharacters.127M函数定义无相应原型# Procedure defi n
28、iti on has no associated prototype.137M存在潜在的无限循环# Potentially infinite loop found.361M指针在使用之前没有进行非空检查# Poin ter not checked for n ull before use380M往没有打开过的文件中写# Attempt to write to unopened file381M文件指针在退出时没有关闭# File poin ter not closed on exit表达式分析192M表达式中的括号使用正确:表达式中使用訂# Curly brackets used in exp
29、ressi on.71M存在数组下标越界# Array bound exceeded.264M存在被零除# Divide by 0 found.82MSWITCH语句是否为空# Empty switch stateme nt.83MSWITCH语句只含DEFAULT情况# Switch contains default only.72MSWITCH 语句缺少 DEFAULT# No default case in switch stateme nt.84MCASE语句缺少BREAK# Switch Case not terminated with break. AV 19386M返回类型为VOID的函数出现在表达式中# Void procedure used in expressi on.88M函数中是否存在 Return语句为空# Function with empty retur n expressi on.153M存在混合运算# Use of mixed mode arithmetic.149M对指针进行逻辑比较# Logical
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 保密协议保密费保密费标准
- 二零二四年度不锈钢医疗设备安装承包合同
- 二零二四年度旅游度假服务合同
- 二零二四年度充电桩租赁服务合同
- 二零二四年度委托合同服务内容标的及具体要求说明
- 印尼劳务合同模板(2篇)
- 劳动协议书(2篇)
- 二零二四年度物业管理有限公司与保安公司保安劳务派遣服务合同
- 二零二四年度食品加工与供应合同
- 二零二四年度跨国技术转让合同标的为专利使用权
- 可行性研究报告编制工作流程
- 国家开放大学《可编程控制器应用实训》形考任务2(实训二)参考答案
- 木薯淀粉预处理及其糖化工艺初步设计
- 我的家庭贡献与责任说课课件
- 国家职业技能鉴定命题技术标准
- 鱼我所欲也-复习 完整版课件
- 食堂自主经营与外包的利与弊【5篇】
- 《安全记心上》优秀(共29张)课件
- 氯乙烯本体聚合制备聚氯乙烯的合成标准工艺
- 洽洽食品人力资源管理制度汇编
- 主题班会:正确处理同学关系(共22张)课件
评论
0/150
提交评论