CodeRabbit이란?
코드 리뷰 도우미 AI 입니다.
AI 기술을 활용하여 코드 변경 사항을 자동으로 분석하고, 리뷰해줍니다. 이 과정에서 코드의 논리적 오류, 성능 개선 포인트에 대해 리뷰를 받을 수 있습니다. 팀의 컨벤션 규칙을 적용시킬 수도 있습니다.
더 자세히 알고 싶다면, 공식문서를 참고하면 좋을 것 같습니다.
https://docs.coderabbit.ai/overview/introduction
코드레빗을 도입하기로 결정한 이유
팀 프로젝트를 진행하면서 이런걸 리뷰해야 할까? 애매했던 상황들이 자주 있었습니다. 주로 팀 컨벤션에 관한 리뷰들이었습니다.



위와 같이, 코드리뷰에서 팀 컨벤션에 대한 리뷰를 남기는 것도 좋지만 보다 효율적으로 리뷰를 하면 좋겠다고 느꼈습니다. 컨벤션 같은 사소한 리뷰는 뭔가... 띄어쓰기나 맞춤법 지적을 하는 느낌이 들어서 애매했습니다. 나중에는 컨벤션이 지켜지지 않은 코드를 확인해도 리뷰를 안 남기기도 했어요.
이 문제점을 해결하기 위해, 코드레빗을 도입했습니다.
코드레빗 도입을 함으로서 얻고자 하는 것
첫 번째는 팀원들의 리뷰 퀄리티 향상입니다. 코드 리뷰를 통해 팀 컨벤션 관련한 내용이 아니라, 조금 더 깊이있는 리뷰를 남긴다면 코드 퀄리티 향상에 많은 도움이 될 것이라 판단했습니다. 팀 컨벤션에 대한 리뷰는 코드레빗이 먼저 잡아주고, 이후에 팀원들은 컨벤션을 신경쓰지 않아도 됩니다.
두 번째는 컨벤션 불일치로 인한 오류 사전 방지입니다. 문법상 오류는 아니지만, DB 스키마 불일치로 인해 서버가 종료되었던 경험이 있었어요. 문제를 찾는 데는 오랜 시간이 걸리지 않았지만, 이미 개발 서버가 내려간 이후였죠. 팀원들의 리뷰를 거친 후 머지한 코드였지만, 모든 것을 기억하고 리뷰를 남기기는 힘들었습니다.

이렇게 팀원들이 까먹을 수도 있는 부분을 코드레빗이 잡아준다면, 사전에 많은 오류를 방지할 수 있다고 판단했습니다.
팀 컨벤션 적용
다음과 같은 팀 컨벤션을 적용했습니다.
- 검증 혹은 boolean 반환 메서드는 긍정문을 사용한다.
- @Valid + @NotBlank, @NotNull 를 통한 입력값 검증을 진행한다.
- Enum의 값을 정의할 때, 후행 쉼표를 사용한다.
- dto는 record로 생성한다.
- 메서드 매개변수, 지역 변수에는 final을 사용한다.
해당 컨벤션 외에도 다양한 규칙들이 있지만, 간단하게만 서술하도록 하겠습니다.
우선 코드레빗에 해당 컨벤션을 선언하고, 컨벤션이 지켜지지 않은 코드를 잘 캐치하나 개인 repository에서 테스트를 진행했습니다.



스크립트를 조금 더 수정해야겠지만, 제가 원하는 대로 동작시키는 데 성공했습니다!
추가로, 스키마 통일성을 위해
- boolean 타입을 사용할 때는, bit를 사용한다.
- 시간을 명시할 때는 TIMESTAMP 대신, DATETIME을 사용한다
라는 조건을 걸어놨었는데요, 이 또한 리뷰를 잘 해주는 것을 확인할 수 있엇습니다.

어려웠던 부분
공식문서에 적용 방법이 자세히 나와있어 도입 자체는 어렵지 않았습니다. 하지만 어려웠던 부분이 있었는데요, 바로 팀 컨벤션 적용이였습니다.
처음에는 knowledge_base 내부에 code_guidelines를 사용했는데요, md 파일에 컨벤션 및 예시 코드들을 작성해두고, 코드레빗이 해당 파일을 읽고 컨벤션을 학습하는 방법을 시도해보았습니다.
language : "ko-KR"
reviews :
profile : "chill"
high_level_summary : true
auto_review :
enabled : true
knowledge_base :
# 코드 래빗이 조직의 코드 가이드라인을 분석하고 학습하도록 활성화합니다.
# 이 가이드라인은 철저한 코드 리뷰를 수행하는 데 사용됩니다.
code_guidelines :
# 조직의 코딩 표준을 리뷰 중에 CodeRabbit이 적용하도록 활성화합니다.
enabled : true
# 코딩 가이드라인 문서를 지정하는 파일 패턴입니다.
# CodeRabbit은 이 파일을 스캔하여 팀의 표준을 이해하고 코드 리뷰에 적용합니다.
filePatterns :
- "docs/team_conventions.md"


당시 .md 파일의 일부분인데요, 자세한 예시 코드를 마크다운 형식으로 제시하면서 컨벤션에 대해 기술했지만, 인식을 하지 못 하더라고요. 왜 인식을 못 하는지에 대해서는 계속 알아볼 생각입니다.
대신에 path_instructions을 사용해, 어떤 파일에서 어떤 컨벤션을 적용할건지 일일이 서술하는 방식을 사용했습니다.
language : "ko-KR"
reviews :
profile : "chill"
high_level_summary : true
auto_review :
enabled : true
path_instructions:
- path: "**/*.sql"
instructions: |
- The time-related type uses datetime instead of timestamp.
- When using boolean type, use bit.
- path: "**/src/main/java/**"
instructions: |
- Attach the final inside the parameter or local variable.
- Validate inputs using `@Valid` along with `@NotBlank` or `@NotNull`.
- Use positive names for validation and boolean-returning methods (e.g., `isValid`, `hasPermissions`).
- Use `request` or `response` instead of the general `dto` naming.
- Use a trailing comma when defining enum values.
- Use `@Getter`, `@NoArgsConstructor`, `@RequiredArgsConstructor`, and `@Builder` (for 4+ fields) instead of `@Data`.
- Place important annotations like `@Entity` or `@Table` above Lombok annotations.
- Create DTOs using `record` classes.
- Order methods with `public` methods first, and `private` methods directly below the `public` method that calls them.
- Do not declare uninitialized variables.
- Explicitly define `nullable = false` in the `@Column` annotation.
- Avoid using `@RequestMapping` at the class level in a `@RestController`.
- Apply `@Transactional(readOnly = true)` at the top of the service class.
하나씩 서술해주니 아주 잘 캐치해주더군요! 위쪽에서 리뷰를 잘 남겨주는 사진은 해당 스크립트 적용 이후의 사진입니다.
+ code_guidelines를 사용한다면, 멘션을 통해 코드레빗 학습을 시킬 수 있는 것 같은데, 새로운 PR을 날리면 기존 학습 내용을 까먹어버리는 문제가 있네요...



파일을 knowledge_base에서 code_guidelines를 잘 읽기는 하는데, 다음 PR에서 리셋이 되어버리네요,,,
(혹 이 문제의 해결 방법을 아시는 분이 있다면 댓글 남겨주시면 정말 감사하겠습니다...!)
후기
아직은 테스트 단계이기에 도입 결과가 어떤지는 모르겠습니다. 과거에 우테코 Level2에서 코드레빗을 사용했을 때는 말이 너무 많아 불편했었는데, 팀 프로젝트에서는 꽤나 유용하게 쓰일 것 같다고 생각합니다. 우선은 한 달 정도 코드 레빗을 사용해본 후, 팀원들에게 사용 후기를 물어볼 생각입니다.
저는 그동안 관련 문서가 많은 기술들만 사용했었는데요, 코드레빗은 공식 문서 말고 많은 정보를 얻을 수가 없었습니다. 그러다보니 문제를 해결하는 데 시간이 꽤 걸렸던 것 같습니다. 공식문서를 꼼꼼하게 읽는 습관을 들이고, 영어 공부를 많이 해야겠다고 느꼈습니다ㅎ
참고자료
코드 리뷰 요정, CodeRabbit이 나타났다 🐰
AI 기반 코드 리뷰 서비스 Coderabbit을 소개합니다.
tech.inflab.com
https://docs.coderabbit.ai/guides/code-review-overview
Overview - CodeRabbit
Discover how CodeRabbit transforms your development workflow with AI-powered code reviews that provide instant, comprehensive feedback on every pull request.
docs.coderabbit.ai
'프로젝트 > 피드줍줍' 카테고리의 다른 글
| DB CPU가 터져요 (1편) (5) | 2025.09.29 |
|---|---|
| 우테코/피드줍줍 운영 기록기 (0) | 2025.09.15 |
| 우테코/피드줍줍 3차 데모데이 회고 (4) | 2025.08.11 |
| 우테코/피드줍줍 2차 데모데이 회고 (5) | 2025.07.27 |
| 우테코/피드줍줍 1차 데모데이 회고 (2) | 2025.07.15 |