面向所有人的快速且精确的即时补丁验证
软件工程
2020-07-23 v1
摘要
生成-验证(G&V)自动化程序修复(APR)技术在过去的十年中得到了广泛研究。同时,由于需要操纵程序代码以制造大量补丁,并重复执行补丁上的测试以识别潜在修复,此类技术可能极为耗时。PraPR 是近期的一种 G&V APR 技术,它通过在编译后字节码层面直接修改程序代码,并进一步通过允许在同一 JVM 会话中测试多个补丁来进行即时修补,从而降低了这些成本。然而,PraPR 由于其基于模式、字节码层面的性质而存在局限,并且它基本上是不健全/不精确的,因为它假设补丁执行不改变全局 JVM 状态且不影响同一 JVM 会话上后续的补丁执行。受 PraPR 工作的启发,我们提出了一个统一的补丁验证框架,名为 UniAPR,旨在通过即时修补加速字节码和源代码 APR 的补丁验证;此外,UniAPR 通过运行时字节码转换重置 JVM 全局状态,解决了不精确补丁验证的问题。我们已将 UniAPR 实现为一个完全自动化的 Maven 插件。我们还对最先进的源代码级 APR 进行了首次即时补丁验证研究。我们的实验给出了首个经验证据:原始即时补丁验证可能是不精确/不健全的;相反,我们的 UniAPR 框架可将最先进 APR 加速一个数量级以上,且不会在补丁验证中引入任何不精确性,使所有现有 APR 技术能在不久的将来探索更大的搜索空间以修复更多缺陷。此外,UniAPR 直接实现了混合源代码与字节码 APR,在相同时限下可修复比所有最先进 APR 技术(在相同时间限制下)显著更多的缺陷。
引用
@article{arxiv.2007.11449,
title = {Fast and Precise On-the-fly Patch Validation for All},
author = {Lingchao Chen and Lingming Zhang},
journal= {arXiv preprint arXiv:2007.11449},
year = {2020}
}