Defects4J は、Java プロジェクトに由来する実世界のバグのデータセットであり、自動プログラム修復 の手法を評価するベンチマークとして広く用いられている。ここでの記述は、このデータセット全体で評価を行っている RepairAgent:プログラム修復のための自律的な LLM ベースのエージェント に基づく。
内容
データセットは 17 の Java プロジェクトに由来する 835 件の実世界のバグからなる。内訳は、Defects4J v1.2 の 6 プロジェクト由来の 395 件と、Defects4J v2 で追加された 11 プロジェクト由来の 440 件である。各バグには少なくとも 1 つの失敗するテストケースが付属する。プロジェクトには Chart、Cli、Closure、Codec、Collections、Compress、Csv、Gson、JacksonCore、JacksonDatabind、JacksonXml、Jsoup、JxPath、Lang、Math、Mockito、Time が含まれ、最大のものは 174 件のバグを持つ Closure である。RepairAgent の著者らは、正解の修正が平均で 2.9 行を追加して 9.3 行を削除し、平均 381 トークンを変更すると報告している。
利用
RepairAgent:プログラム修復のための自律的な LLM ベースのエージェント は、835 件のバグのうち 164 件を正しく修正し、ChatRepair、ITER、SelfAPR と比較している。比較には、それぞれの手法の著者らが提供したパッチを用いている。汎化性とデータ漏洩の影響の可能性を評価するため(同論文が用いたモデルである GPT-3.5 は、学習時にこれらの Java プロジェクトの一部を見ている可能性がある)、同論文は 2023 年に修正されたバグからなる、より新しい GitBug-Java データセットでも追加の評価を行っている。これとは別に、各バグに少なくとも 1 つの失敗するテストケースがあるという Defects4J の保証は実際の利用では成り立たない場合があることを限界として挙げ、そのようなテストのないバグでの評価を今後の課題としている。