← 최신 논문
🤖 AI

RepoRepair: Leveraging Code Documentation for Repository-Level Automated Program Repair

이 논문은 LLM 을 활용하여 계층적 코드 문서화를 생성하고 이를 수리 대상 식별 및 수정에 활용함으로써 SWE-bench 에서 비용 효율적이고 강력한 성능을 보이는 리포지토리 수준의 자동 프로그램 수리 방법론인 RepoRepair 를 제안합니다.

원저자: Zhongqiang Pan, Chuanyi Li, Wenkang Zhong, Yi Feng, Bin Luo, Vincent Ng

게시일 2026-03-03
📖 3 분 읽기☕ 가벼운 읽기

원저자: Zhongqiang Pan, Chuanyi Li, Wenkang Zhong, Yi Feng, Bin Luo, Vincent Ng

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

🛠️ RepoRepair: 거대한 도서관의 책을 고치는 '전문 사서' 이야기

이 논문은 **"RepoRepair"**라는 새로운 기술을 소개합니다. 이 기술은 소프트웨어 개발자들이 만든 거대한 코드 저장소 (레포지토리) 에서 버그를 찾아내고 고치는 일을 자동화합니다.

기존의 자동화 도구들이 왜 실패했는지, 그리고 RepoRepair 가 어떻게 **매우 똑똑한 '코드 문서'**를 만들어 문제를 해결하는지, 일상적인 비유로 설명해 드릴게요.


1. 문제: 거대한 도서관에서 바늘 찾기 📚🔍

상상해 보세요. 전 세계의 모든 책이 들어 있는 거대한 도서관 (소프트웨어 저장소) 이 있다고 칩시다. 어떤 독자가 "어떤 책의 300 페이지에 오타가 있어요"라고 말합니다.

  • 기존 도구들의 방식: 이 도구들은 도서관 전체를 뒤적거리거나, 책의 제목만 보고 대충 추측합니다. 책이 수천 권이고, 한 권에 수천 페이지가 있는데, 제목만 보고 "아, 이 책이겠지!"라고 말하면 틀릴 확률이 매우 높습니다. 특히 책과 책 사이에 숨겨진 연결고리 (다른 파일 간의 의존성) 를 모르면, 오타가 있는 정확한 페이지를 찾아내는 건 불가능에 가깝습니다.
  • 결과: 복잡한 버그가 생기면, 기존 도구들은 "어디서 고쳐야 할지 모르겠다"라고 포기하거나, 엉뚱한 책을 고쳐서 더 큰 문제를 만듭니다.

2. 해결책: RepoRepair 의 '스마트 사서' 전략 🧠✨

RepoRepair 는 이 문제를 해결하기 위해 **LLM(거대 언어 모델)**을 이용해 도서관 전체에 **정교한 '지도와 요약본'**을 먼저 만들어냅니다. 이것이 바로 이 기술의 핵심인 **'코드 문서화 (Documentation)'**입니다.

1 단계: 도서관 전체의 '요약 지도' 만들기 🗺️

  • 비유: 도서관의 모든 책 (코드 파일) 을 읽어서, 각 책의 주요 내용, 등장인물, 그리고 다른 책과의 관계를 한 장의 요약본으로 만듭니다.
  • 실제 기술: 컴퓨터가 코드를 분석하여 '파일 단위 요약'과 '함수 단위 요약'을 자동으로 생성합니다.
    • 파일 요약: "이 파일은 로그인 기능을 담당하며, 사용자 데이터베이스와 연결되어 있어요."
    • 함수 요약: "이 함수는 비밀번호를 암호화해서 보내는 역할을 해요."
  • 효과: 이제 고쳐야 할 버그가 생겼을 때, 컴퓨터는 수천 페이지의 원본 코드를 다 읽을 필요 없이, 이 요약본만 보고 "아, 이 버그는 로그인과 관련된 것이니 '로그인 요약본'이 있는 책을 찾아야겠다!"라고 빠르게 판단합니다.

2 단계: 정확한 위치 찾기 (국소화) 🎯

  • 비유: 요약본을 보고 "이 책이 문제야!"라고 추린 후, 다시 그 책 안의 **정확한 장 (Function)**을 찾아냅니다.
  • 실제 기술: 문제 설명 (예: "로그인 버튼이 안 눌러져요") 과 요약본을 비교합니다. 단순히 키워드만 찾는 게 아니라, "로그인 버튼이 누르지 않는 이유는 비밀번호 암호화 함수가 잘못 작동해서일 수 있다"는 논리적 연결을 찾아냅니다.
  • 차별점: 기존 도구들은 "키워드"만 찾지만, RepoRepair 는 **의미 (Semantic)**를 이해합니다.

3 단계: 정교한 수리 (패치 생성) 🔧

  • 비유: 문제의 장을 찾았으니, 그 부분만 잘라내고 새로운 내용으로 붙입니다. 나머지 책 내용은 건드리지 않아서 책이 찢어지지 않게 합니다.
  • 실제 기술: 찾은 코드 부분만 잘라내고 (Pruning), 필요한 부분만 수정한 '차이점 (Diff)'을 만들어냅니다. 그리고 이 수정본이 실제로 작동하는지 테스트를 여러 번 돌려서 가장 확실한 것을 선택합니다.

3. 왜 이 방법이 특별한가요? 🌟

이 논문은 SWE-bench라는 유명한 버그 찾기 대회에서 놀라운 성과를 냈습니다.

  • 성공률: 기존 도구들이 2530% 정도만 고쳤다면, RepoRepair 는 **37%45%**의 높은 성공률을 기록했습니다. 특히 복잡한 문제일수록 더 잘 고칩니다.
  • 비용 효율성: 많은 도구가 "에이전트 (로봇)"처럼 여러 번 시도하며 돈을 많이 쓰지만, RepoRepair 는 한 번에 정확하게 찾아내서 비용도 적게 듭니다. (버그 하나 고치는 데 약 44~56 센트 정도!)
  • 멀티모달 지원: 단순히 글자만 보고 고치는 게 아니라, **스크린샷 (이미지)**까지 보고 버그를 이해할 수 있습니다. (예: "화면이 깨져 보여요"라는 말과 함께 사진을 주면, 그 사진을 분석해서 코드를 고칩니다.)

4. 한 줄 요약 📝

"RepoRepair 는 거대한 코드 도서관에서 버그를 찾을 때, 원본 책 전체를 다 읽지 않고 '똑똑한 요약본 (문서)'을 먼저 만들어서, 버그의 정확한 위치를 찾아내고 최소한의 노력으로 완벽하게 고쳐주는 기술입니다."

이 기술은 앞으로 소프트웨어 개발자가 버그를 고치는 시간을 획기적으로 줄여주고, 더 안전하고 빠른 앱을 만들 수 있게 도와줄 것입니다. 🚀

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

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

Digest 사용해 보기 →