- AI 기반 PR 리뷰 자동화 서비스
- GitHub PR에 자동 리뷰 생성
모든 PR에 대한 코드리뷰가 리소스상 힘들때가 많아서 도입해보니 아래와 같은 장점이 있었다.어떤 부분이 좋았나?!
- 리뷰 속도 향상
- 리뷰 품질 안정화
- 팀에서 합의된 코드 컨벤션 자동 검증
- 런타임 에러 방지 70% 이상
- 팀원들 리소스 절약
CodeRabbit을 연동한 뒤, 프로젝트에 맞게 리뷰 규칙을 정리하기 위해 .coderabbit.yaml 파일을 프로젝트 루트에 추가했다. 아래는 실제로 우리 팀에서 사용하고 있는 설정 일부다.
아! 참고로 서비스는 React + Next.js + 모노레포로 이루어져있어.
language: 'ko-KR'
reviews:
review_status: true
poem: false
auto_review:
enabled: true
drafts: false
base_branches:
- '.*'
path_filters:
- '**/*'
- '!**/.next/**'
- '!**/dist/**'
- '!**/build/**'
- '!**/coverage/**'
- '!**/node_modules/**'
- '!**/*.lock'
- '!**/*.min.*'
- '!**/*.snap'
path_instructions:
- path: 'apps/web/**'
instructions: |
- any 타입 사용, any 반환 타입은 지양하도록 코멘트 남겨줘.
- React 훅 규칙 위반 여부를 검토해줘.
- onClick, onChange 등 이벤트 핸들러를 JSX 내부에 인라인(익명 함수)으로 작성하지 않을거야.
- 코드 가독성 향상을 위해 코멘트 남겨줘.
- github assignee 지정 안되면 코멘트 남겨줘.
chat:
auto_reply: true
review_status: 리뷰 상태를 말해주는 옵션
poem: 코드레빗이 장난스럽게 시(poem) 형식으로 답변하는 기능인데... 아래 이미지와 같이 귀엽긴 하지만 리뷰에는 필요하지 않으니깐 false로 하는게 좋다!

enabled: PR을 생성할 때마다 자동으로 리뷰 실행
drafts: draft PR에도 리뷰를 달 것인지 여부
base_branches: 리뷰를 적용할 대상 브랜치. '.*'로 모든 브랜치 대상 설정
monorepo 환경에서 불필요한 파일까지 모두 검사하게되면 리뷰 품질이 떨어지기 때문에 path_filters를 통해 빌드 산출물 또는 node_modules와 같은 디렉토리는 제외시켜야 한다.
apps/web 경로에만 별도의 규칙을 정했다.
팀에서 합의된 컨벤션에 일부를 보여준 것인데 지시사항에 해당되지 않은 코드를 사용하게 될 경우 PR에 코멘트가 달린다!
chat: 코드레빗이 PR 댓글에 질문을 받으면 자동으로 답변하도록 설정
coderabbit이 기본적으로 리뷰해주는 항목들이다.!
개발자 리소스를 줄일 수 있는데 대화까지 가능하면서 의견을 나눌 수 있으니까 나름 쓸만하다고 생각했다. 특히 내 질문에 의도를 정확하게 파악하는 지능이 놀라웠다!
프론트 개발자라면 디버깅 할 때 console.log를 많이 사용할텐데, 까먹고 지우지 못한 log가 production 환경에 올라가면 안될 수 있기 때문에 아래와 같이 알려주었다 ㅋ-ㅋ 앞으로는 직접 물어보지 않고 yaml 파일에 규칙으로 넣어서 사용하면 효율성 있게 사용 가능할 것 같다.
coderabbit을 사용하게 되면 팀 전반적인 코드 품질 및 리뷰 문화가 한 층더 좋아진다는걸 느꼇다.
- 코드리뷰 속도가 일반 개발자에 비해서 빠르다.
- 리뷰 퀄리티가 좋다
- 팀 컨벤션을 학습시켜서 팀에 일원처럼 리뷰 가능하다.
- 리뷰 스타일도 커스텀 가능하다. ex). 리팩토링, 버그, UI/UX 중심
- 보안 취약점, 예외 처리, 런타임 에러 리뷰 잘해준다.
- 새로운 개발자가 들어왔을 때 팀 온보딩 속도가 향상된다.