使用LDRA Testbed对代码进行静态分析
静态分析的主要操作:
①分析对象选择
②分析前的设置
③分析项的选择与分析过程
④分析结果的查看
详细操作如下:
一、分析对象的选择,即如何选择你的分析对象<被分析的文件>;
有两种方式:单个文件分析和以集<set>的形式分析,以集的形式分析可每次分析多个文件
1.单个文件分析选择
打开程序LDRA Testbed,点击Testbed的菜单File→select file 通过文件浏览窗口打开文件要分析的文件,如C:\LDRA_Workarea\Examples\C_testbed_examples\
点击select之后,可以在工具快捷按钮栏的下方看见目前选择的文件
2.以集<set>的形式分析选择
1创建集合<set>,设置集合属性
打开程序LDRA Testbed,点击Testbed的菜单Set→Select/Create/Delete Sets 弹出set创建窗口
在图中上部的Select/Create Sets区域写入set的名字,然后点击下部的Create按钮创建set,此时会弹出set的属性设置对话框,有两种属性可以设置"Group"和"System;"
此两种属性的区别:
Group 只是把set中的多个文件孤立的分析,不会分析文件间代码的相互关系,可作为批量分析使用.
System把set中的多个文件作为一个工程来分析,能够分析文件间的代码的关联,一般都会采用此种属性.
Set创建之后可在窗口中确认如下:
其中demo为set的名字,system为set的属性,<0 files>代表set中目前没有文件
2向集合中添加文件
点击Testbed的菜单Set→List/Add/Remove Files in Sets 弹出添加文件窗口
点击图中的Add按钮,通过文件浏览窗口可添加多个文件到set中.
二、分析前的设置
在分析前需要对工具进行简单的设置,主要包括用户头文件的设置和编码规则集的设置.
1.基本的静态设置,包含头文件和编译宏设置.
点击Testbed菜单configure→static option,弹出static analysis optin对话框,
在选项卡Include files中的内容是对头文件的设置,可关注的设置有,
"Analysis Include files"区域设定头文件的展开方式<即分不分析头文件>,建议选择第二种
Analysis the first instance of each found include
"Interactive include file analysis"区域设定代码中出现头文件包含语句时,工具与用户的交互方式,建议选择第三种Display dialog only when include file not found
"Include Search Directories"区域设置用户头文件的查目录和系统头文件的处理方式
按钮Search Options可设置用户头文件的查目录,可通过浏览方式添加目录
按钮Systen Include Search可设置系统头文件的展开方式,建议设为Don’t Expand
在选项卡macros中设定用户代码编译宏的处理方式
"sysppvar"区域是对编译宏的定义设置,对于在编译命令中定义的宏,而在代码中使用此宏影响代码的编译的情况,需要用户把此宏添加到工具的设置文件中,可点击Edit Default按钮打开文
件sysppvar.dat,在此文件中添加相应的宏定义,宏定义的方式可通过点击蓝的Example显示样例;
"Interactive conditional Preprocessing Options"区域是设置针对代码中未识别的宏的处理与交互方式;如果选中"Interactive Preprocessing",当出现未识别的宏时会弹出对话框,让用户定义此宏,如果不选当出现未识别的宏则不弹窗口;"AutoMacro"设定宏的自动定义处理方式,
"Enable – promt for macro vaule"弹窗提示并让用户指定宏值
"Enable – no promt, use default"不弹窗提示,使用默认值
"Disable – stop static analysis"弹窗,并停止分析
2.代码评审报告设定.
在Testbed菜单configure→code review report options点击,弹出code review report对话框.
在选项卡Report based Configuration中"Programming Standards Model"区域中选择你要生成编码规则检查结果报告所使用的规则集的名字;
在"Additional Detail for each Standards Violation"区域中设定在代码评审结果报告是否包含原代码行号和格式化后的代码行号.
在选项卡Data Files中可以实现对编码规则集的定制,在"Standards Model Editor"区域点击按钮"Launch Editor"可以打开编码规则图形化定制的画面
其中列代表的是具体的规则条目,行代表的是规则集的名称,通过选择框的选择可以把某条规则包含或剔除到规则集内.
3.质量评审报告设定
在Testbed菜单configure→quality review reoport options点击,弹出quality review report对话框,在"Metpen configuration"区域可以设定质量评审报告中每个度量元的上下限的阈值,即可定制质量模型以便生成质量评审报告,点击" C:\LDRA_Toolsuite\metpen.dat"后的"Edit"按钮,可打开质量模型配置文件,修改此文件中度量元的上下限阈值即可修改质量模型.
4.数据对象分析报告设定.
在菜单configure→data object analysis reoport options点击,弹出data object analysis configuration 对话框,设定数据对象分析报告中显示的对象范围.
三、分析项的选择与分析过程
在Testbed菜单analysis→select analysis点击,弹出select analysis对话框,在此对话框中选择要执行的静态分析项:main static analysis、complexity analysis、static data flow analysis、cross reference、information flow analysis、data object analysis,然后点击start analysis 按钮进行分析.
四、分析结果〔报告〕查看
1.单个文件结果查看
点击Testbed菜单Individual results可看到下拉项Source code、Text results、Graphical results分别显示了分析结果,这三个下拉项均可展开,便于用户查看详细的分类结果.
文本化的分析结果:
图形化的分析结果
2.集<set>的结果查看
点击Testbed菜单Set results可看到下拉项Text results、Graphical results分别显示了分析结果,每个下拉项均可展开,便于用户查看详细的分类结果.
3.报告内容介绍
报告内容
文本报告
Analysis scope report分析范围报告
Test manager report测试管理报告,主要包含代码评审和质量评审的总体结果
Code review report代码评审报告,包含编程规范检查的违反情况
Quality review report质量评审报告,包含每个函数的清晰性、可维护性和可测试性总体指标,
以与质量度量标准的每项度量值〔格式化代码信息、函数信息、函数注释信息、注释与可执行代码比例信息、复杂度信息、霍尔斯特德度量信息、循环嵌套信息、LCSAJ与不可达代码信息和数据流信息〕
Design review report设计评审报告,包含函数的入参与返回值的信息
Reformatted code格式化后的代码,可以查看规则违反情况
LCSAJ report LCSAJ报告,包括代码中的LCSAJ的数量与划分细节
LCSAJ test case planner report此报告以函数为单位列出LCSAJ的详细情况,并给出执行此LCSAJ所有满足的条件,可指导用户设计测试用例增加LCSAJ的覆盖率
Data flow analysis report数据流报告,包含变量的使用异常、函数接口参数、全局变量和函数调用关系
Procedure header comment 函数头注释,可以自动生成函数头注释便于用户使用
User defined type report用户自定义类型报告
Cross reference report交叉索引报告,包括所有数据项的分析,类型属性
Information flow analysis report信息流报告,对函数中变量的依赖关系分析,包含强依赖、弱依赖、条件依赖,强定义、弱定义
Data object analysis report数据对象报告,根据单个或一组对象信息获取此对象的所有数据分析情况
图形报告
Static callgraph静态调用关系图,反应函数的层次与调用关系
自动弹窗代码Static flowgraph静态控制流图,反应函数内部的控制流程
Standard kiviat标准kv图
Clarity kiviat清晰性kv图
Maintainability kiviat可维护性kv图
Testability kiviat可测试性kv图
Static bar charts静态柱状图基本结点基本复杂度结点复杂度最大嵌套深度
第1层间隔数目基本块可执行格式化代码行函数注释
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论