JaCoCo 커버리지 시각화

JaCoCo 커버리지 시각화 (JaCoCo coverage visualization)

  • GitLab 17.3에서 jacoco_coverage_reports feature flag와 함께 도입됐어요. 기본적으로 비활성화.
  • GitLab 17.6에서 일반 공개(GA). jacoco_coverage_reports feature flag가 제거됐어요.

JaCoCo 커버리지 리포트를 사용하면 머지 리퀘스트 diff에 줄 단위 커버리지 어노테이션을 표시할 수 있어요. GitLab이 JaCoCo XML 리포트를 읽어 각 변경된 줄을 커버됨(초록) 또는 커버 안 됨(빨강)으로 표시해줘요.

커버리지 시각화는 artifacts:reports:coverage_report 키워드를 사용해요. MR 위젯에 커버리지 백분율을 표시하거나 커버리지 이력 그래프를 채우지는 않아요. 커버리지 백분율을 표시하려면 coverage 키워드를 별도로 구성해야 해요.

멀티 모듈 프로젝트의 집계 리포트는 지원되지 않아요. 집계 리포트 지원에 기여하려면 issue 491015을 참고하세요.

출처: 문서

본문

JaCoCo 커버리지 잡 추가하기

머지 리퀘스트 diff에 줄 단위 커버리지 어노테이션을 표시하고 싶다면 JaCoCo 커버리지 잡을 추가하세요.

전제 조건:

JaCoCo 커버리지 잡을 추가하려면:

  1. .gitlab-ci.yml 파일에 artifacts:reports:coverage_reportjacoco로 설정한 잡을 추가하세요. 예: `test-jdk11: stage: test image: maven:3.6.3-jdk-11 script:
    • mvn $MAVEN_CLI_OPTS clean org.jacoco:jacoco-maven-plugin:prepare-agent test jacoco:report artifacts: reports: coverage_report: coverage_format: jacoco path: target/site/jacoco/jacoco.xml`
  2. path를 생성된 JaCoCo XML 리포트의 위치로 설정하세요.

잡이 여러 리포트를 생성한다면 아티팩트 경로에 와일드카드를 사용하세요.

커버리지 표시 (Coverage indicators)

JaCoCo 시각화는 리포트에서 ci(covered instructions, 커버된 명령)로 표시되는 instructions (C0 Coverage)를 사용해요.

파이프라인이 완료된 후 커버리지는 머지 리퀘스트 diff 뷰에 다음 표시로 나타나요:

  • 커버된 명령(초록): 커버된 명령이 하나 이상 있는 줄 (ci > 0)
  • 커버된 명령 없음(빨강): 커버된 명령이 하나도 없는 줄 (ci = 0)
  • 커버리지 정보 없음: 커버리지 리포트에 포함되지 않은 줄

예를 들어 이 리포트 출력이 있다면:

<line nr="83" mi="2" ci="0" mb="0" cb="0"/>
<line nr="84" mi="2" ci="0" mb="0" cb="0"/>
<line nr="85" mi="2" ci="0" mb="0" cb="0"/>
<line nr="86" mi="2" ci="0" mb="0" cb="0"/>
<line nr="88" mi="0" ci="7" mb="0" cb="1"/>

머지 리퀘스트 diff 뷰는 커버리지를 다음과 같이 표시해요:

Merge request diff view showing coverage indicators with red bars for uncovered lines and green bars for covered lines.

이 예시에서 83-86줄은 커버되지 않은 코드에 빨간 막대를, 88줄은 커버된 코드에 초록 막대를 보여주고, 87줄과 89-90줄은 커버리지 데이터가 없어요.

문제 해결 (Troubleshooting)

경로 해석 실패와 예상대로 나타나지 않는 어노테이션 등 커버리지 시각화 문제 해결은 커버리지 시각화 문제 해결을 참고하세요.

피드백 보내기

JaCoCo 커버리지 시각화는 활발히 개선되고 있어요. 이슈를 보고하거나 개선을 제안하려면 issue 479804에 피드백을 남기세요.

더 알아보기

다음으로는 커버리지 시각화 문서와 coverage 키워드를 함께 보면, 커버리지 백분율 표시와 어노테이션을 함께 구성하는 방법을 익힐 수 있어요.