Skip to main content
QUICK REVIEW

[논문 리뷰] Towards Generating Functionally Correct Code Edits from Natural Language Issue Descriptions

Sarah Fakhoury, Saikat Chakraborty|arXiv (Cornell University)|2023. 04. 07.
Software Engineering Research인용 수 7
한 줄 요약

이 논문은 기능적으로 올바른 코드 수정을 생성하는 데 있어 대규모 언어 모델(Large Language Models, LLMs)의 성능을 평가하기 위해, 283개의 Java 버그 수정 사례에 자연어로 기술된 코드 변경 사항을 포함한 벤치마크 데이터셋인 Defects4J-Nl2fix를 소개한다. 이는 자연어 기반의 코드 수정 요청에서 기능적으로 정확한 코드 수정을 생성하는 데 있어 최신 LLMs가 최대 21.20%의 top-1 정확도와 35.68%의 top-5 정확도를 달 đạt하고 있음을 보여주며, 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를 소개하기 위해.
  • 숨겨진 회귀 테스트와 트리거 테스트를 사용하여, 이슈 기술서를 기반으로 정확한 코드 패치를 생성하는 데 있어 최신 LLMs의 성능을 평가하기 위해.
  • 실제 CI 환경에서 테스트가 비용이 많이 들기 때문에, 테스트 셋을 숨긴 상태로 사용함으로써 자동 프로그램 복구(Automated Program Repair, APR)와의 차이를 명확히 하기 위해.

제안 방법

  • Jira 이슈 보고서에서 추출한 자연어 기술서를 활용해 Defects4J 데이터셋을 확장하여, 국소화된 메서드 수준의 변경 사항에 초점을 맞춘다.
  • 버그가 발생한 메서드, 자연어 기반의 이슈 기술서, 시스템 지침을 결합한 프롬프트 템플릿을 구성하여 LLM이 후보 코드 패치를 생성하도록 유도한다.
  • 생성된 패치가 특정 결함을 수정했는지 확인하기 위해 숨겨진 트리거 테스트를 사용하고, 새로운 버그가 발생하지 않았는지 확인하기 위해 숨겨진 회귀 테스트를 활용한다.
  • 두 가지 메트릭을 사용하여 LLM이 생성한 패치를 평가한다: top-1 정확도(첫 번째로 생성된 패치가 정확한지 여부)와 top-5 정확도(정확한 패치가 상위 다섯 개의 출력에 포함되는지 여부).
  • 고정된 프롬프트와 테스트 셋을 사용하여 제어 조건 하에서 여러 최신 LLMs(Codex 및 GPT-3.5-turbo 포함)에 대해 평가 파이프라인을 적용한다.
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실제 이슈 보고서에서 기술된 자연어 기반의 코드 변경 요청을 입력으로 받을 때, 기존의 대규모 언어 모델이 기능적으로 올바른 코드 수정을 생성할 수 있는가?
  • RQ2LLM의 성능은 nl2fix 작업에서 다양한 모델 아키텍처와 온도 설정에 따라 어떻게 달라지는가?
  • RQ3숨겨진 회귀 테스트를 통해 측정했을 때, LLM이 생성한 패치는 결함 수정과 함께 기능을 얼마나 잘 유지하는가?
  • RQ4숨겨진 테스트 셋을 사용하는 상황에서, LLM의 성능은 전통적인 자동 프로그램 복구(APR) 기법과 비교해 어떻게 되는가?

주요 결과

  • 가장 성능이 뛰어난 LLM은 Defects4J-Nl2fix 벤치마크에서 21.20%의 top-1 정확도와 35.68%의 top-5 정확도를 달성하여, 비록 진전이 이루어지고 있지만 여전히 향상 여지가 크다는 점을 시사한다.
  • 전반적으로 LLM은 데이터셋에 포함된 283개의 버그 중 64.6%에 대해 납득할 수 있는 수정을 생성하여, 자연어 기반 변경 요청을 이해하고 실행하는 데 있어 비현저한 능력을 보였다.
  • LLM의 성능은 모델 간에 상당한 차이를 보였으며, Codex 기반 모델이 GPT-3.5-turbo보다 top-1 및 top-5 정확도 모두에서 뛰어난 성능을 보였다.
  • 평가 기간 동안만 접근 가능한 숨겨진 테스트 셋을 사용함으로써, 기능적 정확성에 대한 현실적인 평가가 가능했으며, 이는 기존의 APR 작업과 달리 알려진 테스트 셋에 의존하지 않는 점에서 차별화되었다.
  • 연구 결과에 따르면 LLM은 종종 문법적으로는 유효하지만 의미적으로 잘못된 패치를 생성하는 경향이 있어, 자연어에서 프로그램 동작을 이해하고 추론하는 데서 여전히 도전 과제를 안고 있음을 드러냈다.
  • 결과적으로 LLM은 이슈 기술서에서 고수준의 의도를 이해할 수는 있지만, 정확한 코드 변환을 위해 필요한 정밀한 의미론적 추론 능력에는 아직 부족함을 보이고 있음을 시사한다.
(a) Temp=0.8
(a) Temp=0.8

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.