Rover: LLM을 활용한 문맥 인식 충돌 해결 (Context-aware Conflict Resolution)
요약
Rover는 프로그램 분석과 LLM을 결합하여 코드 병합 시 발생하는 충돌을 해결하는 새로운 시스템입니다. 제안된 다층 코드 속성 그래프(MtCPG)를 통해 파일 간 의존성을 포착하고, 그래프 연결성 알고리즘으로 관련 변경 사항을 의미 있는 문맥으로 클러스터링하여 LLM이 정확한 해결책을 생성하도록 돕습니다.
핵심 포인트
- 기존 프로그램 분석의 의도 추론 부족과 모델 기반 방식의 문맥 인식 한계를 동시에 해결
- 다층 코드 속성 그래프(MtCPG)를 도입하여 파일 간 복잡한 의존성을 효과적으로 표현
- 그래프 연결성 알고리즘을 활용해 충돌 관련 코드를 의미 있는 문맥 단위로 클러스터링
- 평가 결과, 단독 LLM 및 기존 머신러닝/문맥 기반 도구(MergeGen, WizardMerge)보다 높은 성능 달성
코드 병합 (Code merging)은 특히 대규모 프로젝트에서 매우 중요한 과제입니다. 프로그램 분석 (Program analysis) 및 머신러닝 (Machine learning)을 포함한 기존 솔루션들은 가능성을 보여주고 있으나, 결정적인 한계에 직면해 있습니다. 프로그램 분석은 개발자의 의도를 추론하는 능력이 부족하며, 해결되지 않은 충돌을 수동 처리를 위해 넘겨버리는 보수적인 전략에 의존합니다. 한편, 모델 기반 접근 방식은 문맥 인식 (Contextual awareness)이 불충분하여 복잡한 코드 의존성 (Code dependencies)이 포함된 충돌을 처리하는 데 어려움을 겪습니다. 이러한 격차를 해소하기 위해, 우리는 프로그램 분석과 대규모 언어 모델 (LLMs)을 통합한 새로운 충돌 해결 시스템인 Rover를 소개합니다. 문맥을 인식하는 프롬프트 (Context-aware prompts)를 얻기 위해, 우리는 파일 간 의존성을 포착하고 주어진 충돌에 대한 문맥 분석을 가능하게 하는 새로운 표현 방식인 다층 코드 속성 그래프 (Multi-layer Code Property Graph, MtCPG)를 제안합니다. Rover는 그래프 연결성 알고리즘 (Graph connectivity algorithms)을 사용하여 충돌하는 코드와 관련 변경 사항을 의미 있는 "문맥 (Contexts)"로 클러스터링하며, 이는 LLM이 정확한 해결책을 생성하도록 안내합니다. 우리는 Rover를 단독 LLM, 머신러닝 베이스라인인 MergeGen, 그리고 인접 코드를 문맥으로 사용하는 제안 제공 도구인 WizardMerge와 비교했습니다. 평가 결과, Rover는 충돌 해결 측면에서 이 모든 접근 방식을 능가하였으며, 문자 (Character), 어휘 (Lexical), 그리고 의미 (Semantic) 수준 모두에서 정답 (Ground-truth) 해결책과 더 높은 유사성을 달성했습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 arXiv Codex (cs.SE)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기