
초록
진단 피드백(예: 컴파일러 오류 메시지)을 통해 프로그램을 수정하는 방법을 학습하는 문제를 고려한다. 프로그램 수정은 두 가지 이유로 어려움을 겪는다. 첫째, 소스 코드와 진단 피드백 사이에서 심볼을 추론하고 추적해야 하며, 둘째, 프로그램 수정을 위한 레이블이 부여된 데이터셋이 상대적으로 작다. 본 연구에서는 이러한 두 가지 도전 과제에 대한 새로운 해결책을 제안한다. 먼저, 소스 코드와 진단 피드백에서 프로그램 수정과 관련된 심볼들을 연결하는 프로그램-피드백 그래프를 도입하고, 이를 바탕으로 그래프 신경망(GNN)을 적용하여 추론 과정을 모델링한다. 둘째, 온라인에서 공개된 레이블이 없는 프로그램을 활용하여 대규모의 추가적인 프로그램 수정 예제를 생성하는 자기지도 학습(self-supervised learning) 프레임워크를 제안하며, 이를 통해 모델의 사전 훈련을 수행한다. 제안된 접근법은 두 가지 응용 사례에서 평가되었으며, 이는 초보 프로그래밍 과제 수정(DepthFix 데이터셋)과 프로그램 합성 출력 수정(SPoC 데이터셋)이다. 최종 시스템인 DrRepair는 기존 방법을 크게 능가하여 DepthFix에서 68.2%의 완전 수정률(기존 최고 성능 대비 +22.9%)을 달성하였으며, SPoC에서는 48.4%의 합성 성공률(기존 최고 성능 대비 +3.7%)을 기록하였다.