当前位置: X-MOL 学术IEEE Trans. Softw. Eng. › 论文详情
Our official English website, www.x-mol.net, welcomes your feedback! (Note: you will need to create a separate account there.)
Program Repair With Repeated Learning
IEEE Transactions on Software Engineering ( IF 7.4 ) Pub Date : 2022-04-05 , DOI: 10.1109/tse.2022.3164662
Liushan Chen 1 , Yu Pei 2 , Minxue Pan 3 , Tian Zhang 4 , Qixin Wang 2 , Carlo A. Furia 5
Affiliation  

A key challenge in generate-and-validate automated program repair is directing the search for fixes so that it can efficiently find those that are more likely to be correct. To this end, several techniques use machine learning to capture the features of programmer-written fixes. In existing approaches, fitting the model typically takes place before fix generation and is independent of it: the fix generation process uses the learned model as one of its inputs. However, the intermediate outcomes of an ongoing fix generation process often provide valuable information about which candidate fixes were “better”; this information could profitably be used to retrain the model, so that each new iteration of the fixing process would also learn from the outcome of previous ones. In this paper, we propose the Liana technique for automated program repair, which is based on this idea of repeatedly learning the features of generated fixes. To this end, Liana uses a fine-grained model that combines information about fix characteristics, their relations to the fixing context, and the results of test execution. The model is initially trained offline, and then repeatedly updated online as the fix generation process unravels; at any step, the most up-to-date model is used to guide the search for fixes—prioritizing those that are more likely to include the right ingredients. In an experimental evaluation on 732 real-world Java bugs from 3 popular benchmarks, Liana built correct fixes for 134 faults (83 ranked as first in its output)— improving over several other generate-and-validate program repair tools according to various measures.

中文翻译:

反复学习程序修复

生成和验证自动程序修复的一个关键挑战是指导修复的搜索,以便它可以有效地找到那些更有可能是正确的。为此,有几种技术使用机器学习来捕获程序员编写的修复程序的特征。在现有方法中,通常会进行模型拟合在修复生成之前并独立于它:修复生成过程使用学习模型作为其输入之一。然而,正在进行的修复生成过程的中间结果通常会提供有关哪些候选修复“更好”的有价值信息;此信息可用于重新训练模型,这样修复过程的每次新迭代也可以从之前的结果中学习。在本文中,我们提出用于自动化程序修复的 Liana 技术,它基于这种思想反复学习生成的修复程序的功能。为此,Liana 使用细粒度模型,该模型结合了有关修复特征、它们与修复上下文的关系以及测试执行结果的信息。该模型最初是离线训练的,然后随着修复生成过程的展开反复在线更新;在任何一步,都会使用最新的模型来指导修复的搜索——优先考虑那些更有可能包含正确成分的模型。在对来自 3 个流行基准测试的 732 个真实世界 Java 错误的实验评估中,Liana 为 134 个错误(83 个在其输出中排名第一)构建了正确的修复程序——根据各种措施改进了其他几个生成和验证程序修复工具。
更新日期:2022-04-05
down
wechat
bug