피드로 돌아가기
올리브영 테크블로그Backend
원문 읽기
detekt와 reviewdog으로 코드 품질 향상
올리브영이 detekt + reviewdog + GitHub Actions 조합으로 Kotlin 멀티모듈 프로젝트의 코드 컨벤션 자동 검사 시스템 구축
AI 요약
Context
올리브영의 상품스쿼드는 Kotlin 기반 새로운 아키텍처 도입으로 다수의 개발자가 동시에 다양한 포맷으로 개발하면서 코드 컨벤션 관리의 어려움을 겪었다. 기존 SonarQube는 커스텀 규칙 작성과 수정이 어려웠으며, 코드 리뷰만으로는 모든 문제를 감지할 수 없었다.
Technical Solution
- detekt 도입: Kotlin의 코드 컨벤션 도구로, 루트 gradle에
io.gitlab.arturbosch.detekt플러그인 버전 1.21.0 적용 및detekt.yml설정 파일 구성 - Custom Rule 작성: olive-rules 모듈을 별도로 생성하고 4개의 커스텀 규칙(SaveCheck, HttpMethodCheck, ResponseCheck, RepositoryRule)을 RuleSetProvider로 등록
- GitHub Actions 워크플로우: PR 이벤트 트리거 시
./gradlew detekt실행하여 detekt.xml 리포트 생성 - reviewdog 연동: detekt 리포트를 checkstyle 형식으로 변환하여 reviewdog으로 GitHub PR 리뷰 자동 댓글 생성
- 보안 토큰 관리: GitHub Developer settings에서 Personal access token 생성 후 리포지토리 Secrets에 TOKEN으로 등록
Key Takeaway
Multi-module Kotlin 프로젝트에서 detekt의 커스텀 규칙과 GitHub Actions + reviewdog를 조합하면, 개발자의 수동 검토 부담을 줄이면서 일관된 코드 컨벤션을 자동으로 강제할 수 있다.
실천 포인트
다중 모듈 Kotlin 프로젝트에서 코드 컨벤션 관리가 필요할 때, detekt 플러그인으로 커스텀 규칙을 작성하고 GitHub Actions에서 PR 시점에 자동 실행한 후 reviewdog으로 PR 댓글로 피드백하면, 코드 리뷰 시간을 단축하고 컨벤션 위반을 사전에 차단할 수 있다.