Skip to content

feat : 테스트 CI와 코드 헬스 PR 봇 도입 - #34

Merged
zwo-n merged 4 commits into
mainfrom
yuyeol3/feat/ci-code-health-bot
Oct 5, 2026
Merged

zwo-n merged 4 commits into
mainfrom
yuyeol3/feat/ci-code-health-bot

Conversation

@yuyeol3

@yuyeol3 yuyeol3 commented Sep 26, 2026 •

Copy link
Copy Markdown
Collaborator

변경점 👍

레포에 CI가 없어서 테스트 CI와 PR 코드 헬스 리포트 봇을 추가했습니다.

  • 단위/통합 테스트 분리
    • IntegrationTestSupport에 @Tag("integration")을 달았습니다. 이제 test는 단위 테스트만, integrationTest는 통합 테스트만 실행합니다.
    • FinApplicationTests처럼 이름 규칙에 맞지 않는 통합 테스트가 있어서, 파일명 대신 태그로 구분했습니다.
  • backend-ci.yml: 단위 테스트와 통합 테스트를 실행합니다. 머지 차단용입니다.
  • backend-code-health.yml: 코드 헬스 리포트를 PR 코멘트로 제공해주는 봇입니다(정보 제공용)
    • 측정 항목은 JaCoCo 커버리지(단위+통합 합산), PMD 복잡도/버그 패턴, CPD 중복, Codelens Code Health입니다.
    • PR에는 코멘트를 하나만 달고, 커밋이 추가되면 그 코멘트를 갱신합니다.
    • main에 push될 때 metrics.json을 artifact로 저장합니다. PR에서는 이 값을 기준으로 Base와 Change 열을 채웁니다.
  • tools/code_health_report.py: 리포트 생성기입니다. 표준 라이브러리만 사용하고 unittest를 함께 추가했습니다.
  • CI에는 .env가 없어서 application-dev.yml이 요구하는 OAuth와 JWT 값을 더미로 주입합니다.

테스트 💻

단위 테스트 및 통합 테스트

스크린샷

아래 커멘트란에서 보고서 형식을 확인하실 수 있습니다.

image

비고

main 비교 기준은 이 PR이 머지된 뒤 첫 main push부터 생깁니다.
이외 궁금한 점 있으시면 편하게 질문해 주세요!

IntegrationTestSupport에 integration 태그를 달고 test는 제외, integrationTest는 포함하도록 분리한다.
FinApplicationTests처럼 이름 규칙에 맞지 않는 통합 테스트도 있어 파일명 대신 태그로 구분한다.
codeHealthReports 태스크로 단위+통합 테스트 합산 커버리지(combined.xml), PMD, CPD XML 리포트를 생성한다.
PR 리포트용 정보 제공 목적이라 PMD 위반은 빌드를 실패시키지 않는다(ignoreFailures).
JaCoCo/PMD/CPD/Codelens 결과와 main 스냅샷을 비교해 PR 코멘트용 마크다운과 metrics.json을 만든다.
Python 프로젝트가 없어 표준 라이브러리(unittest)만 사용한다.
- backend-ci: 단위/통합 테스트 실행 (머지 차단용)
- backend-code-health: 코드 헬스 리포트를 PR 코멘트로 게시·갱신하고 main push 시 비교 기준 스냅샷을 저장 (정보 제공용, 실패해도 차단하지 않음)
- CI에는 .env가 없어 application-dev.yml이 요구하는 OAuth/JWT 값을 더미로 주입한다.
@github-actions

Copy link
Copy Markdown

Backend Code Health Report

Commit: 5ce11c8

Metric Current Base Change
Line Coverage 88.8% N/A —
Branch Coverage 73.4% N/A —
Code Health 92.8 (A) N/A —
Duplicated Lines 0.4% N/A —
High-complexity Methods 10 N/A —
PMD Issues 13 N/A —

Attention

  • src/main/java/apptive/fin/search/service/ProductDetailService.java:113 — Cognitive Complexity 27 / Cyclomatic Complexity 25
  • src/main/java/apptive/fin/myfin/service/MyFinService.java:216 — Cognitive Complexity 19 / Cyclomatic Complexity 10
  • src/main/java/apptive/fin/myfin/service/MyFinService.java:250 — Cognitive Complexity 16 / Cyclomatic Complexity 10
  • Duplicated block (16 lines): src/main/java/apptive/fin/calculator/service/DepositRateCalculator.java:46 ↔ src/main/java/apptive/fin/calculator/service/SavingRateCalculator.java:60

Warnings

  • Base branch snapshot unavailable: [Errno 2] No such file or directory: 'build/quality/baseline/metrics.json'

Informational report only — these metrics do not block merging.

@yuyeol3
yuyeol3 requested a review from zwo-n October 5, 2026 08:43
@yuyeol3
yuyeol3 marked this pull request as ready for review October 5, 2026 08:43
@zwo-n

zwo-n commented Oct 5, 2026

Copy link
Copy Markdown
Collaborator

허걱 이런 기능도 추가할 수 있군요.. 감탄 나오네요.. 수고하셨습니다!!

@zwo-n
zwo-n merged commit efd3503 into main Oct 5, 2026
4 checks passed
@zwo-n
zwo-n deleted the yuyeol3/feat/ci-code-health-bot branch October 5, 2026 09:57
Sign up for free to 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