基于变异配置选择的编译器错误恢复故障检测方法与系统
- 国知局
- 2024-09-14 14:30:40
本发明涉及一种基于变异配置选择的编译器错误恢复故障检测方法与系统,属于软件测试、编译器前端模糊测试领域。
背景技术:
1、编译器错误恢复诊断是编译器在编译不符合语法规范的代码时,由编译器内部的错误处理模块输出的一种诊断信息,例如代码中存在非法字符和非法符号等词汇,或者导致软件项目内存安全问题和漏洞的语义错误等。错误恢复诊断描述了不符合语法规范代码的位置信息(例如行号和列号)、错误恢复诊断的原因以及如何修复代码错误的建议。通常情况下,开发人员可以使用错误恢复诊断来识别和调试代码中存在的编程错误。例如,在学习不熟悉的编程语言的初始阶段,有经验的开发人员利用编译器的诊断输出来推测编程错误的可能原因;大多数谷歌开发人员也会通过分析编译器诊断的输出来修复日常维护中的系统构建故障。
2、如果编译器错误恢复诊断出现了故障,那么编译器可能会使用误导性的、不准确或模糊的句子来描述编程错误的原因,或者提供不准确的编程错误在代码中的具体位置,从而使得开发人员无法准确发现代码异常,甚至可能引发一系列不可估量的严重后果。因此,检测编译器错误恢复故障至关重要。
3、由于测试程序和编译器错误恢复诊断的复杂性,很难确定测试程序中可能触发编译器错误恢复缺陷的敏感结构。此外,由于错误敏感结构可能出现在测试程序的任何地方,因此几乎不可能使用所有潜在的敏感结构及其组合来检测错误恢复故障。因此,从庞大的程序变异空间中选择一组能够触发多样化编译器错误恢复缺陷的敏感结构非常具有挑战性。
技术实现思路
1、发明目的:针对上述背景技术中存在的问题,本发明目的在于提供一种基于变异配置选择的编译器错误恢复故障检测方法与系统,能够有效地构造多样化错误敏感结构,以更好检测编译器错误恢复缺陷。
2、技术方案:本发明采用的基于变异配置选择的编译器错误恢复故障检测方法,通过设计变异算子和选择代表性变异配置构造多样化错误敏感结构作为编译器输入,包括步骤如下:
3、(1)探索种子程序变异空间,确定所有的潜在变异点,并使用一系列变异算子组成变异配置在程序中构建错误敏感结构;如果某个变异配置能够引发编译器错误恢复缺陷,则将其视为历史已知有缺陷的变异配置;
4、(2)设计变异配置选择算法,通过计算候选变异配置与历史已知有缺陷的变异配置之间的加权距离对变异配置进行数值向量化和归一化,利用最远变异配置优先的选择策略选择代表性变异配置;所述最远变异配置优先的选择策略包括:利用距离向量进行聚类得到最远簇和最近簇,优先从最远簇中选择变异配置,并综合考虑候选变异配置到所有簇中心的变异配置和已选择的变异配置之间的距离为每个候选变异配置计算优先级分数,优先选择排序在列表中顶部的候选变异配置;
5、(3)使用代表性变异配置对种子程序变异,构造错误敏感结构,并采用差分测试对不同编译器的错误恢复诊断进行解析和对齐,分析出不一致的错误恢复信息,从而检测编译器错误恢复故障。
6、进一步地,步骤(1)中所述变异算子包括删除变异算子、插入变异算子和替换变异算子中的一种或多种,所述删除变异算子包括删除程序变量或其属性、删除程序符号、删除运算符中的一种或多种;所述插入变异算子,包括插入程序变量或其属性、插入程序符号、插入运算符中的一种或多种;所述替换变异算子,包括将程序变量或其属性替换为另一个程序变量或其属性、将程序运算符或程序符号替换为另一个程序符号或程序运算符中的一种或多种。
7、进一步地,步骤(1)中变异配置使用布尔向量来表示,定义如下:
8、mutation configuration=(m1,m2,...,mt)
9、其中,mt表示变异配置中的第t个变异算子,1≤t≤t,t表示变异算子数量,mt=1时表示启用该变异算子,mt=0时表示禁用该变异算子。
10、进一步地,步骤(2)中变异配置的数值向量化计算公式如下:
11、
12、其中,候选变异配置为mut=(m1,m2,...,mt),历史已知有缺陷的变异配置集合为mutbug={mutbug,1,mutbug,2,...,mutbug,k},k是历史已知有缺陷的变异配置的数量,并且mutbug,k=(mk,1,mk,2,...,mk,t)表示mutbug中的第k个变异配置的布尔表示,1≤k≤k,w是由mut和mbug,k启用的不同变异算子的权重,表示异或操作。
13、进一步地,权重w的计算公式如下:
14、
15、其中,mut∪mutbug,k表示候选变异配置与第k个历史已知有缺陷的变异配置中变异算子的并集,mut∩mutbug,k表示候选变异配置与第k个历史已知有缺陷的变异配置中变异算子的交集。
16、进一步地,步骤(2)中变异配置的归一化计算公式如下:
17、
18、其中,n表示候选变异配置的数量,di,j表示第i个候选变异配置的距离向量disi中第j个变异算子的向量化数值表示,max{dl,j}表示所有候选变异配置距离向量中第j个变异算子向量化数值的最大值,min{dl,j}表示所有候选变异配置距离向量中第j个变异算子向量化数值的最小值,表示disi中第j个变异算子归一化后的向量化数值表示。
19、进一步地,步骤(2)中最远变异配置优先的选择策略中,候选变异配置mutn的优先级分数的计算方式如下:
20、score(mutn)=d(disn,c)*mini∈i{d(disn,dissel,i)}
21、其中,其中c是所有簇中心的变异配置的距离向量,dissel,i是第i个已选择的变异配置的距离向量,i表示已选择的变异配置的集合。d代表本研究中广泛使用的欧几里得距离函数计算的距离。
22、进一步地,步骤(3)中使用选择的变异配置构造测试程序,并对编译器的前端进行差分测试,具体测试内容如下:
23、设计一个消息解析器和一个消息对齐器,其中消息解析器检查编译器的错误恢复诊断信息是否可解析,并提取相应的诊断信息,从编译器输出信息中解析的所有错误恢复记录都分配给一个集合e;对于编译器c1对应集合e1中的每个错误恢复记录record1,消息对齐器在编译器c2对应集合e2中搜索是否存在相同或类似的错误恢复记录record2;如果不存在这样的record2,当前变异配置构造的测试程序触发一个编译器错误恢复故障。一种基于变异配置选择的编译器错误恢复故障检测系统,包括:
24、程序变异模块,用于探索种子程序变异空间,确定所有的潜在变异点,并使用一系列变异算子组成变异配置在程序中构建错误敏感结构;如果某个变异配置能够引发编译器错误恢复缺陷,则将其视为历史已知有缺陷的变异配置;
25、变异配置选择模块,用于通过计算候选变异配置与历史已知有缺陷的变异配置之间的加权距离对候选变异配置进行数值向量化和和归一化,利用最远变异配置优先的选择策略选择代表性变异配置;所述最远变异配置优先的选择策略包括:利用距离向量进行聚类得到最远簇和最近簇,优先从最远簇中选择变异配置,并综合考虑候选变异配置到所有簇中心的变异配置和已选择的变异配置之间的距离为每个候选变异配置计算优先级分数,优先选择排序在列表中顶部的候选变异配置;
26、以及差分测试模块,用于使用代表性变异配置对种子程序变异,构造错误敏感结构,并采用差分测试对不同编译器的错误恢复诊断进行解析和对齐,分析出不一致的错误恢复信息,从而检测编译器错误恢复故障。
27、一种计算机程序产品,包括计算机程序/指令,所述计算机程序/指令被处理器执行时实现所述的一种基于变异配置选择的编译器错误恢复故障检测方法的步骤。
28、有益效果:本发明与现有技术相比,其显著效果如下:1、通过设计多种变异算子,使得在相同测试时间内,构造出多样化的错误敏感程序,从而检测出更多的编译器错误恢复故障;2、通过设计的最远变异配置优先的选择策略选择代表性变异配置,使得在检测一定数量的错误恢复故障过程中,所需测试时间更少,提高错误恢复故障检测效率。
本文地址:https://www.jishuxx.com/zhuanli/20240914/294474.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表