Applying Program Repair Optimization with Buggy Block to Fix Multi-Chunk Bugs
Jisung Kim, Aslan Safarovich Abdinabiev, Byungjeong Lee · 정보과학회 컴퓨팅의 실제 논문지 · 2023
APR(Automated Program Repair)은 프로그램 내 버그를 자동으로 정정하는 기술이며, 버그는 연속되는 버기 라인 개수에 따라 싱글 청크 버그와 멀티 청크 버그로 분류된다. 그런데 멀티 청크 버그를 정정하기 위해서 생성된 후보 패치들을 조합할 때 패치 공간(Patch Space)이 기하급수적으로 증가하거나 너무 작아지는 문제가 발생한다. 그래서 본 논문에서는 멀티 청크 버그를 효과적인 조합을 통해 적절한 크기의 패치 공간을 만드는 프로그램 정정 최적화 기법을 제안한다. 먼저 버기 필드 또는 버기 메소드를 포함한 하나 이상의 버기 청크를 전처리하여 버기 블록을 얻는다. 다음에 미세조정한 CodeBERT 모델에 버기 블록을 입력하여 후보 패치 집합을 생성하고, 패치 필터링, 패치 순위화, 패치 조합을 수행하는 정정 최적화를 적용한다. Bugs2Fix와 Defects4J 데이터 집합을 사용한 실험을 통하여, 본 연구와 베이스라인 연구를 비교하여 우수함을 보인다.