Skip to main content
QUICK REVIEW

[論文レビュー] Towards Generating Functionally Correct Code Edits from Natural Language Issue Descriptions

Sarah Fakhoury, Saikat Chakraborty|arXiv (Cornell University)|Apr 7, 2023
Software Engineering Research被引用数 7
ひとこと要約

この論文は、283件のJavaバグ修正を自然言語で記述した変更内容の説明でアノテートされた、大規模言語モデル(LLMs)が関数的に正しいコード編集を生成する能力を評価するためのベンチマークデータセットであるDefects4J-Nl2fixを紹介する。本研究では、最先端のLLMsがこのタスクで最高でtop-1 21.20%、top-5 35.68%の精度を達成することを示し、自然言語の意図からLLMベースのコード修復における進展と限界を浮き彫りにしている。

ABSTRACT

Large language models (LLMs), such as OpenAI's Codex, have demonstrated their potential to generate code from natural language descriptions across a wide range of programming tasks. Several benchmarks have recently emerged to evaluate the ability of LLMs to generate functionally correct code from natural language intent with respect to a set of hidden test cases. This has enabled the research community to identify significant and reproducible advancements in LLM capabilities. However, there is currently a lack of benchmark datasets for assessing the ability of LLMs to generate functionally correct code edits based on natural language descriptions of intended changes. This paper aims to address this gap by motivating the problem NL2Fix of translating natural language descriptions of code changes (namely bug fixes described in Issue reports in repositories) into correct code fixes. To this end, we introduce Defects4J-NL2Fix, a dataset of 283 Java programs from the popular Defects4J dataset augmented with high-level descriptions of bug fixes, and empirically evaluate the performance of several state-of-the-art LLMs for the this task. Results show that these LLMS together are capable of generating plausible fixes for 64.6% of the bugs, and the best LLM-based technique can achieve up to 21.20% top-1 and 35.68% top-5 accuracy on this benchmark.

研究の動機と目的

  • 自然言語によるコード変更の記述から関数的に正しいコード編集を生成するためのベンチマークの不足に対処すること。
  • 実世界のJavaバグ修正283件と、その修正の高レベルな自然言語説明を含むデータセットであるDefects4J-Nl2fixを紹介すること。
  • 隠しレgressionテストと隠しトリガーテストを用いて、issue記述を正しいコードパッチに変換するnl2fixタスクにおける最先端のLLMsの評価を行うこと。
  • 自動プログラム修復(APR)とは異なり、テストが高コストなCI環境を模倣するために、テストスイートを隠し、単に隠しテストスイートのみを用いることで、このタスクを区別すること。

提案手法

  • Jiraのissueレポートから抽出した自然言語によるバグ修正の説明を、Defects4Jデータセットに追加し、局所的なメソッドレベルの変更に焦点を当てる。
  • バグのあるメソッド、自然言語によるissue記述、システム指示を組み合わせたプロンプトテンプレートを構築し、LLMsが候補となるコードパッチを生成するように誘導する。
  • 生成されたパッチが特定の欠陥を修正しているかどうかを検証するために隠しトリガーテストを、新たなレグレッションが生じていないかを確認するために隠しレグレッションテストを用いる。
  • top-1精度(最初に生成されたパッチが正しいかどうか)とtop-5精度(正しいパッチが上位5件の出力内に含まれるか)の2つの指標を用いて、LLMが生成したパッチを評価する。
  • 固定されたプロンプトとテストセットを用い、CodexやGPT-3.5-turboを含む複数のSOTA LLMに対して、制御された条件下で評価パイプラインを適用する。
Figure 1 . Overview of the NL2Fix problem setting. Illustrated is the issue title, description, and plausible fix for the JXPATH-149 bug. The figure demonstrates the standard LLM prompt used to generate candidate patches, and the evaluation of the patches using ground truth trigger and regression te
Figure 1 . Overview of the NL2Fix problem setting. Illustrated is the issue title, description, and plausible fix for the JXPATH-149 bug. The figure demonstrates the standard LLM prompt used to generate candidate patches, and the evaluation of the patches using ground truth trigger and regression te

実験結果

リサーチクエスチョン

  • RQ1実世界のissueレポートからの自然言語によるコード変更の記述をプロンプトとして与えた場合、既存の大規模言語モデルは関数的に正しいコード編集を生成できるか?
  • RQ2nl2fixタスクにおいて、LLMsの性能はモデルアーキテクチャや温度設定の違いによってどのように変化するか?
  • RQ3隠しレグレッションテストを用いて測定した場合、LLMが生成するパッチは欠陥を修正しながらも、機能を保持しているか?
  • RQ4隠しテストスイートを用いる場合、LLMsのnl2fixタスクにおける性能は、従来の自動プログラム修復(APR)手法と比べてどの程度か?

主な発見

  • 最も性能の優れたLLMは、Defects4J-Nl2fixベンチマークでtop-1精度21.20%、top-5精度35.68%を達成した。これは、進展は見られるものの、依然として大幅な改善の余地があることを示している。
  • 全体として、LLMsはデータセットに含まれる283件のバグのうち64.6%について妥当な修正を生成した。これは、自然言語による変更要求を理解し実行する上で、非自明な能力を有していることを示している。
  • LLMsの性能はモデル間で顕著に異なり、CodexベースのモデルがGPT-3.5-turboよりもtop-1およびtop-5精度で優れていた。
  • 評価中にのみアクセス可能な隠しテストスイートの使用により、関数的正しさの現実的な評価が可能になった。これは、従来のAPRタスクとは異なり、既知のテストスイートに依存しない点で、本ベンチマークを区別する要因となった。
  • 研究では、LLMsが文法的に正しいが意味的に誤ったパッチを生成する傾向にあることが明らかになった。これは、自然言語からプログラムの振る舞いを推論する課題の難しさを示している。
  • 結果から、LLMsはissue記述からの高レベルな意図を理解できるものの、正しいコード変換に必要な正確な意味的推論をまだ果たせないことが示唆された。
(a) Temp=0.8
(a) Temp=0.8

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

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

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

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