在程序修复模板挖掘的过程中,由于历史修复信息中存在噪声干扰,导致挖掘出的修复模板可用性不强,程序修复效果不佳。再者,利用修复模板对程序缺陷进行修复是程序自动修复的关键。从修复模板挖掘和程序自动修复两方面出发,提出了一种改...在程序修复模板挖掘的过程中,由于历史修复信息中存在噪声干扰,导致挖掘出的修复模板可用性不强,程序修复效果不佳。再者,利用修复模板对程序缺陷进行修复是程序自动修复的关键。从修复模板挖掘和程序自动修复两方面出发,提出了一种改进的程序自动修复方法APRMT(automatic program repair method based on template mining)。APRMT通过正则匹配消除历史修复信息中的噪声,提高修复模板的准确性;依据程序缺陷代码位置与类型,采用最近最相关策略搜索针对程序缺陷的修复信息,辅助修复模板对程序缺陷进行自动修复。为验证该方法的有效性,APRMT针对4个开源项目进行实验,结果表明:APRMT成功修复了26个缺陷,平均每个缺陷的修复时间为3.1 min。由此可见,APRMT能在更短时间内修复更多的程序缺陷,提升程序自动修复的效果及效率。展开更多
文摘在程序修复模板挖掘的过程中,由于历史修复信息中存在噪声干扰,导致挖掘出的修复模板可用性不强,程序修复效果不佳。再者,利用修复模板对程序缺陷进行修复是程序自动修复的关键。从修复模板挖掘和程序自动修复两方面出发,提出了一种改进的程序自动修复方法APRMT(automatic program repair method based on template mining)。APRMT通过正则匹配消除历史修复信息中的噪声,提高修复模板的准确性;依据程序缺陷代码位置与类型,采用最近最相关策略搜索针对程序缺陷的修复信息,辅助修复模板对程序缺陷进行自动修复。为验证该方法的有效性,APRMT针对4个开源项目进行实验,结果表明:APRMT成功修复了26个缺陷,平均每个缺陷的修复时间为3.1 min。由此可见,APRMT能在更短时间内修复更多的程序缺陷,提升程序自动修复的效果及效率。