Core Concepts
大規模言語モデルを活用した関数レベルのプログラム自動修復手法の包括的な研究を行い、その性能向上に向けた重要な知見を得た。提案手法SRepairは、従来手法を大幅に上回る修復性能を示した。
Abstract
本研究は、大規模言語モデル(LLM)を活用した関数レベルのプログラム自動修復(APR)手法について包括的に調査した。
まず、LLMを用いた関数レベルAPRの性能を評価した。その結果、LLMそのものが強力な関数レベルAPR手法であることが分かった。一方で、few-shotの適用は必ずしも有効ではなく、モデルによって性能に大きな差が生じることが明らかになった。
次に、バグレポートや単体テストなどの修復関連情報の活用が、関数レベルAPRの性能を大幅に向上させることを示した。特に、これらの情報を活用することで、高コストな文レベルのフォールト位置特定を必要としない修復が可能であることが分かった。
これらの知見に基づき、提案手法SRepairを開発した。SRepairは、修復提案モデルと修復生成モデルからなる2段階のLLMフレームワークを採用し、修復関連情報を効果的に活用することで、従来手法を大幅に上回る修復性能を示した。具体的には、Defects4J データセットの単一関数バグ300個を修復し、これまでの最高記録を85%以上上回った。さらに、複数関数にまたがるバグ32個も修復することに成功した。これは、APR手法として初の快挙である。
Stats
プログラム修復に関する重要な数値:
提案手法SRepairが修復した単一関数バグの数: 300個
SRepairの修復性能は従来最高記録を85%以上上回った
SRepairが初めて修復に成功した複数関数にまたがるバグの数: 32個
Quotes
"LLMそのものが強力な関数レベルAPR手法であることが分かった。"
"バグレポートや単体テストなどの修復関連情報の活用が、関数レベルAPRの性能を大幅に向上させることを示した。"
"提案手法SRepairは、従来手法を大幅に上回る修復性能を示した。"