中文

Elixir:有效的面向对象程序修复

软件工程 2021-12-22 v1

摘要

本工作受面向对象(OO)程序中对方法调用的普遍使用所驱动,事实上它们在 OO 程序缺陷的补丁中同样普遍。我们提出一种称为 ELIXIR 的生成—验证修复技术,旨在能够生成此类补丁。ELIXIR 激进地使用方法调用(与局部变量、字段或常量同等对待)来构造更具表达力的修复表达式,用于合成补丁。由于更广泛使用方法调用导致的修复空间扩大,通过使用机器学习模型对具体修复进行排序而得到有效应对。该机器学习模型依赖于源自程序上下文(即潜在修复位置周围的代码)与缺陷报告的四个特征。我们实现了 ELIXIR,并在两个数据集上评估它:流行的 Defects4J 数据集与我们新建的 Bugs.jar 数据集,并与我们技术的 2 个基线版本以及代表程序修复最先进水平的其他 5 种技术比较。我们的评估表明,ELIXIR 能将 Defects4J 中正确修复的缺陷数提高 85%(从 14 增至 26),在 Bugs.jar 中提高 57%(从 14 增至 22),同时也显著优于其他最先进修复技术,包括 ACS、HD-Repair、NOPOL、PAR 和 jGenProg。

关键词

引用

@article{arxiv.2112.10915,
  title  = {Elixir: Effective object-oriented program repair},
  author = {Ripon K. Saha and Yingjun Lyu and Hiroaki Yoshida and Mukul R. Prasad},
  journal= {arXiv preprint arXiv:2112.10915},
  year   = {2021}
}