论文标题
所有人的快速,精确的贴片验证
Fast and Precise On-the-fly Patch Validation for All
论文作者
论文摘要
在过去的十年中,已广泛研究了生成和验证(G&V)自动化程序维修(APR)技术。同时,由于操纵程序代码以制造大量的补丁程序,并且在补丁程序上重复执行测试以识别潜在的修复程序,因此此类技术可能非常耗时。 PRAPR是一种最近的G&V APR技术,它通过直接在编译字体级别的级别上修改程序代码来降低这些成本,并通过允许在同一JVM会话中测试多个补丁来进一步执行即时补丁。但是,PRAPR由于其基于模式的字节级级的性质而受到限制,并且基本上是不正确/不精确的,因为它假设补丁执行不会更改全局JVM状态,并且会在同一JVM会话上影响后来的补丁执行。受PRAPR工作的启发,我们提出了一个名为Uniapr的统一补丁验证框架,该框架旨在通过fifly Patching加快字节码和源代码APR的补丁验证;此外,UNIAPR通过通过运行时字节码转换重置JVM Global状态来解决不精确的补丁验证问题。我们已将UNIAPR作为完全自动化的Maven插件实现。我们还针对最先进的源代码级APR进行了对贴片验证的首次研究。我们的实验表明,第一个经验证据表明,香草在现有的贴片验证可能是不精确/不正确的。相比之下,我们的UNIAPR框架可以通过数量级来加快最新的APR,而不会引起补丁验证的任何不精确,从而使所有现有的APR技术能够探索更大的搜索空间,以在不久的将来修复更多的错误。此外,UNIAPR直接使混合源和字节码APR可以在不久的将来(在同一时间限制下)所有最新的APR技术(在同一时间限制下)更大的错误。
Generate-and-validate (G&V) automated program repair (APR) techniques have been extensively studied during the past decade. Meanwhile, such techniques can be extremely time-consuming due to manipulation of the program code to fabricate a large number of patches and also repeated executions of tests on patches to identify potential fixes. PraPR, a recent G&V APR technique, reduces these costs by modifying program code directly at the level of compiled bytecode, and further performing on-the-fly patching by allowing multiple patches to be tested within the same JVM session. However, PraPR is limited due to its pattern-based, bytecode-level nature and it is basically unsound/imprecise as it assumes that patch executions do not change global JVM state and affect later patch executions on the same JVM session. Inspired by the PraPR work, we propose a unified patch validation framework, named UniAPR, which aims to speed up the patch validation for both bytecode and source-code APR via on-the-fly patching; furthermore, UniAPR addresses the imprecise patch validation issue by resetting the JVM global state via runtime bytecode transformation. We have implemented UniAPR as a fully automated Maven Plugin. We have also performed the first study of on-the-fly patch validation for state-of-the-art source-code-level APR. Our experiments show the first empirical evidence that vanilla on-the-fly patch validation can be imprecise/unsound; in contrast, our UniAPR framework can speed up state-of-the-art APR by over an order of magnitude without incurring any imprecision in patch validation, enabling all existing APR techniques to explore a larger search space to fix more bugs in the near future. Furthermore, UniAPR directly enables hybrid source and bytecode APR to fix substantially more bugs than all state-of-the-art APR techniques (under the same time limit) in the near future.