"RAP-Gen: Retrieval-Augmented Patch Generation with CodeT5 for Automatic Program Repair" 论文笔记

介绍

(1) 发表

2023-10 FSE'23

(2) 背景

代码库的其他地方通常可以找到修复补丁,这一假设已经得到证实。同时现有 APR 方法的性能通常收到固定的模型参数的限制

(3) 贡献

  • 我们提出了一种用于 APR 的新型 RAG 补丁生成框架 RAP-Gen。它是一个通用框架,可以轻松地与任何序列到序列学习模型集成。据我们所知,这是第一次在基于 DL 的 APR 系统的修复模式挖掘中利用检索功能的工作

  • 我们提出了一种用于修复模式挖掘的混合补丁检索器,它通过稀疏和密集检索器的组合来解释词法和语义匹配。它是一个使用原始源代码的与语言无关的补丁检索器,不需要任何特定于代码的功能

  • 在三个 APR 基准测试中进行了广泛的评估

方法

image-20250313153034143

(1) 混合补丁检索器

用检索到的 bug-fix 对串联输入后来增强原始输入,我们利用一种混合方法将基于词汇的 BM25 和基于语义的 DPR 检索器组合在一起,其中对 DPR 进行了设定的训练,最后加权计算相似度

(2) 补丁生成训练

采用 codeT5,设定输入为 "[CLS]\(X_i\)[BUG]\(B_j\)[FIX]\(F_j\)",其中 [BUG] 和 [FIX] 为特殊的 token,可以将检索的输入添加到 codeT5 中

(3) 推断阶段

在推断期间采用 beam search 来生策划给你一个候选 patch 排名列表,最后软件开发人员进行手动验证来检查最高可能性的修复补丁的正确性

总结

RAG 与 APR 的结合,很不错的一篇工作,没啥可说的

posted @ 2025-03-22 15:53  绵满  阅读(57)  评论(0)    收藏  举报