← 최신 논문
💻 computer science

Rover: Context-aware Conflict Resolution with LLM

Rover 는 프로그램 분석과 다층 코드 속성 그래프를 통합하여 문맥 인식 프롬프트를 생성함으로써 대규모 언어 모델을 향상시키고, 기존 도구들보다 복잡한 코드 병합 충돌을 정확하게 해결하는 데 있어 더 뛰어난 성능을 발휘하는 새로운 충돌 해결 시스템입니다.

원저자: Qingyu Zhang, Junzhe Li, Jiayi Lin, Changhua Luo, Chenxiong Qian

게시일 2026-05-19
📖 4 분 읽기☕ 가벼운 읽기

원저자: Qingyu Zhang, Junzhe Li, Jiayi Lin, Changhua Luo, Chenxiong Qian

원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기

당신과 친구가 동시에 같은 요리책 편집 작업을 한다고 상상해 보세요. 당신은 수프에 소금 한 꼬집을 추가하기로 결정하는 반면, 친구는 설탕 한 컵을 추가하기로 결정합니다. 두 버전을 합치려고 하면 책이 혼란에 빠집니다. "소금을 넣을까요? 설탕을 넣을까요? 둘 다? 아니면 둘 다 안 넣을까요?" 이것이 바로 **병합 충돌 (merge conflict)**입니다.

소프트웨어 세계에서는 매일 수백만 명의 개발자들이 이런 일을 겪습니다. 보통 컴퓨터는 이러한 충돌을 자동으로 해결하려고 시도하지만, 종종 잘못된 결정을 내립니다. 왜냐하면 그들은 텍스트의 즉각적인 줄들만 볼 뿐, 더 큰 그림을 놓치기 때문입니다. 한 파일에서 변수 이름을 변경하면 완전히 다른 파일의 함수가 작동하지 않을 수 있습니다. 표준 도구들은 그 연결 관계를 "보지" 못합니다.

이제 이러한 충돌을 위한 궁극적인 "슈퍼 편집기"로 설계된 새로운 도구 Rover가 등장했습니다. 간단한 비유를 들어 작동 방식을 설명해 보겠습니다:

1. 문제: "눈이 먼" 편집기

소설에서 오타를 수정하려는 로봇을 상상해 보세요. 로봇이 오타가 있는 문장만 본다면, 철자는 고칠 수 있지만 3 장 전의 캐릭터가 무엇을 하려던지 몰랐기 때문에 전체 단락의 의미를 실수로 깨뜨릴 수 있습니다.

현재의 도구들은 바로 이런 로봇과 같습니다. 그들은 충돌하는 줄들과 그 바로 옆의 몇 줄만 봅니다. A 파일에 정의된 함수가 B 파일에서 사용된다는 것과 같은 "장거리" 연결 관계를 놓칩니다.

2. 해결책: Rover 의 "슈퍼 지도" (MtCPG)

Rover 는 단순히 텍스트를 읽는 것이 아니라, **다중 레이어 코드 속성 그래프 (Multi-layer Code Property Graph, MtCPG)**를 구축합니다.

이것은 전체 소프트웨어 프로젝트의 거대하고 상호작용 가능한 지하철 지도와 같습니다.

  • 표준 도구는 사고가 발생한 거리만 봅니다.
  • Rover 의 지도는 다른 도시 (파일) 에 있더라도 모든 역, 모든 선로, 그리고 서로 다른 노선 간의 모든 연결을 보여줍니다.

이 지도는 다음을 추적합니다:

  • 누가 누구와 대화하는지: 한 파일의 함수가 다른 파일의 변수를 호출하면 지도는 그들 사이에 선을 그립니다.
  • 계층 구조: 특정 코드 줄이 특정 함수에 속하고, 그 함수가 특정 클래스에 속한다는 것을 알고 있습니다.
  • "왜": 정의를 변경하면 100 줄 떨어져 있거나 다른 파일에 있더라도 그와 연결된 모든 것이 영향을 받는다는 것을 이해합니다.

3. 과정: 올바른 맥락 찾기

충돌이 발생하면 Rover 는 오류 옆의 텍스트만 가져오지 않습니다. 대신 지하철 지도를 사용하여 연결 관계를 추적합니다.

  1. 충돌 위치 확인: 두 버전이 불일치하는 정확한 지점을 찾습니다.
  2. 선로 추적: 지도의 "선로"를 따라 충돌과 연결된 모든 코드 조각을 찾습니다. 아마도 충돌은 다른 파일에서 정의된 변수와 관련이 있을지도 모릅니다? Rover 는 해당 파일을 찾아 그 코드도 가져옵니다.
  3. 단서 그룹화: 이 모든 연결된 코드 조각을 "맥락 묶음 (context bundle)"으로 모읍니다. 마치 범죄 현장 자체만 보는 것이 아니라, 범죄 현장과 관련된 모든 목격자와 증거를 수집하는 것과 같습니다.

4. 해결: 스마트 AI

Rover 가 이 풍부한 "맥락 묶음"을 확보하면, 코드를 작성하는 방법을 아는 매우 똑똑한 AI 인 **대형 언어 모델 (Large Language Model, LLM)**에게 넘깁니다.

  • Rover 없이: AI 는 작은 코드 조각만 받아 나머지 부분을 추측해야 합니다. 맥락이 부족하기 때문에 종종 잘못 추측합니다.
  • Rover 와 함께: AI 는 충돌뿐만 아니라 관련 코드의 전체 "지하철 지도"를 받습니다. 전체 그림을 볼 수 있습니다. "아, 이 변수는 여기서 사용되고, 그 함수는 이런 유형의 데이터를 기대하네"라고 이해합니다.

그런 다음 AI 는 두 버전의 코드를 모두 만족시키고 두 개발자의 의도를 보존하는 완벽한 해결책을 작성합니다.

5. 결과: 왜 중요한가

연구자들은 Rover 를 다음과 비교하여 테스트했습니다:

  • 표준 AI: 근처 텍스트만 보는 AI.
  • 구형 머신러닝 도구: 특정 패턴으로 훈련된 도구.
  • 다른 "도움" 도구: 관련 코드를 찾으려 하지만 깊은 연결 관계를 종종 놓치는 도구.

결과:
Rover 는 충돌을 해결하는 데 훨씬 더 뛰어났습니다.

  • 인간 개발자가 작성했을 법한 해결책을 생성했습니다.
  • 다른 파일의 코드에 의존하는 한 파일의 코드와 같은 복잡한 상황을 처리했으며, 다른 도구들은 이를 해결하지 못했습니다.
  • 각 언어마다 재훈련할 필요 없이 다양한 프로그래밍 언어 (C, Java, Python) 에서 작동했습니다.

요약

Rover를 범죄 현장 (충돌) 만 보는 것이 아니라 사건을 해결하기 전에 모든 목격자를 인터뷰하고 모든 알리바이 (코드 의존성) 를 확인하는 탐정으로 생각하세요. 소프트웨어의 관계에 대한 완전한 지도를 AI 에게 제공함으로써 Rover 는 최종 병합된 코드가 정확하고 안전하며 실제로 작동하도록 보장합니다.

연구 분야의 논문에 파묻히고 계신가요?

연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.

Digest 사용해 보기 →