中文

FAPR:面向入门编程课程的快速准确程序修复

软件工程 2021-07-15 v1

摘要

在入门编程课程中,教师很难对学生错误程序提供调试反馈。一些近期工具通过识别错误程序与正确程序之间的差异自动提供程序修复反馈,但存在可扩展性、准确性及跨语言可移植性方面的问题。本文提出FAPR——一种基于程序差异以快速准确方式建议修复的新方法。FAPR与现有工具在三个方面不同。首先,它将语法信息编码为词元序列,以实现错误程序与正确程序间的高速比对。其次,为准确提取程序差异,FAPR采用一种最大化词元级匹配并最小化语句级差异的新型匹配算法。第三,FAPR依赖测试而非静态/动态分析来验证和精炼候选修复,从而消除了复杂程序分析带来的语言依赖性或高运行时开销。我们实现了FAPR以对C和C++程序建议修复;我们的经验显示了FAPR极佳的跨语言可移植性。更重要的是,我们实证将FAPR与最先进工具Clara进行比较。FAPR对超过95.5%的错误解建议了修复。我们在FAPR的建议中抽样250个修复,发现89.6%的样本为最小且正确。FAPR在更多案例建议修复、生成更小修复、产生更高质量修补以及引起更低运行时开销方面优于Clara。我们的结果表明,FAPR可潜在帮助教师或助教有效定位错误代码中的缺陷,并基于这些生成的修复提供调试提示/指南。

关键词

引用

@article{arxiv.2107.06550,
  title  = {FAPR: Fast and Accurate Program Repair for Introductory Programming Courses},
  author = {Yunlong Lu and Na Meng and Wenxin Li},
  journal= {arXiv preprint arXiv:2107.06550},
  year   = {2021}
}

备注

12 pages, 5 figures for main text; 3 pages, 5 figures for appendix