main-logo

AI를 활용한 PR 리뷰 시간 단축기

프로젝트 리딩 역할에서 하루 10개씩 쌓이는 PR, 어떻게 효율적으로 처리할까?

profile
zurang23
2025년 07월 19일 · 0 분 소요

들어가며

프로젝트 리딩을 담당하는 PL 역할을 하다 보니 하루에도 수많은 PR을 리뷰해야 하는 상황에 직면하게 됩니다. 많게는 하루에 10개 정도의 PR이 쌓이는데, 각 PR을 꼼꼼히 리뷰하다 보면 상당한 시간이 소요됩니다. 이는 단순히 시간 문제를 넘어 다른 업무에 지장을 주거나, 리뷰 품질이 저하될 수도 있고, 리뷰를 기다리는 작업자의 작업 속도 저하로 이어질 수 있습니다.

이런 문제를 해결하기 위해 다양한 자동화 도구와 프로세스를 도입했고, 그 결과 PR 리뷰 시간을 효과적으로 단축할 수 있었습니다. 이번 글에서는 실제로 적용한 세 가지 핵심 전략에 대해 공유하고자 합니다.

 

PR 템플릿으로 사전 체크리스트 구축

PR 템플릿 도입 배경

첫 번째로 도입한 것은 GitHub PR 템플릿입니다. 리뷰 요청자가 PR을 올리기 전에 스스로 체크할 수 있는 항목들을 정리하고, 리뷰어가 효율적으로 리뷰할 수 있도록 필요한 정보를 미리 작성하게 하는 시스템을 구축했습니다.

실제 적용한 PR 템플릿 

 
## 🔗 관련 이슈

- #이슈번호

## 🎯 기능 설명

<!-- 어떤 기능을 구현했는지 설명해주세요 -->

## 📝 리뷰 포인트

<!-- 리뷰어가 주의깊게 봐야 할 점이 있으면 작성해주세요 -->

## ⚠️ 주요 작업 사항 외 수정 내역

<!-- 주요 작업 사항 외 수정 내역이 있으면 작성해주세요 -->

## ✅ 체크리스트

- [ ] 컴포넌트/페이지 작업 완료
- [ ] 스토리북 디스크립션 작성 완료
- [ ] 크롬, 웨일 브라우저 확인 완료
- [ ] cursor rule 기반 리뷰 완료
- [ ] build 테스트 확인 완료
 

이슈 템플릿과의 연동

PR을 항상 이슈와 연결되도록 하고, 이슈 역시 템플릿으로 등록해서 명확하게 작성될 수 있게 했습니다. 이를 통해 작업의 맥락을 쉽게 파악할 수 있고, 리뷰 시 해당 기능의 목적과 요구사항을 빠르게 이해할 수 있게 되었습니다.

스크린샷 2025-07-19 오후 7.34.51.png

 

AI 리뷰 봇 도입 - Gemini와 CodeRabbit

현재 GitHub에 연동 가능한 주요 AI 리뷰 봇으로는 Gemini와 CodeRabbit이 있습니다. 두 도구 모두 도입해서 사용해본 결과, 각각의 장단점이 있었습니다.

Gemini 리뷰 봇

장점:

  • Google의 강력한 AI 모델을 기반으로 한 일반적인 코드 분석
  • 무료로 사용 가능한 기본 기능
  • 빠른 응답 속도

단점:

  • 프로젝트별 컨벤션 적용에 한계
  • 상대적으로 단순한 수준의 리뷰
  • 한국어 지원 부족
  • 때로는 과도하게 많은 피드백으로 인한 부담

 

CodeRabbit

CodeRabbit은 현재 가장 만족도가 높은 AI 리뷰 도구입니다. 특히 .coderabbit.yaml 파일을 통해 프로젝트 컨벤션을 등록해서 사용하고 있어 꽤나 만족스러운 결과를 얻고 있습니다.

장점:

  • 단순 문법 오류를 넘어 시스템 전체 영향도를 파악한 리뷰
  • 아키텍처, 보안, 성능 등 다양한 관점에서의 문제점 지적
  • 변경된 코드뿐만 아니라 전체 코드베이스와의 연관성 분석
  • .coderabbit.yaml을 통한 프로젝트별 컨벤션 적용
  • 개발자 피드백을 학습하여 팀 스타일에 맞게 점진적 개선
  • 한국어 설정, 리뷰 강도 조절 등 세부 설정 가능
  • PR/MR 생성 즉시 자동 분석 시작
  • IDE(VS Code, Cursor) 확장을 통한 실시간 리뷰

단점:

  • 때로는 과도하게 많은 피드백으로 인한 부담
  • 프로젝트 특성에 맞는 세부 설정 조정 필요

 

Cursor IDE 룰 기반 리뷰

Cursor 룰 시스템 활용

세 번째 전략은 Cursor IDE의 룰 시스템을 활용한 것입니다. 프로젝트 컨벤션을 Cursor 룰에 등록해놓고, 필요할 때마다 AI에게 해당 룰을 기반으로 한 리뷰를 요청합니다.

실제 적용 사례

Cursor에 등록된 컨벤션 내용을 기반으로 다음과 같은 방식으로 리뷰를 진행합니다:

해당 컴포넌트 룰 기반으로 리뷰 해줘

이런 방식으로 간단한 프롬프트를 작성하면 프로젝트에 특화된 세밀한 리뷰를 받을 수 있습니다. 물론 해당 리뷰를 잘 받으려면 그만큼 룰 작성이 중요합니다. 룰 기반으로 리뷰를 해주니까요.

상세한 룰 파일 작성

저는 룰을 다음 파일 목록처럼 상세하게 지정해서 룰 파일로 작성해두었습니다.

 
.cursor/
├── 000-global-standards.mdc
├── 100-react-component.mdc
├── 200-scss-theme.mdc
├── 300-typescript-types.mdc
├── 400-nextjs-routing.mdc
└── 500-accessibility-design.mdc

프로젝트 컨벤션이라 해당 내용들을 모두 공개할 순 없지만, 접근성 관련 룰만 짧게 공개하자면 아래와 같이 작성하였습니다:

 
# 웹 접근성 및 디자인 시스템 규칙

## 웹 접근성 표준 (WCAG 준수)
- **모든 컴포넌트는 웹 접근성 표준(WCAG) 준수 필수**
- 적절한 aria-* 속성 사용으로 스크린 리더 지원
- 키보드 탐색 지원 필수
- 색상에만 의존하지 않는 정보 전달
- 충분한 색상 대비율 확보

## 필수 접근성 속성
### ARIA 속성
```tsx
// 버튼 예시
<button
  aria-label="메뉴 열기"
  aria-expanded={isOpen}
  aria-haspopup="menu"
>
  메뉴
</button>

// 입력 필드 예시
<input
  aria-describedby="password-help"
  aria-required="true"
  aria-invalid={hasError}
/>


### 키보드 탐색
- Tab, Shift+Tab으로 순차 탐색 가능
- Enter, Space로 활성화 가능
- Escape로 닫기/취소 가능
- 화살표 키로 목록 탐색 가능

### 반응형 디자인 원칙
- Mobile First 설계
- 유연한 그리드 시스템 사용
- 터치 친화적 인터페이스 (최소 44px 터치 영역)
- 다양한 화면 크기 지원

Cursor 리뷰의 장점

  • 프로젝트별 커스터마이징: 등록된 룰을 기반으로 한 정확한 컨벤션 체크
  • 즉시 피드백: IDE 내에서 바로 리뷰 결과 확인 가능
  • 학습 효과: 반복적인 리뷰를 통해 팀 컨벤션 숙지도 향상
  • 유연성: 상황에 따라 리뷰 포인트를 조정하여 요청 가능

스크린샷 2025-07-19 오후 7.11.15.png

커서를 통한 리뷰 결과 리포트 1

스크린샷 2025-07-19 오후 7.09.35.png

커서를 통한 리뷰 결과 리포트 2

종합적인 효과

리뷰 시간 단축 효과

이 세 가지 전략을 종합적으로 적용한 결과:

  1. 사전 체크: PR 템플릿으로 기본적인 검증 완료
  2. 1차 AI 리뷰: CodeRabbit의 자동 분석으로 주요 이슈 사전 발견
  3. 2차 AI 리뷰: Cursor 룰 기반으로 프로젝트 특화 리뷰
  4. 최종 수기 리뷰: 핵심 로직과 비즈니스 요구사항에 집중

기존에 PR 하나당 짧게는 5분에서 길게는 30-40분까지 소요되던 리뷰 시간이 길어도 10분 정도로 단축되었습니다. 특히 반복적이고 기계적인 체크 항목들은 거의 자동화되어, 정말 중요한 설계서 내용에 따른 로직이나 아키텍처 관점의 리뷰에 집중할 수 있게 되었습니다.

리뷰 품질 향상

시간 단축뿐만 아니라 리뷰 품질도 향상되었습니다:

  • 놓치기 쉬운 버그들의 사전 발견
  • 일관된 코드 스타일 유지
  • 성능 최적화 포인트 제안

 

마치며

AI를 활용한 PR 리뷰 자동화는 단순히 시간을 절약하는 것을 넘어, 리뷰의 품질과 일관성을 높이는 데도 큰 도움이 됩니다. 특히 PL 역할을 하면서 많은 PR을 처리해야 하는 상황에서는 이런 자동화 도구들이 필수적이라고 생각합니다.

다만 AI 리뷰에만 의존하지 않고, 팀의 커뮤니케이션과 학습 문화를 유지하면서 적절히 활용하는 것이 중요합니다. AI는 효율성을 높여주는 도구일 뿐, 최종적인 판단과 의사결정은 여전히 사람의 몫이라는 점을 잊지 말아야 할 것 같습니다.

혹시 비슷한 고민을 하고 계신 분들께 이 경험이 도움이 되길 바랍니다.