피드로 돌아가기
detekt와 reviewdog으로 코드 품질 향상
올리브영 테크블로그올리브영 테크블로그
Backend

detekt와 reviewdog으로 코드 품질 향상

올리브영이 detekt + reviewdog + GitHub Actions 조합으로 Kotlin 멀티모듈 프로젝트의 코드 컨벤션 자동 검사 시스템 구축

2023년 10월 11일8intermediate

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 댓글로 피드백하면, 코드 리뷰 시간을 단축하고 컨벤션 위반을 사전에 차단할 수 있다.

원문 읽기