Skip to main content
QUICK REVIEW

[논문 리뷰] DEAR: A Novel Deep Learning-based Approach for Automated Program Repair

Yi Li, Shaohua Wang|arXiv (Cornell University)|2022. 05. 04.
Software Testing and Debugging Techniques인용 수 11
한 줄 요약

DEAR는 스펙트럼 기반 결함 로컬라이제이션과 BERT 미세조정, 데이터 플로우 분석을 융합하여 다중 훅, 다중 문장 버그를 동시에 수정하는 딥러닝 기반의 자동 프로그램 복구 기법을 제안한다. 두 계층의 트리 기반 LSTM과 사이클 학습, 어텐션 메커니즘을 활용해 정확하고 맥락 인식이 가능한 수정을 생성하며, Defects4J에서 기존 최고 수준의 딥러닝 기반 APR 모델 대비 42%에서 683% 더 많은 버그를 수정하고, BigFix와 CPatMiner에서 다중 훅/다중 문장 버그를 크게 더 잘 수정한다.

ABSTRACT

The existing deep learning (DL)-based automated program repair (APR) models are limited in fixing general software defects. % We present { ool}, a DL-based approach that supports fixing for the general bugs that require dependent changes at once to one or multiple consecutive statements in one or multiple hunks of code. % We first design a novel fault localization (FL) technique for multi-hunk, multi-statement fixes that combines traditional spectrum-based (SB) FL with deep learning and data-flow analysis. It takes the buggy statements returned by the SBFL model, detects the buggy hunks to be fixed at once, and expands a buggy statement $s$ in a hunk to include other suspicious statements around $s$. We design a two-tier, tree-based LSTM model that incorporates cycle training and uses a divide-and-conquer strategy to learn proper code transformations for fixing multiple statements in the suitable fixing context consisting of surrounding subtrees. We conducted several experiments to evaluate { ool} on three datasets: Defects4J (395 bugs), BigFix (+26k bugs), and CPatMiner (+44k bugs). On Defects4J dataset, { ool} outperforms the baselines from 42\%--683\% in terms of the number of auto-fixed bugs with only the top-1 patches. On BigFix dataset, it fixes 31--145 more bugs than existing DL-based APR models with the top-1 patches. On CPatMiner dataset, among 667 fixed bugs, there are 169 (25.3\%) multi-hunk/multi-statement bugs. { ool} fixes 71 and 164 more bugs, including 52 and 61 more multi-hunk/multi-statement bugs, than the state-of-the-art, DL-based APR models.

연구 동기 및 목표

  • 기존 딥러닝 기반 자동 프로그램 복구(APR) 도구가 단일 문장만 수정할 수 있는 한계를 해결하여, 다수의 문장이나 훅에 걸친 종속적인 변경 사항도 처리할 수 있도록 한다.
  • 스펙트럼 기반 결함 로컬라이제이션(SBFL)과 딥러닝, 데이터 플로우 분석을 융합하여 다중 훅, 다중 문장 버그의 결함 로컬라이제이션 정확도를 향상시킨다.
  • 다양한 AST 하위트리에 걸친 복잡한 코드 변환을 학습하고 생성하기 위한 복합적이고 분할 정복 전략을 개발한다.
  • 어텐션과 사이클 학습을 통합한 두 계층의 트리 기반 LSTM을 개선하여 다중 문장 수정에서의 구조적 코드 변경을 효과적으로 학습할 수 있도록 한다.
  • 현재 딥러닝 기반 APR 모델이 효과적으로 처리하지 못하는, 다수의 코드 훅에 걸쳐 조율이 필요한 일반적인 소프트웨어 결함을 종단 간 복구할 수 있도록 한다.

제안 방법

  • 스펙트럼 기반 결함 로컬라이제이션(SBFL)과 미세조정된 BERT를 융합하여 의심스러운 문장을 식별하고, 공동 복구가 필요한 코드 훅을 특정한다.
  • RNN을 활용한 확장 알고리즘을 설계하여 문장을 버그가 있는 것으로 분류하고, 데이터 플로우 분석을 통해 의존적이고 연속적인 문장을 포함하도록 버그 영역을 확장한다.
  • AST 기반의 차이 분석을 통해 버그가 있는 코드와 수정된 코드 간의 세분화된 하위트리 수준의 매핑을 추출하여 정확한 정렬 및 변환 학습을 가능하게 한다.
  • 계층적으로 AST 하위트리를 처리하는 두 계층의 트리 기반 LSTM 모델을 구현하여 분할 정복 전략을 적용해 각 하위트리의 변환을 별도로 학습한다.
  • 어텐션 메커니즘과 사이클 학습을 통해 LSTM을 조율하여 복잡한 다중 문장 코드 변경을 학습하는 데서 일반화 능력과 강건성을 향상시킨다.
  • 수정의 타당성을 보장하고 다른 언어로의 확장성을 지원하기 위해 의미 체크어와 언어에 종속되지 않는 표현 방식을 활용해 후처리를 수행한다.

실험 결과

연구 질문

  • RQ1SBFL, 딥러닝, 데이터 플로우 분석을 융합한 하이브리드 결함 로컬라이제이션 기법이 다중 훅, 다중 문장 버그를 효과적으로 식별하고, 공동 복구가 필요한 경우에 적합한가?
  • RQ2어 attention과 사이클 학습을 통합한 트리 기반의 두 계층 LSTM 모델이 다양한 훅에 걸친 종속적인 다수의 문장에 대해 정확하고 맥락 인식이 가능한 코드 변환을 학습하고 생성할 수 있는가?
  • RQ3DEAR는 일반적인 소프트웨어 결함, 특히 다중 훅/다중 문장 버그의 수정에서 기존의 딥러닝 기반 APR 모델보다 얼마나 더 뛰어난가?
  • RQ4BigFix와 CPatMiner와 같은 대규모 산업 데이터셋에서의 복잡한 실세계 버그를 처리할 때 DEAR는 최고 수준의 기준 모델 대비 얼마나 효과적인가?
  • RQ5복합적이고 하위트리 수준의 변환 학습이 자동 프로그램 복구 모델의 정확도와 일반화 능력에 미치는 영향은 무엇인가?

주요 결과

  • Defects4J 데이터셋에서 DEAR는 최상위 1개의 생성 패치만 고려할 경우, 기존 딥러닝 기반 APR 기준 모델 대비 42%에서 683% 더 많은 버그를 수정했다.
  • BigFix 데이터셋에서 DEAR는 최상위 1개 패치를 사용할 경우, 다음으로 우수한 딥러닝 기반 APR 모델보다 31~145개 더 많은 버그를 수정했다.
  • CPatMiner 데이터셋에서 DEAR는 총 169개 더 많은 버그와 52개 더 많은 다중 훅/다중 문장 버그를 수정했으며, 이는 최고 수준의 딥러닝 기반 APR 모델을 초월한 것이다.
  • CPatMiner에서 총 667개의 버그가 수정되었을 때, DEAR는 다수의 훅과 다수의 문장을 포함한 169개(25.3%)의 복잡한 버그를 성공적으로 복구했으며, 이는 기준 모델보다 61개 더 많은 복잡한 버그 수정을 기록했다.
  • 결함 로컬라이제이션 과정에서 데이터 플로우 분석과 BERT 미세조정을 융합함으로써, 공동 복구가 필요한 버그 훅을 보다 정확하게 식별하여 잠재적 오류를 줄였다.
  • 사이클 학습과 어텐션 강화된 두 계층의 트리 기반 LSTM 아키텍처는 특히 다중 문장 수정 시나리오에서 복잡한 계층적 코드 변경을 학습하는 데 모델의 능력을 향상시켰다.

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

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

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

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