
要約
診断フィードバック(例:コンパイラのエラーメッセージ)からプログラムを修復する能力を学ぶ問題について検討する。プログラム修復は以下の2つの理由から困難である。第一に、ソースコードと診断フィードバックの間でシンボルを適切に推論・追跡する必要がある。第二に、プログラム修復に利用可能なラベル付きデータセットは比較的小規模である。本研究では、これらの2つの課題に対して新しい解決策を提案する。第一に、ソースコードと診断フィードバックにおいてプログラム修復に関連するシンボルを結びつける「プログラム-フィードバックグラフ」を導入し、その上でグラフニューラルネットワーク(GNN)を適用することで、推論プロセスをモデル化する。第二に、オンライン上で入手可能なラベルなしプログラムを活用して大量の追加的なプログラム修復例を生成する自己教師学習枠組みを提案し、これを用いてモデルの事前学習を行う。本研究で提案する手法は、2つの応用タスクにおいて評価された:入門レベルのプログラミング課題の修正(DeepFixデータセット)およびプログラム合成の出力を修正する(SPoCデータセット)。最終的なシステムであるDrRepairは、既存手法を大きく上回り、DeepFixデータセットでは68.2%の完全修復率(前人最高比で+22.9%)を達成し、SPoCデータセットでは48.4%の合成成功率(前人最高比で+3.7%)を実現した。