Automated Patch Correctness Assessment: How Far are We?文章记录

Automated Patch Correctness Assessment: How Far are We?
自动补丁正确性评估:我们还有多远?

摘要

基于测试的自动程序修复(APR)引起了业界和学术界的极大关注。尽管最近的研究取得了重大进展,但过度拟合问题(即生成的贴片看似合理,但过度拟合)仍然是一个长期存在的重大挑战。因此,无论是在补丁生成阶段,还是在APR技术的评估中,已经提出了许多技术来评估补丁的正确性。然而,现有技术的有效性尚未得到系统的比较,对其优缺点知之甚少。为了填补这一空白,本文进行了大规模的实证研究。具体而言,我们基于4个不同类别的21个APR工具自动生成的902个补丁,系统地研究了现有自动补丁正确性评估技术的有效性,包括静态和动态补丁正确性评估技术

我们的实证研究揭示了以下主要发现:(1)关于补丁语法和语义的静态代码特征通常能有效区分过度匹配的补丁和正确的补丁;(2) 动态技术通常可以达到较高的精度,而基于静态代码特征的启发式算法对召回更有效;(3) 现有技术对某些项目和类型的APR技术更有效,而对其他项目和类型的APR技术效果较差;(4) 现有技术之间有高度的互补性。例如,一种技术最多只能检测53.5%的过拟合补丁,而当oracle信息可用时,至少一种技术可以检测到93.3%的过拟合补丁。基于我们的发现,我们设计了一种集成策略,首先通过学习集成静态代码特性,然后通过多数投票策略与其他特性相结合。我们的实验表明,该策略可以显著提高现有补丁正确性评估技术的性能。

1.介绍

我们在本研究中将那些为自动补丁正确性评估而设计的技术称为APCA技术。
不使用oracle修补程序设计的技术可以应用于修补程序生成过程,目的是优先排序和过滤过度拟合的修补程序,从而提高APR技术的精度[77,81]。相反,需要oracle补丁的技术通常用于补丁评估,即评估APR技术的有效性[33,88]。根据现有研究[33,88]的报告,手动注释补丁的正确性是主观的,而且成本相当高,因此,使用oracle信息的APCA技术有助于评估APR技术。

尽管人们在自动补丁正确性评估方面做出了巨大的努力,但现有技术的有效性尚未得到系统的研究和比较。此外,人们对它们的优缺点知之甚少。最近的一项研究报告称,DiffTGen和Randoop通过一项基于189块贴片的实证研究,只能识别不到五分之一的过度贴片[33]。然而,其他先进的APCA技术背后的原因和有效性仍然未知。因此,迫切需要进行全面的实证研究,比较和分析基于大量补丁的所有先进APCA技术的有效性。这样的研究是必要的,它可以帮助我们在设计APCA技术时找到重要问题的答案。例如,现有的APCA技术是否对某些类型的补丁或APR技术更有效?此外,现有技术是否相互补充,它们的集成是否可以提高性能?回答这些问题可以指导研究人员设计更有效的技术。
本研究旨在弥合这一差距,该研究对自动补丁正确性评估进行了系统的实证研究,包括
9种不同的技术和3种基于迄今为止最全面的补丁基准上的8个静态代码特征的启发式方法(即总共902个补丁)
。通过调查每种APCA技术可以识别多少过拟合贴片,我们了解了现有技术的有效性,包括优缺点,并指出了如何改进这些技术。例如,PATCH-SIM可以通过测试用例净化来增强,而Daikon可以通过考虑不变量的特性来改进。我们的研究还得出以下重要结论:
F1:基于
静态特征的启发式算法测量补丁语法和语义,通常可以有效区分过度拟合的补丁和正确的补丁
,从而实现高召回率。
F2:动态APCA技术可以实现高精度,而大多数技术都会将正确的贴片标记为过度拟合。此外,使用oracle信息的这些技术产生的误报数量较少(即少于10.0%)
F3:现有技术对某些项目和类型的APR技术更有效,而对其他项目和类型的APR技术不太有效
在这里插入图片描述

F4:现有技术之间有高度的互补性。单个技术最多只能检测53.5%的过拟合补丁,而当oracle信息可用时,至少一种技术可以检测到93.3%的过拟合补丁。

基于我们的发现,我们设计了一种集成策略,首先利用机器学习模型集成不同的静态代码特性,然后通过多数投票策略将学习到的模型与其他APCA技术相结合。我们的实验表明,该策略可以显著提高现有APCA技术的性能。具体来说,我们的策略可以识别66.5%的过度拟合补丁,同时利用oracle信息保持99.1%的高精度。如此高的召回率比当前最有效的技术高出25.0%。

3.研究设计

3.1APCA技术选择

我们的研究选择了所有最先进的技术来评估Java程序的补丁正确性。这项研究的重点是Java,因为它是程序修复社区中最有针对性的语言。此外,有很多APR工具已经在现实世界的Java程序中进行了评估,为我们的研究提供了现成的补丁。具体而言,我们考虑生活审查的APR由蒙普鲁斯(57),以确定这些技术。

静态代码功能:许多研究建议利用静态代码功能,将正确的补丁优先于过度匹配的补丁[34、77、80],最近的一项研究[2]证明了这些功能的有效性。例如,ssFix[80]建议利用基于令牌的代码语法表示来识别与语法相关的代码片段,以生成正确的补丁。S3提出了六个特性来度量候选解决方案和原始错误代码之间的语法和语义距离[34],然后利用这些特性来确定正确补丁的优先级和识别。这些特征被命名为AST差分、余弦相似性、变量和常数的局部性、模型计数、输出覆盖和反模式。CapGen提出了三种上下文感知模型,将正确的补丁优先于过度拟合的补丁,分别是系谱模型、变量模型和依赖模型[77]。虽然这些特征通常用于在补丁生成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值