Skip to main content
QUICK REVIEW

[論文レビュー] TransRepair: Context-aware Program Repair for Compilation Errors

Xueyang Li, Shangqing Liu|arXiv (Cornell University)|Oct 8, 2022
Software Testing and Debugging Techniques被引用数 5
ひとこと要約

TransRepair は、誤ったコード、その周囲の文脈、コンパイラの診断フィードバックを活用して、C 言語プログラムにおけるコンパイルエラーの場所特定と正しい修正を同時に実行する、コンテキストに配慮したトランスフォーマー基盤のプログラム修復フレームワークである。1.8M件の合成エラー例を用いた大規模で細分化されたエラーパターンデータセットとエンド・ツー・エンド学習により、ベンチマークデータセット上で 85.6% の単一修復精度と 72.1% の完全修復精度を達成し、最先端の性能を発揮している。

ABSTRACT

Automatically fixing compilation errors can greatly raise the productivity of software development, by guiding the novice or AI programmers to write and debug code. Recently, learning-based program repair has gained extensive attention and became the state-of-the-art in practice. But it still leaves plenty of space for improvement. In this paper, we propose an end-to-end solution TransRepair to locate the error lines and create the correct substitute for a C program simultaneously. Superior to the counterpart, our approach takes into account the context of erroneous code and diagnostic compilation feedback. Then we devise a Transformer-based neural network to learn the ways of repair from the erroneous code as well as its context and the diagnostic feedback. To increase the effectiveness of TransRepair, we summarize 5 types and 74 fine-grained sub-types of compilations errors from two real-world program datasets and the Internet. Then a program corruption technique is developed to synthesize a large dataset with 1,821,275 erroneous C programs. Through the extensive experiments, we demonstrate that TransRepair outperforms the state-of-the-art in both single repair accuracy and full repair accuracy. Further analysis sheds light on the strengths and weaknesses in the contemporary solutions for future improvement.

研究の動機と目的

  • 既存の学習ベースのプログラム修復ツールが文脈的なコードを無視し、正確でない可能性のあるコンパイラのフィードバックに依存するという限界を是正すること。
  • エラー場所周辺の意味的文脈をモデル化し、診断フィードバックを効果的に統合することで、自動コンパイルエラー修復の精度を向上させること。
  • 5種類のエラータイプにまたがる 74 種類の細分化されたエラーパターンを有する、1,821,275 件の合成 C プログラムで構成される高品質で多様なデータセットを構築すること。
  • エラー行の場所特定と正しい修正の生成を同時に実行するエンド・ツー・エンドでコンテキストに配慮したニューラルモデルを設計し、エラーメッセージのみや RNN に依存するアーキテクチャを回避すること。

提案手法

  • 実世界およびインターネット由来の誤った C プログラムから、5 つの主要カテゴリにまたがる 74 種類のコンパイルエラーの細分化分類を導出。
  • 1,821,275 件の正しい C プログラムに、これらの 74 種類のエラーパターンを体系的に挿入するためのプログラム破損技術を設計し、学習用に大規模かつ多様な合成データセットを生成。
  • 誤ったプログラム、その文脈的コード、コンパイラの診断フィードバックを入力として受け取り、エラーの場所特定と修正生成を同時に実行するトランスフォーマー基盤のニューラルネットワークを開発。
  • 未知語(OOV)のコードトークンに対応するため、ポインタジェネレータ機構を統合し、稀なまたは未確認の構文に対しても耐性を高める。
  • エラーの場所特定と修正生成の両方の最適化を目的とした損失関数を用いて、シーケンス・トゥ・シーケンス学習によりエンド・ツー・エンドでモデルを訓練。
  • アブレーションスタディを実施し、文脈とフィードバックの各成分の寄与度を検証。

実験結果

リサーチクエスチョン

  • RQ1コードの文脈とコンパイラのフィードバックを統合することで、エンド・ツー・エンドの深層学習モデルが、従来の手法を上回り、C 言語プログラムにおけるコンパイルエラーの修復性能を向上させられるか?
  • RQ2180万件のエラーを含む大規模で細分化された合成データセットは、モデルの一般化性能と修復精度の向上にどの程度効果的か?
  • RQ3正確なエラーメッセージのアラインメントが存在しない状況下で、コンパイラの診断フィードバックと周囲りのコード文脈が、正確なエラー場所特定と修正生成にどの程度寄与するか?
  • RQ4このタスクにおいて、ポインタ機構を備えたトランスフォーマー基盤のアーキテクチャは、RNN やグラフベースのモデルに比べて、修復性能を向上させるか?
  • RQ5現在の最先端手法の主な失敗モードと限界は何か。今後の設計においてそれらをどのように是正できるか?

主な発見

  • DeepFix ベンチマークにおいて、TransRepair は 85.6% の単一修復精度を達成し、前回の最先端手法 DrRepair(78.3%)を顕著に上回った。
  • TRACER ベンチマークでは、72.1% の完全修復精度を達成し、DrRepair の 65.4% や他のベースラインを上回った。
  • コードの文脈と診断フィードバックの導入により、文脈を無視するモデルと比較して、修復精度が最大 12.7 パcent 点向上した。
  • アブレーションスタディの結果、文脈とフィードバックの両方が重要な構成要素であることが確認され、文脈はエラー場所特定に、フィードバックは修正生成にそれぞれより大きな寄与を示した。
  • モデルは合成データとは異なる実世界のエラー分布に対しても良好に一般化し、耐性を示した。
  • 分析の結果、モデルは複雑な意味的エラーと複数行にわたる修正に対して特に苦戦しており、構造的・意味的推論の処理における改善の余地が示された。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。