一句话:通过惰性候选生成紧密集成生成与验证阶段,显著减少重编译与重执行开销的自动程序修复工具。
手工定位并修复缺陷程序中的错误既繁琐又易出错。generate-and-validate(G&V)是常见的自动程序修复方法,它迭代地生成修复候选、编译并针对给定测试执行,但大量重编译与重执行使其代价高昂。SketchFix 将候选生成与验证阶段紧密集成,并利用程序运行时行为进行剪枝(惰性候选生成),从而大幅减少需检验的候选。本文介绍该方法的 Java 实现,作为开源库发布于 GitHub。基于 Defects4J 基准的实验表明,SketchFix 相比其他方法能显著减少重编译与重执行次数,在 AST 节点粒度的表达式修改修复上尤其有效。
Manually locating and removing bugs in faulty program is often tedious and error-prone. A common automated program repair approach called generate-and-validate (G&V) iteratively creates candidate fixes, compiles them, and runs these candidates against the given tests. This approach can be costly due to a large number of re-compilations and re-executions of the program. To tackle this limitation, recent work introduced the SketchFix approach that tightly integrates the generation and validation phases, and utilizes runtime behaviors to substantially prune a large amount of repair candidates. This tool paper describes our Java implementation of SketchFix, which is an open-source library that we released on Github. Our experimental evaluation using Defects4J benchmark shows that SketchFix can significantly reduce the number of re-compilations and re-executions compared to other approaches and work particularly well in repairing expression manipulation at the AST node-level granularity.The demo video is at: https://youtu.be/AO-YCH8vGzQ.
DOI 原文 ·
@inproceedings{paperbot4595,
title = {SketchFix: a tool for automated program repair approach using lazy candidate generation},
author = {Jinru Hua and Mengshi Zhang and Kaiyuan Wang and Sarfraz Khurshid},
booktitle = {FSE},
year = {2018},
doi = {10.1145/3236024.3264600}
}