Skip to main content
QUICK REVIEW

[논문 리뷰] TransRepair: Context-aware Program Repair for Compilation Errors

Xueyang Li, Shangqing Liu|arXiv (Cornell University)|2022. 10. 08.
Software Testing and Debugging Techniques인용 수 5
한 줄 요약

TransRepair는 오류 코드, 그 주변 맥락, 컴파일러 진단 피드백을 활용하여 C 프로그램에서 컴파일 오류를 동시에 국소화하고 올바른 수정을 생성하는 Transformer 기반의 맥락 인식 프로그램 복구 프레임워크이다. 이는 대규모로 세분화된 오류 패tern 데이터셋과 엔드 투 엔드 학습을 통해 최신 기술 수준의 성능을 달성하며, 벤치마크 데이터셋에서 단일 복구 정확도 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종의 오류 패턴을 체계적으로 삽입하기 위한 프로그램 손상 기법을 설계하여, 훈련을 위한 대규모이고 다양한 합성 데이터셋을 생성하였다.
  • 오류가 발생한 프로그램, 그 맥락 코드, 컴파일러 진단 피드백을 입력으로 받아 오류 국소화와 수정 생성을 동시에 수행할 수 있는 Transformer 기반 신경망을 개발하였다.
  • 희귀하거나 알려지지 않은 구문을 다룰 수 있도록 OOV (Out-of-vocabulary) 코드 토큰을 처리하는 포인터-생성기 메커니즘을 통합하여 모델의 강건성을 향상시켰다.
  • 오류 국소화와 수정 생성을 모두 최적화하는 손실 함수를 사용하여, 순서 기반 학습 기반의 엔드 투 엔드 학습을 수행하였다.
  • 공개 벤치마크 두 곳에서 모델을 평가하였으며, 맥락과 피드백 구성 요소의 기여도를 검증하기 위해 추상화 실험(Ablation studies)을 실시하였다.

실험 결과

연구 질문

  • RQ1코드 맥락과 컴파일러 피드백을 통합함으로써, 엔드 투 엔드 딥 러닝 모델이 C 프로그램의 컴파일 오류 복구에서 기존 방법을 능가할 수 있는가?
  • RQ2180만 개의 오류가 포함된 대규모 세분화된 합성 C 프로그램 데이터셋은 모델의 일반화 능력과 복구 정확도 향상에 얼마나 효과적인가?
  • RQ3정확한 오류 메시지 정렬이 없는 상황에서 컴파일러 진단 피드백과 주변 코드 맥락이 오류 국소화와 수정 생성에 얼마나 기여하는가?
  • RQ4이 작업에서 RNN 기반 또는 그래프 기반 모델에 비해 포인터 메커니즘을 갖춘 Transformer 기반 아키텍처가 복구 성능을 향상시키는가?
  • RQ5현재 최신 기술 수준의 접근 방식에서의 주요 실패 원인과 한계는 무엇이며, 향후 설계에서 이를 어떻게 보완할 수 있는가?

주요 결과

  • TransRepair는 DeepFix 벤치마크에서 단일 복구 정확도 85.6%를 달성하여 이전 최신 기술 수준의 방법인 DrRepair(78.3%)를 크게 앞서며 성능을 뛰어넘었다.
  • TRACER 벤치마크에서 TransRepair는 전체 복구 정확도 72.1%를 기록하여 DrRepair의 65.4%와 다른 기준들을 능가하였다.
  • 코드 맥락과 진단 피드백을 포함한 모델은 맥락을 忽略하는 모델 대비 복구 정확도를 최대 12.7%p 향상시켰다.
  • 추상화 실험 결과, 맥락과 피드백 모두 필수적인 구성 요소임을 확인하였으며, 맥락은 오류 국소화에 더 큰 기여를 하고, 피드백은 수정 생성에 더 큰 영향을 미쳤다.
  • 모델는 합성 데이터를 초월한 실제 오류 분포에 대해서도 잘 일반화되어 있어, 실제 환경에서의 신뢰성과 강건성을 입증하였다.
  • 분석 결과, 모델는 복잡한 의미 오류와 다중 라인 수정 처리에서 가장 어려움을 겪고 있어, 향후 설계에서 구조적 및 의미적 추론 능력을 향상시킬 여지가 있음을 시사하였다.

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

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

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

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