PracRepair: 인간의 디버깅 관행에서 영감을 얻은 LLM 기반 자동 프로그램 수정 (Automated Program Repair)
요약
PracRepair는 인간의 디버깅 방식을 모방하여 LLM 기반의 자동 프로그램 수정(APR) 성능을 높인 프레임워크입니다. 정적·동적 컨텍스트를 온디맨드로 구축하고 질문 기반의 실패 진단을 통해 패치를 반복적으로 개선합니다. 실험 결과 Defects4J 및 실제 버그 환경에서 기존 모델들을 뛰어넘는 성능을 입증했습니다.
핵심 포인트
- 인간의 디버깅 관행을 모방한 온디맨드 정적-동적 컨텍스트 구축
- 질문 기반의 실패 진단 및 명시적 수정 가설 수립
- 검증 진단과 트레이스 수준의 행동 변화를 통한 패치 반복 개선
- Defects4J 및 실제 세계의 버그(RWB)에서 최신 모델 대비 우수한 성능
소프트웨어 시스템의 규모와 복잡성이 증가함에 따라, 디버깅(debugging)과 수정(repair)은 여전히 많은 비용과 시간이 소요되는 작업으로 남아 있습니다. 대규모 언어 모델 (LLMs)은 자동 프로그램 수정 (APR) 기술을 발전시켜 왔으나, 기존의 LLM 기반 APR 접근 방식은 여전히 정적 또는 검색된 컨텍스트 (context), 에러 메시지, 그리고 거친 입도(coarse-grained)의 검증 결과에 크게 의존하고 있습니다. 그 결과, 실패 실행 역학 (failure-execution dynamics) 및 패치 검증 역학 (patch-validation dynamics)을 포함하여 실패 이해와 수정을 위한 동적 정보 (dynamic information)를 충분히 활용하지 못하고 있습니다. 그러나 이러한 정보를 효과적으로 활용하는 것은 매우 어렵습니다. 실패 실행 트레이스 (failure-execution traces)는 방대하고 노이즈가 많으며, 가공되지 않은 정적-동적 컨텍스트 (static-dynamic context)는 그 자체로 설명력이 부족하고, 패치 검증 역학은 종종 거친 피드백으로 축소되기 때문입니다. 이러한 과제를 해결하기 위해, 우리는 인간의 디버깅 관행에서 영감을 얻은 완전 자동화된 LLM 기반 APR 프레임워크인 extsc{PracRepair}를 제안합니다. extsc{PracRepair}는 버그가 있는 프로그램과 실패 실행으로부터 온디맨드(on-demand) 정적-동적 컨텍스트를 구축하고, 질문 기반의 실패 진단 (failure diagnosis)을 수행하여 명시적인 수정 가설을 수립하며, 검증 진단 (validation diagnostics) 및 트레이스 수준의 행동 변화를 사용하여 후보 패치를 반복적으로 개선합니다. Defects4J V1.2 및 V2.0에 대한 실험 결과, extsc{PracRepair}는 최신 베이스라인 모델들을 지속적으로 능가하는 성능을 보여주었습니다. 구체적으로, GPT-3.5 환경에서 extsc{PracRepair}는 Defects4J V1.2/V2.0의 버그 중 139/136개를 정확히 수정하였으며, GPT-4o 환경에서는 162/171개로 성능이 더욱 향상되었습니다. 또한, extsc{PracRepair}는 RWB (Real-World Bugs, 실제 세계의 버그)에도 효과적으로 일반화되어, 여러 파운데이션 모델 (foundation models) 전반에 걸쳐 최고의 성능을 달성했습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 arXiv Codex (cs.SE)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기