系列文章目录
LDRA Testbed软件静态分析_操作指南
LDRA Testbed软件静态分析_自动提取静态分析数据生成文档
LDRA Testbed软件静态分析_Jenkins持续集成_(1)自动进行静态分析的环境搭建
LDRA Testbed软件静态分析_Jenkins持续集成_(2)配置邮件自动发送静态分析结果
LDRA Testbed软件静态分析_软件质量度量
LDRA Testbed软件静态分析_常见问题及处理
LDRA Testbed软件单元测试_操作指南
LDRA Testbed软件单元测试_常见问题及处理
LDRA Testbed软件集成测试_操作指南
LDRA Testbed软件集成测试_常见问题及处理
粉丝问题解答系列文章… …
其他持续更新中… …
文章目录
- 系列文章目录
- 前言
- 一、如何屏蔽特定的静态分析违规项
- 二、如何查看“Code Review”报告
- 三、如何设置默认的代码编辑器
- 四、Window11不兼容问题
- 五、路径不支持中文
- 总结
前言
通过前面的几篇文章,LDRA Testbed软件静态分析的内容基本讲解完了,本篇文章将针对使用Testbed进行软件静态分析的常见问题进行介绍。
一、如何屏蔽特定的静态分析违规项
在软件静态分析过程中,我们经常会遇到以下几种场景:
1、静态分析报出的违规项实际是Testbed工具误报的(所有静态分析工具都有误报的情况,这点要理解);
2、对于有些违规项,人工核查后确认不会有风险,不想对这些代码进行修改;
3、对于历史维护的软件项目,或者项目已进行到尾声才进行软件静态分析,此时检查出的有些违规项的修改牵涉较大,担心修改后引入缺陷或不确定的情况。
以上情况可以通过在源代码中报违规的地方增加注释来规避,此后Testbed再次静态分析时,将不会再报出该违规,避免每次静态分析后都重复查看这些违规项。操作方式如下:
1、针对某一处的某一特定规则的违规:
使用“LDRA_INSPECTED加规则编号”来规避该处的特定规则,如:
int a = 0;
float b = 10.123;
a = b; /*LDRA_INSPECTED 435 S*/
2、指定某一大段代码不进行静态分析:
使用“LDRA_NOANALYSIS”来指定此后的代码不进行所有静态分析,直至“LDRA_ANALYSIS”恢复为止,如:
/* LDRA_NOANALYSIS */
源程序代码……
/* LDRA_ANALYSIS */
二、如何查看“Code Review”报告
以一个“Code Review”报告为示例。首先,最上面是所有规则的违反情况汇总,如下所示:
其中Number of Violations表示所有被静态分析的源代码中违反该条规则的个数;LDRA Code表示违反规则的编号;Mandatory Standards表示强制检查项、Required Standards表示必要检查项、Advisory Standards表示建议检查项,下方是这条规则的概要描述。
1、点击Mandatory/Required/Advisory Standards列的规则英文描述,可以看到该条规则更详尽的解释。
2、点击Number of Violations列的数字(该数字表示扫描的文件中有多少处违背该规则,如下图中的蓝色数字8表示,违背规则“489 S:Insufficient space for operation.一共有8处),会弹出详细的违规列表,格式为“数字 – 文件名 – 函数名”,数字表示该违规项在其在源代码文件的所处行数。
往下翻,还有一个函数级别的违规总结,如下图所示:
三、如何设置默认的代码编辑器
TestBed工具默认的代码编辑器为TextPad,查看起来不是很方便,可以根据自己的需要进行更改,比如更改为使用NotePad++、VSCode、Source Insight等。配置方式如下:
在TBvision软件的Configure下选择Select Source Code Browser:
在弹出的对话框中选择相应的代码编辑器即可(若没安装,需要先自行安装)。
四、Window11不兼容问题
window11系统执行静态分析时,可能会因为兼容性报错(错误提示如下图所示),此时可运行一次SetIpGuardRegistry.exe程序,然后重新执行静态分析即可。(没有SetIpGuardRegistry.exe的朋友,可以后台私信找我要)
五、路径不支持中文
Testbed不支持中文路径,这点一定要注意。不管是新建工程的源码路径,还是导出用例的路径,都不支持中文。
切记这一点,不然报错可能会让你一头雾水,排查费时费力。(一般会报没有这些文件的权限)
总结
好了,到此为止,LDRA Testbed软件静态分析的内容已经全部讲完,如果有问题,欢迎私信提问(不经常登录,回复可能不及时,见谅)。下一篇文章将开始讲解如何使用Testbed进行单元测试。