掌桥专利:专业的专利平台
掌桥专利
首页

一种代码覆盖分析的优化方法、装置及电子设备

文献发布时间:2023-06-19 12:07:15


一种代码覆盖分析的优化方法、装置及电子设备

技术领域

本发明涉及基于SCADE的代码覆盖分析技术领域,具体涉及一种代码覆盖分析的优化方法、装置及电子设备。

背景技术

基于SCADE进行的覆盖率分析中,通常一组完整的仿真用例和仿真规程可以使模型覆盖和代码覆盖达到相同的百分比,但是某些情况下因为模型生成的代码包含有额外的防御性编码内容,所以代码覆盖结果可能无法达到模型覆盖分析已经达到的100%,此时需要新增解释记录,使生成的覆盖分析报告满足DO-178C的要求,但是目前这些工作只能通过手动输入特定格式的解释记录,通过命令行运行代码覆盖分析的方式新增解释记录,无法在SCADE IDE中直接完成,极大的增加了代码覆盖分析过程中的工作量。

目前面向SCADE代码覆盖分析过程为:首先,通过SCADE IDE运行代码覆盖,生成代码覆盖报告;之后,基于代码覆盖报告进行代码覆盖分析;然后,通过优化设计模型、增加测试用例以及对未覆盖项增加解释说明增加代码覆盖程度;最终,完成符合各级软件对代码覆盖要求的覆盖分析。其中,增加解释说明过程比较繁杂,具体过程为:首先,通过打开代码覆盖率分析结果路径中的report.txt文件,在文本编辑器搜索“Not Cover”未覆盖项进行分析;其次,对每一个未覆盖项以特定方式逐一编写其解释文件;再次,通过命令行输入SCADE覆盖分析命令的方式重新进行每一个场景的覆盖分析,并配置好代码覆盖分析结果存放的新路径;最后,通过命令行输入命令的方式合并新生成覆盖分析报告与编写的解释文件,最终生成新的html格式的代码覆盖报告。

原有的代码覆盖分析过程过度的依赖手动编辑来推动,由于其过程的复杂性,增加了基于代码覆盖报告进行代码覆盖分析的成本,同时手工执行过程也增加了覆盖分析中错误出现的概率,难以完成DO-178C中对结构覆盖的要求。

发明内容

有鉴于此,本发明实施例提供了一种代码覆盖分析的优化方法、装置及电子设备,至少部分的解决现有技术中存在的问题。

第一方面,本发明实施例提供了一种代码覆盖分析的优化方法,包括以下步骤:

获取待测试代码对应的覆盖分析报告;

定位出所述覆盖分析报告中的未覆盖项,并在所述覆盖分析报告中增加未覆盖项对应的解释链接;

响应针对所述覆盖分析报告中任一解释链接的触发操作,显示解释信息输入界面;

响应所述解释信息输入界面的确认操作,根据所述解释信息输入界面内的输入内容,更新所述覆盖分析报告中所述任一解释链接对应的未覆盖项的解释信息。

根据本发明实施例的一种具体实现方式,所述定位出所述覆盖分析报告中的未覆盖项,并在所述覆盖分析报告中增加未覆盖项对应的解释链接,具体包括:

在所述覆盖分析报告对应的HTML文件中查找包含覆盖分析信息的目标文件;

在所述目标文件的指定标签内查找是否存在表示代码项的覆盖状态为未覆盖的标签,若存在,则确定对应代码项为未覆盖项,并在所述指定标签内添加解释链接对应的链接标签。

根据本发明实施例的一种具体实现方式,所述优化方法还包括:

在所述链接标签中增加监听代码一,所述监听代码一用于监听所述解释链接是否被触发。

根据本发明实施例的一种具体实现方式,所述优化方法还包括:

响应针对所述覆盖分析报告中任一解释链接的触发操作,在所述解释信息输入界面中显示所述未覆盖项的覆盖分析信息,所述覆盖分析信息包括覆盖点路径信息和/或覆盖类型信息。

根据本发明实施例的一种具体实现方式,所述优化方法还包括:

在所述解释信息输入界面中增加监听代码二,所述监听代码二用于监听所述解释信息输入界面内的输入内容是否被确认。

根据本发明实施例的一种具体实现方式,所述根据所述解释信息输入界面内的输入内容,更新所述覆盖分析报告中所述任一解释链接对应的未覆盖项的解释信息,具体包括:

将所述解释信息输入界面内的输入内容作为所述任一解释链接对应的未覆盖项的解释信息,添加到对应的解释文件中;

在所述覆盖分析报告中添加所述任一解释链接对应的未覆盖项的解释信息查看链接,其中,所述解释信息查看链接用于在被触发时显示对应的解释文件。

根据本发明实施例的一种具体实现方式,在所述更新所述覆盖分析报告中所述任一解释链接对应的未覆盖项的解释信息之后,所述优化方法还包括:

将所述覆盖分析报告中所述任一解释链接对应的未覆盖项的覆盖状态修改为已解释;

根据覆盖状态更新所述覆盖分析报告中的覆盖统计数据。

第二方面,本发明实施例提供了一种代码覆盖分析的优化装置,包括:

获取模块,用于获取待测试代码对应的覆盖分析报告;

定位模块,用于定位出所述覆盖分析报告中的未覆盖项,并在所述覆盖分析报告中增加未覆盖项对应的解释链接;

输入模块,用于响应针对所述覆盖分析报告中任一解释链接的触发操作,显示解释信息输入界面;

更新模块,用于响应所述解释信息输入界面的确认操作,根据所述解释信息输入界面内的输入内容,更新所述覆盖分析报告中所述任一解释链接对应的未覆盖项的解释信息。

第三方面,本发明实施例还提供了一种电子设备,该电子设备包括:

至少一个处理器;以及,

与该至少一个处理器通信连接的存储器;其中,

该存储器存储有可被该至少一个处理器执行的指令,该指令被该至少一个处理器执行,以使该至少一个处理器能够执行前述第一方面的任一实现方式中的方法。

第四方面,本发明实施例还提供了一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质存储计算机指令,该计算机指令用于使该计算机执行前述第一方面的任一实现方式中的方法。

本发明的实施例至少具有如下技术效果:

在覆盖分析报告里,用户可以通过解释链接打开解释信息输入界面,通过解释信息输入界面随时更新未覆盖项的解释信息,整个覆盖分析报告随着用户的操作而实时修改,最终得到符合DO-178C中规定的软件级别要求的代码覆盖报告;该方法简化了使用SCADE对代码覆盖分析报告进行解释说明的流程,从而提高代码覆盖分析过程的工作效率。

附图说明

为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍。在所有附图中,类似的元件或部分一般由类似的附图标记标识。附图中,各元件或部分并不一定按照实际的比例绘制。

图1示出了本发明一种代码覆盖分析的优化方法的步骤流程图;

图2示出了本发明一种代码覆盖分析的优化方法的具体实施流程图;

图3示出了本发明实施例所提供的一种代码覆盖分析的优化装置的结构框图;

图4示出了本发明实施例所提供的一种代码覆盖分析的优化电子设备的结构示意图。

具体实施方式

下面将结合附图对本发明技术方案的实施例进行详细的描述。以下实施例仅用于更加清楚地说明本发明的技术方案,因此只是作为示例,而不能以此来限制本发明的保护范围。

需要注意的是,除非另有说明,本申请使用的技术术语或者科学术语应当为本发明所属领域技术人员所理解的通常意义。

需要说明的是,各个模块按照流式布局进行排列,仅仅是本发明的一个实施例,也可以采用其他的方式排列,本发明对此不做限定。

本发明实施例提供的代码覆盖分析的优化方法,可应用于任意一种代码覆盖分析软件,对软件输出的覆盖分析报告进行优化,以简化操作方式。本发明实施例提供的代码覆盖分析的优化方法可以脚本的形式植入任意一种现有的代码覆盖分析软件中,从而在代码覆盖分析软件进行覆盖分析并生成覆盖分析报告的过程中实现相应的功能。

本发明实施例主要以SCADE软件为例,对代码覆盖分析的优化方法的具体实现方法进行说明。

图1示出了本发明实施例提供的一种代码覆盖分析的优化方法的步骤流程图,该方法包括以下步骤:

S101、获取待测试代码对应的覆盖分析报告。

S102、定位出覆盖分析报告中的未覆盖项,并在覆盖分析报告中增加未覆盖项对应的解释链接。

其中,未覆盖项指的是在代码覆盖分析之后,未被覆盖的代码段;未覆盖项的解释链接可添加到覆盖分析报告中该未覆盖项之后的区域内,以可点击的显示状态显示,以指示用户该解释链接是可以点击的,用户点击解释链接后触发跳转至解释信息输入界面。

在一个实施例中,在链接标签中增加监听代码一,监听代码一用于监听解释链接是否被触发。通过添加javascript监听代码块的方式监测解释链接是否被触发,若解释链接被触发,则执行后续相应操作。

S103、响应针对覆盖分析报告中任一解释链接的触发操作,显示解释信息输入界面。

解释信息输入界面可包括输入框和确认提交按钮,输入框内用以供用户输入解释信息相关说明内容,确认输入的内容无误后,用户可通过点击确认提交按钮输入确认操作。

在一个实施例中,在解释信息输入界面中增加监听代码二,监听代码二用于监听解释信息输入界面内的输入内容是否被确认。通过添加javascript监听代码块的方式监测解释信息输入界面内的输入内容是否被确认,若输入内容被确认,则执行后续相应操作。

S104、响应通过解释信息输入界面输入的确认操作,根据解释信息输入界面内的输入内容,更新覆盖分析报告中该解释链接对应的未覆盖项的解释信息。

上述实施例有益效果在于:在覆盖分析报告里,用户可以通过解释链接打开解释信息输入界面,通过解释信息输入界面随时更新未覆盖项的解释信息,整个覆盖分析报告随着用户的操作而实时修改,最终得到符合DO-178C中规定的软件级别要求的代码覆盖报告;该方法简化了使用代码覆盖分析软件(如SCADE)进行代码覆盖分析后,对代码覆盖分析报告进行解释说明的流程,从而提高代码覆盖分析过程的工作效率。

在一个实施例中,步骤S101具体包括如下步骤:

获取当前待测试代码工程的路径,然后在当前项目目录下新建覆盖分析文件夹;

对待测试代码执行的代码级插桩命令;

检索当前工程下的测试规程,执行所有的测试规程,进行代码覆盖分析,生成覆盖分析报告,覆盖分析报告存放于新建的覆盖分析文件夹内。

上述实施例中可利用SCADE软件的代码覆盖分析模块生成覆盖分析报告。

在一个实施例中,用户可根据测试需求预先在代码覆盖分析软件中输入本次测试选择的覆盖方式,例如户输入的覆盖方式可为“MCDC”或“DC”等,代码覆盖分析软件根据用户输入的覆盖方式,对待测试代码进行分析,并生成相应的覆盖分析报告。

在一个实施例中,步骤S102具体包括:

在覆盖分析报告对应的HTML文件中查找包含覆盖分析信息的目标文件;

在目标文件的指定标签内查找是否存在表示代码项的覆盖状态为未覆盖的标签,若存在,则确定对应代码项为未覆盖项,并在指定标签内添加解释链接对应的链接标签;否则确定该目标文件中不存在未覆盖项。

其中,包含覆盖分析信息的目标文件可为指定后缀的文件,例如在SCADE软件中针对C文件进行的代码覆盖分析,后缀为“.c.cov.html”的文件即为目标文件。每个指定标签对应一行被测试的代码,指定标签是用于存储被测试的代码项的覆盖状态的标签,不同的代码覆盖分析软件的指定标签可能不同,例如SCADE软件中的指定标签为标签

  • ,标签
  • 内的类型class的值表示覆盖状态。

    以SCADE软件为例,上述步骤具体为:通过遍历后缀为“.c.cov.html”的目标文件中的标签

  • ,找到其中类型class为“not_covered”且内容包含“:NOT COVERED”的标签
  • ,包含该种类型和内容的标签
  • 所对应的代码即为未覆盖项。进一步地,在待测试代码对应的工程文件夹下,为未覆盖项新建对应的Control_Justifications.html文件(即解释文件),该文件用于存放用户为每个未覆盖项新增的解释信息,同时新建Add_Justification.html文件,该文件为解释信息输入界面文件,用于暂存解释说明的内容以及未覆盖项相关的覆盖分析信息。SCADE软件根据定位到的未覆盖项对应的标签
  • ,在标签
  • 内最后添加内容为“Add Justification”的标签的解释链接,该解释链接为“href=Add_Justification.html”,这样即可在覆盖分析报告中未覆盖项的对应位置处显示用户可操作的解释链接。

    用户在触发覆盖分析报告中显示的解释链接后,SCADE软件会弹出解释输入界面,用户在解释输入界面中输入需要添加的解释信息,用户完成解释信息的输入后点击解释输入界面中的确认按钮,SCADE软件将Add_Justification.html文件中的解释信息添加到对应的Control_Justifications.html文件,完成解释信息的添加。

    该实施例中通过指定后缀的文件及指定标签状态来快速准确定位出未覆盖项,并通过在指定标签内添加解释链接对应的链接标签,进而在覆盖分析报告的各未覆盖项中添加对应的解释链接,方便用户通过触发解释链接快速实现解释信息的添加。

    在一个实施例中,响应针对覆盖分析报告中任一解释链接的触发操作,在解释信息输入界面中显示未覆盖项的覆盖分析信息,覆盖分析信息包括覆盖点路径信息和/或覆盖类型信息。

    其中,在未覆盖项的解释链接被触发时,从未覆盖项对应的标签内容中获取覆盖点路径信息和/或覆盖类型信息等信息,并在解释信息输入界面中显示。

    为此,解释信息输入界面在被显示时可自动获取并显示未覆盖项的覆盖点路径信息和/或覆盖类型信息,方便用户查看并定位对应未覆盖项。

    在一个实施例中,步骤S104具体包括:将解释信息输入界面内的输入内容作为该解释链接对应的未覆盖项的解释信息,添加到对应的解释文件中。

    进一步地,解释信息输入界面内除覆盖点路径信息和覆盖类型信息外,还可以包括由用户输入的作者信息和解释内容信息,在用户确认提交后,解释信息输入界面将上述四项信息全部更新至对应的解释文件中,方便用户查看到完整的信息。

    在一个实施例中,在执行完步骤S104后,本发明实施例的优化方法还包括如下步骤:在覆盖分析报告中添加该解释链接对应的未覆盖项的解释信息查看链接,其中,解释信息查看链接用于在被触发时显示对应的解释文件中对应的解释信息。

    在覆盖分析报告中针对未覆盖项增加解释信息查看链接,这样用户可通过点击解释信息查看链接,打开对应的解释文件,便捷地查看对应的解释信息、覆盖点路径信息、覆盖类型信息、作者信息以及解释内容信息等。进一步地,用户还可以对解释文件中的信息进行修改。

    在一个实施例中,在执行完步骤S104后,本发明实施例的优化方法还包括如下步骤:

    将覆盖分析报告中该解释链接对应的未覆盖项的覆盖状态修改为已解释;

    根据覆盖状态更新覆盖分析报告中的覆盖统计数据。

    其中,覆盖统计数据包括但不限于:已覆盖代码项数量、已解释代码项数量、总代码项数量。

    以SCADE软件为例,在添加完某一未覆盖项的解释信息后,SCADE软件将修改该未覆盖项对应CoverageA.c.cov.html文件中的标签

  • ,将其类型class修改为“justified”,并删除标签内容“NOT COVERED”的项,即将该未覆盖项的覆盖状态修改为已解释。此外,还可以在标签
  • 后面增加内容为“JUSTIFIED”标签的链接,这样即可在覆盖分析报告中该未覆盖项的对应位置处显示用户可操作的解释信息查看链接,用户点击解释信息查看链接,可打开Control_Justifications.html文件,并定位到相应的解释内容。

    进一步地,完成未覆盖项的覆盖状态的修改后,SCADE软件将统计文件中内容为“JUSTIFIED”的标签

  • 的数量just_number,just_number表示已解释代码项数量。然后,从覆盖分析报告的主页index.html文件的标签链接href中,定位到包含“CoverageA.c.html”的列标签,此定位到列标签为第一列,将此列和第三列中的内容innerText修改为just_number,即完成已解释代码项数量的更新。

    以定位到列标签为第一列,获取第二列列标签的内容innerText为number1,number1即为已覆盖代码项数量,获取第三列标签的内容innerText为number2,number2即为已解释代码项数量,并将第四列内容innerText由“number3/number4”修改为“number1+number2/number4”,number4为总代码项数量,判断number1+number2是否等于number4,即判断已覆盖项和已解释项是否等于总代码项数量,从而判断覆盖率是否已达到100%。

    若判断number1+number2等于number4,则将上述定位到的标签的后续第四个标签内容innerText修改为“C”,即COVERED表示已全部覆盖,并其自身及后续四列标签的类型修改为“justified”。表示以解释方式通过的覆盖分析。

    定位覆盖分析报告的主页index.html文件中内容innerText为“Justificationfiles”的标签

    ,将该标签

    下的标签
    删除,并新增标签

  • 相关技术
    • 一种代码覆盖分析的优化方法、装置及电子设备
    • 一种静态代码扫描优化方法、装置、电子设备和存储介质
    技术分类

    06120113178448