Skip to main content
QUICK REVIEW

[論文レビュー] RunBugRun -- An Executable Dataset for Automated Program Repair

Julian Aron Prenner, Romain Robbes|arXiv (Cornell University)|Apr 3, 2023
Software Testing and Debugging Techniques被引用数 7
ひとこと要約

本論文は、8つのプログラミング言語をカバーする45万件のバグあり/バグなしプログラムペアから構成される大規模な実行可能データセットRunBugRunを紹介する。このデータセットは、実行ベースの評価とフィードバックを可能にすることで、神経的プログラム修復(NPR)の発展を促進することを目的としている。このデータセットは、テストベースの検証、エラーメッセージの抽出、実行トレースをサポートし、静的で実行不能な学習データの限界を克服するスケーラブルで多言語対応のベンチマークを提供する。これにより、実行に配慮した修復モデルが、より洗練された意味的正しさの評価を可能にする。

ABSTRACT

Recently, we can notice a transition to data-driven techniques in Automated Program Repair (APR), in particular towards deep neural networks. This entails training on hundreds of thousands or even millions of non-executable code fragments. We would like to bring more attention to an aspect of code often neglected in Neural Program Repair (NPR), namely its execution. Code execution has several significant advantages. It allows for test-based evaluation of candidate fixes and can provide valuable information to aid repair. In this work we present a fully executable dataset of 450,000 small buggy/fixed program pairs originally submitted to programming competition websites written in eight different programming languages. Along with the dataset we provide infrastructure to compile, safely execute and test programs as well as fine-grained bug-type labels. To give a point of reference, we provide basic evaluation results for two baselines, one based on a generate-and-validate approach and one on deep learning. With this dataset we follow several goals: we want to lift Neural Program Repair beyond fully static code representations, foster the use of execution-based features and, by including several different languages, counterbalance the predominance of Java in the current landscape of APR datasets and benchmarks.

研究の動機と目的

  • 神経的プログラム修復(NPR)データセットにおいて、現在静的で実行不能なコード断片に依存している点を是正するため、大規模で実行可能なコードの欠如を解消すること。
  • 既存のベンチマークで支配的であるJavaに偏った影響を軽減するため、8つの多様なプログラミング言語を含めることで、APR研究における言語バイアスを低減すること。
  • 実行ベースの評価とフィードバック(たとえば、テスト通過率や実行時エラーメッセージ)をNPRに可能にし、より正確で意味的に意味のある修復検証を実現すること。
  • 各プログラムペアに対して、詳細な分析とモデル評価を可能にするために、細分化された階層的バグタイプラベルと包括的なテストスイートを提供すること。
  • コンパイルとテスト実行を用いたフィードバックループを支援するスケーラブルで洗練されたデータセットを提供することで、実行に配慮したNPRモデルの開発を促進すること。

提案手法

  • データセットは、プログラミングコンテストのWebサイトから45万件の小さなバグあり/バグなしプログラムペアを抽出することで構築され、各ペアが文法的に有効で実行可能であることを保証している。
  • 各プログラムはサンドボックス環境でコンパイルされ、実行され、テスト結果、エラーメッセージ、実行トレースが収集されている。
  • 各プログラムペアの包括的なテストスイートを用いて、パッチの安全なコンパイル、実行、検証を可能にする標準化されたインfrastrucureが構築された。
  • 修正の性質に基づいて導出された階層的バグタイプラベル(例:control_flow.break.add)がデータセットに含まれており、細分化された分析を可能にしている。
  • データセットは、一貫したデータ分布を保つように訓練・検証・テストに分割されており、すべての分割で実行可能性和テストカバレッジが維持されている。
  • 著者らは、生成・検証モデルとディープラーニングモデルのベースライン評価を提供しており、両者とも語彙的類似度ではなく、テストスイートの実行を用いて評価されている。

実験結果

リサーチクエスチョン

  • RQ1BLEU や正確一致といった静的で語彙的指標と比較して、実行ベースの評価は神経的プログラム修復(NPR)モデルの信頼性を向上させるか?
  • RQ2テスト通過率やエラーメッセージといった実行フィードバックの統合は、NPRモデルのパフォーマンスにどのように影響するか?
  • RQ3多様なプログラミング言語を用いた多言語学習によって、APRシステムの一般化能力と適用可能性はどの程度向上するか?
  • RQ4実行可能テストスイートと静的コード類似度の両方で評価した場合、異なるバグタイプにおけるNPRモデルのパフォーマンスはどのように変化するか?
  • RQ5RunBugRunのような大規模で実行可能なデータセットは、テスト実行結果を用いたフィードバック駆動型学習といった、新たな学習パラダイムを可能にするか?

主な発見

  • データセットには、Go、Ruby、PHP、JavaScriptを含む8つのプログラミング言語で構成される45万件の実行可能なバグあり/バグなしプログラムペアが含まれており、既存のAPRベンチマークが主にJavaに偏っているのとは対照的に、大幅に拡張されている。
  • 実行ベースの評価により、BLEU などの語彙的指標は、意味的に正しい修正でも語彙的変動のためペナルティを受ける可能性があるため、修正の正しさを評価するには不十分であることが明らかになった。
  • このデータセット上で評価されたベースラインモデルは、パッチ検証において静的コード比較よりも、テストスイートの実行がより信頼性が高く意味的に意味のある指標であることを示した。
  • テスト結果やエラーメッセージといった実行フィードバックの統合は、NPRのパフォーマンスを向上させることができ、先行研究ではその小さなサブセットで7%の向上が報告されている。
  • このデータセットは、テスト実行からのフィードバックを用いたモデル学習といった新たな研究分野を可能にし、多言語バグを処理できるポリグロットAPRシステムの開発を支援する。
  • 著者らは、スケール上で実行が可能であるだけでなく、意味的正しさを捉えるためにも不可欠であることを示した。現段階のNPR研究では、このようなデータが未だに不十分に利用されている。

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

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

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

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