DepRepair: 의존성 파괴적 변경(Dependency Breaking Changes)을 위한 LLM 기반 소스 코드 수정
요약
의존성 파괴적 변경(breaking changes) 문제를 해결하기 위한 LLM 기반 소스 코드 수정 프레임워크인 DepRepair를 제안합니다. 상류(upstream)의 릴리스 노트와 API 차이를 활용하여 소비자 코드를 자동으로 수정하며, 새로운 벤치마크인 DepBench를 통해 성능을 검증했습니다.
핵심 포인트
- 의존성 업데이트로 인한 파괴적 변경 자동 수정 프레임워크 제안
- 상류 증거를 활용하는 증거 필터, 사용처 로케이터, 가이드 구성
- 새로운 벤치마크 DepBench 도입 및 실행 가능 통과율 검증
- 구조화된 상류 증거 사용 시 LLM의 수정 성능이 대폭 향상됨
현대 소프트웨어 프로젝트는 수많은 제3자 라이브러리(third-party libraries)에 의존하며, 이러한 라이브러리의 업데이트는 종종 파괴적 변경(breaking changes)을 초래합니다. 소비자 코드(consumer code)를 이러한 변경 사항에 적응시키는 작업은 여전히 노동 집약적이며 오류가 발생하기 쉽습니다. 기존 연구들은 검증된 소비자 측 패치(consumer-side patch)를 생성하지 못한 채 의존성 파괴적 변경의 특성만을 규명하거나, 실패 및 수정 컨텍스트가 대상 저장소(target repository) 내에 포함된 환경에서만 자동 수정(automated repair)을 연구해 왔습니다. 그러나 의존성 파괴적 변경은 이러한 가정을 위반합니다. 결정적인 수정 증거는 상류(upstream)의 릴리스 노트(release notes)와 API 차이(API diffs)에 존재하며, 실패하는 테스트가 소비자의 어느 부분이 깨졌는지 국소화(localize)해주지 않기 때문에 수정 작업에 필요한 정보가 부족하게 됩니다. 실제 데이터를 통해 이 교차 저장소(cross-repository) 문제를 연구하기 위해, 우리는 4개의 생태계에 걸친 95개의 실제 의존성 업데이트 사례로 구성된 벤치마크인 DepBench를 도입합니다. 각 사례는 소비자의 자체 테스트를 실행하는 Docker 기반의 실행 가능한 오라클(executable oracle)과 쌍을 이룹니다. 이러한 과제를 해결하기 위해, 우리는 세 가지 구성 요소를 통해 구조화된 상류 증거에 기반하여 수정을 수행하는 단일 호출(single-call) LLM 접근 방식인 DepRepair를 제안합니다. 이 구성 요소는 관련 상류 변경 사항을 추출하는 증거 필터(evidence filter), 영향을 받는 소비자 사이트를 식별하는 사용처 로케이터(usage locator), 그리고 파괴적 변경 유형에 맞춰 수정을 조정하는 하위 범주 인식 가이드(subcategory-aware guide)로 이루어집니다. DepBench에서 평가한 결과, DepRepair는 각 백본(backbone)에서 가장 높은 실행 가능 통과율(executable pass rate)을 달성하였으며, GPT-5.5로는 89.5%, Claude Opus 4.6으로는 82.1%를 기록했습니다. 나아가 우리는 가공되지 않은 상류 증거를 사용할 경우 LLM 및 에이전트(agent)의 통과율이 7~23%포인트 감소하는 반면, 구조화된 증거를 사용할 경우 통과율이 일관되게 향상된다는 것을 발견했습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 arXiv Codex (cs.SE)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기