RAP-Gen: Retrieval-Augmented Patch Generation with CodeT5 for Automatic Program Repair

要約

自動プログラム修復 (APR) は、開発者の手動によるデバッグ作業を軽減し、ソフトウェアの信頼性を向上させるために非常に重要です。
従来の検索ベースの技術は通常、修正パターンをマイニングするためにヒューリスティック ルールや冗長性の仮定に依存していますが、近年では、データ駆動型の方法でプログラム修復プロセスを自動化するディープ ラーニング (DL) ベースのアプローチが急増しています。
ただし、そのパフォーマンスは、APR の非常に複雑な検索空間をモデル化するための固定パラメーター セットによって制限されることがよくあります。
パラメトリック モデルに対するこのような負担を軽減するために、この研究では、以前のバグと修正のペアのコードベースから取得した関連修正パターンを明示的に活用することにより、新しい取得拡張パッチ生成フレームワーク (RAP-Gen) を提案します。
具体的には、コード固有の機能に依存せず、言語に依存しない方法で生のソース コードに基づいて字句一致と意味一致の両方を考慮したハイブリッド パッチ取得ツールを構築します。
さらに、コード認識言語モデル CodeT5 を基盤モデルとして採用し、パッチの取得タスクと生成タスクの両方を統合された方法で容易にします。
私たちは段階的なアプローチを採用しており、パッチ取得ツールが最初に関連する外部のバグと修正のペアを取得して、CodeT5 パッチ ジェネレーターへのバグのある入力を補強し、修復パッチ候補のランク付けされたリストを合成します。
特に、RAP-Gen は、さまざまな種類のバグを修復するために、さまざまなパッチ取得ツールとジェネレーターを柔軟に統合できる汎用 APR フレームワークです。
私たちは、JavaScript の TFix ベンチマーク、Java の Code Refinement および Defects4J ベンチマークを含む 2 つのプログラミング言語の 3 つのベンチマークで RAP-Gen を徹底的に評価します。バグ ローカリゼーション情報は提供される場合と提供されない場合があります。
実験結果は、RAP-Gen がすべてのベンチマークで以前の最先端のアプローチを大幅に上回るパフォーマンスを示していることを示しています。たとえば、818 Defects4J のバグについてさらに 15 のバグを修復します。

要約(オリジナル)

Automatic program repair (APR) is crucial to reduce manual debugging efforts for developers and improve software reliability. While conventional search-based techniques typically rely on heuristic rules or a redundancy assumption to mine fix patterns, recent years have witnessed the surge of deep learning (DL) based approaches to automate the program repair process in a data-driven manner. However, their performance is often limited by a fixed set of parameters to model the highly complex search space of APR. To ease such burden on the parametric models, in this work, we propose a novel Retrieval-Augmented Patch Generation framework (RAP-Gen) by explicitly leveraging relevant fix patterns retrieved from a codebase of previous bug-fix pairs. Specifically, we build a hybrid patch retriever to account for both lexical and semantic matching based on the raw source code in a language-agnostic manner, which does not rely on any code-specific features. In addition, we adapt a code-aware language model CodeT5 as our foundation model to facilitate both patch retrieval and generation tasks in a unified manner. We adopt a stage-wise approach where the patch retriever first retrieves a relevant external bug-fix pair to augment the buggy input for the CodeT5 patch generator, which synthesizes a ranked list of repair patch candidates. Notably, RAP-Gen is a generic APR framework that can flexibly integrate different patch retrievers and generators to repair various types of bugs. We thoroughly evaluate RAP-Gen on three benchmarks in two programming languages, including the TFix benchmark in JavaScript, and Code Refinement and Defects4J benchmarks in Java, where the bug localization information may or may not be provided. Experimental results show that RAP-Gen significantly outperforms previous state-of-the-art approaches on all benchmarks, e.g., repairing 15 more bugs on 818 Defects4J bugs.

arxiv情報

著者 Weishi Wang,Yue Wang,Shafiq Joty,Steven C. H. Hoi
発行日 2023-09-12 08:52:56+00:00
arxivサイト arxiv_id(pdf)

提供元, 利用サービス

arxiv.jp, Google

カテゴリー: cs.CL, cs.SE パーマリンク