Skip to content

ci: PR 변경 라인 기준 diff coverage 게이트 추가 - #246

Merged
unam98 merged 1 commit into
mainfrom
ci/diff-coverage-gate
Aug 12, 2026
Merged

ci: PR 변경 라인 기준 diff coverage 게이트 추가#246
unam98 merged 1 commit into
mainfrom
ci/diff-coverage-gate

Conversation

@unam98

Copy link
Copy Markdown
Collaborator

작업 배경

  • 기존 CI(prod-ci.yml)는 ./gradlew build로 기존 테스트 통과 여부만 확인 — 로직을 수정했는데 테스트를 안 고치거나, 새 로직을 추가했는데 테스트를 안 써도 CI는 그냥 초록불이었음
  • 커버리지 측정/게이트 자체가 전무했음
  • 전체 커버리지 게이트는 기존 미테스트 코드 때문에 처음부터 막혀버리므로, PR에서 실제로 바뀐 라인만 대상으로 하는 diff 기반 게이트를 채택

변경 사항

영역내용
build.gradlejacoco 플러그인 추가, jacocoTestReport가 xml/html 리포트 생성하도록 설정, test 태스크에 finalizedBy 연결
.github/workflows/prod-ci.ymlactions/checkoutfetch-depth: 0 추가(base 브랜치 diff 비교용), diff-cover로 변경 라인 커버리지 70% 미만 시 CI 실패하는 스텝 추가
README.md"Diff Coverage 게이트" 섹션 추가, 로컬 재현 명령어 포함

선택지 및 근거

  • 대안 1 (기각): 전체 커버리지 % 임계값 게이트 — 기존에 테스트 없는 코드가 이미 많아서 처음부터 막혀버림, 세팅만 하고 못 켜는 상태가 됨
  • 대안 2 (기각): pitest 뮤테이션 테스트 — 이 규모/단계에 오버킬. "테스트가 있는데 부실한지"보다 먼저 "테스트가 없는지"부터 잡는 게 우선
  • 채택: diff 기반 커버리지(diff-cover) — PR에서 바뀐 라인만 검사하므로 기존 부채와 무관하게 "지금부터"를 강제할 수 있음

영향 범위

  • CI 파이프라인에 스텝 하나 추가 — 런타임(애플리케이션) 동작에는 영향 없음
  • 앞으로의 PR에서 변경 라인 커버리지가 70% 미만이면 build 체크가 실패함

검증 매트릭스

로컬에서 실제 검증(과거 PR #243의 diff를 대상으로 diff-cover 실행):

검증 내용결과
./gradlew jacocoTestReport 정상 생성build/reports/jacoco/test/jacocoTestReport.xml 생성 확인
diff-cover가 실제 미테스트 라인을 잡아내는지KakaoSignInService.java(0%), AppleSignInService.java(16.7%) — PR #243에서 테스트 없이 추가된 타임아웃 로직을 정확히 검출
전체 빌드(./gradlew build) 통과✅ BUILD SUCCESSFUL

Test Plan

  • 로컬에서 JaCoco 리포트 생성 확인
  • 실제 과거 diff로 diff-cover가 미테스트 라인을 정확히 검출하는지 검증
  • ./gradlew build 전체 통과

🤖 Generated with Claude Code

로직이 수정/추가돼도 테스트가 안 따라오는 경우를 CI가 기계적으로
잡을 방법이 없었음(기존 CI는 기존 테스트 통과 여부만 확인).
- JaCoco로 커버리지 리포트(xml) 생성
- diff-cover로 PR에서 실제로 바뀐 라인만 커버리지 검사(70% 미만 시 CI 실패)
- 전체 커버리지 게이트가 아니라 diff 기준이라, 기존 미테스트 코드가
발목잡지 않으면서 "새로 바뀐 부분"만 강제함
로컬에서 기존 PR #243 diff로 실제 검증: KakaoSignInService(0%),
AppleSignInService(16.7%) 등 테스트 없이 들어간 라인을 정확히 잡아냄.
@unam98unam98 self-assigned this Aug 12, 2026
@coderabbitai

Copy link
Copy Markdown

Warning

Review limit reached

@unam98, you've reached your PR review limit, so we couldn't start this review.

Next review available in:49 minutes

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 26ad6d97-ddb1-48fb-a9db-788e54e90342

📥 Commits

Reviewing files that changed from the base of the PR and between de33d80 and f25cf26.

📒 Files selected for processing (3)
  • .github/workflows/prod-ci.yml
  • README.md
  • build.gradle

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@unam98
unam98 merged commit 2bedaa3 into mainAug 12, 2026
2 checks passed
@unam98
unam98 deleted the ci/diff-coverage-gate branch August 12, 2026 08:38
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@unam98@alh0409