Hybrid Automated Program Repair by Combining Large Language Models and Program Analysis

2024年06月03日
  • 简介
    自动程序修复(APR)因其可以简化人类开发者的错误修复过程而受到了广泛关注。最近,基于LLM的APR方法已经显示出修复真实世界错误的潜力。然而,现有的APR方法通常使用LLM生成的补丁而没有进一步的优化,导致由于缺乏程序特定知识而降低了有效性。此外,这些APR方法的评估通常是在假定完美故障定位的情况下进行的,这可能不能准确反映它们在实际环境中的有效性。为了解决这些限制,本文介绍了一种创新的APR方法,称为GIANTREPAIR。我们的方法利用了LLM生成的补丁虽然不一定正确,但提供了有价值的指导补丁生成过程的见解。基于这一见解,GIANTREPAIR首先从LLM生成的补丁中构造补丁骨架以限制补丁空间,然后通过实例化骨架进行上下文感知的补丁生成,生成特定程序的高质量补丁。为了评估我们方法的性能,我们进行了两个大规模的实验。结果表明,GIANTREPAIR不仅比直接使用LLM生成的补丁有效地修复更多的错误(在Defects4J v1.2上平均为27.78%,在Defects4J v2.0上为23.40%),而且在完美和自动化故障定位场景下修复了至少42个和7个以上的错误,优于现有的APR方法。
  • 图表
  • 解决问题
    提高自动程序修复的效率和准确性,解决现有方法在程序特定性上的不足和在完美故障定位假设下的限制。
  • 关键思路
    通过利用LLM生成的补丁提供的指导信息,构建补丁框架并进行上下文感知的补丁生成,从而生成适用于特定程序的高质量补丁。
  • 其它亮点
    实验结果表明,GIANTREPAIR可以比直接使用LLM生成的补丁修复更多的缺陷,并且在完美和自动化故障定位的情况下,比现有的APR方法修复更多的缺陷。
  • 相关研究
    与LLM-based APR方法相关的研究包括:Learning to Repair Software Using Code Fragments、Neural Program Repair with Gated Tree-LSTM、DeepRepair: A Deep Learning Approach to Automatic Repair of Bugs in Software
PDF
原文
点赞 收藏 评论 分享到Link

沙发等你来抢

去评论