中文

重访ssFix以改进程序修复

软件工程 2019-03-13 v1

摘要

自动化程序修复(APR)技术的一个分支致力于寻找并复用现有代码进行缺陷修复。ssFix是此类技术中基于语法搜索的一种:它在代码数据库中搜索与缺陷上下文语法相似的代码片段,并复用这些检索到的代码片段来生成补丁。使用这种语法方法,ssFix相对轻量,并被证明优于许多其它APR技术。在本文中,为调查ssFix的真实有效性,我们进行了多个实验以验证ssFix所基于的假设(即,考察复用现有代码进行缺陷修复是否经常可行)并评估其代码搜索与代码复用方法。我们的结果表明,尽管ssFix的基本思想(即复用现有代码进行缺陷修复)是有前景的,ssFix所使用的方法并非最佳且可显著改进。我们提出了一种遵循ssFix基本思想但在代码搜索与复用方法上不同的新修复技术sharpFix。我们在两个缺陷数据集Defects4J和Bugs.jar-ELIXIR上评估了sharpFix和ssFix。结果证实sharpFix相对于ssFix有所改进。对于Defects4J数据集,sharpFix成功修复了共计36个缺陷,并在修复更多缺陷方面优于许多现有修复技术。对于Bugs.jar-ELIXIR数据集,我们比较了sharpFix、ssFix及另外四种APR技术,发现sharpFix具有最佳修复性能。本质上,本文展示了基于语法搜索的方法能有多有效,以及此类方法应使用何种技术。

关键词

引用

@article{arxiv.1903.04583,
  title  = {Revisiting ssFix for Better Program Repair},
  author = {Qi Xin and Steven P. Reiss},
  journal= {arXiv preprint arXiv:1903.04583},
  year   = {2019}
}

备注

12 pages