2 个月前
SampleFix:学习生成功能多样的修复方法
Hossein Hajipour; Apratim Bhattacharyya; Cristian-Alexandru Staicu; Mario Fritz

摘要
自动程序修复在软件开发过程中具有显著提高程序员生产力和软件整体正确性的潜力。近年来,机器学习、深度学习和自然语言处理(NLP)的进展重新点燃了最终完全自动化程序修复过程的希望。然而,以往旨在预测单一修复方案的方法由于对程序员真实意图的不确定性而容易失败。因此,我们提出了一种生成模型,该模型可以学习潜在修复方案的分布。我们的模型被表述为一种深度条件变分自编码器,能够高效地为给定的错误程序采样修复方案。为了确保解决方案的多样性,我们提出了一种新的正则化方法,该方法鼓励在语义嵌入空间中实现多样性。我们在常见编程错误上的评估首次展示了多样化的修复方案生成,并且相比现有最佳方法,我们的模型能够修复高达45%的错误程序。此外,对于65%的成功修复程序,我们的方法能够生成多个具有不同功能的程序。