JaCoCo 커버리지 시각화
GitLab v19.2Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
JaCoCo 커버리지 보고서를 사용하여 머지 리퀘스트 diff에서 라인별 커버리지 주석을 표시합니다. 커버리지 시각화는 artifacts:reports:coverage_report 키워드를 사용합니다. 멀티 모듈 프로젝트의 집계 보고서는 지원되지 않습니다.
- GitLab 17.6에서 일반적으로 사용 가능해짐. 기능 플래그
jacoco_coverage_reports제거됨.
JaCoCo 커버리지 보고서를 사용하여 머지 리퀘스트 diff에서 라인별 커버리지 주석을 표시합니다. GitLab은 JaCoCo XML 보고서를 읽고 각 변경된 줄에 커버됨(녹색) 또는 커버되지 않음(빨간색) 주석을 달아줍니다.
커버리지 시각화는 artifacts:reports:coverage_report
키워드를 사용합니다. 이 기능은 MR 위젯에 커버리지 백분율을 표시하거나 커버리지 기록 그래프를 채우지 않습니다.
커버리지 백분율을 표시하려면 coverage 키워드를 별도로 구성하세요.
멀티 모듈 프로젝트의 집계 보고서는 지원되지 않습니다. 집계 보고서 지원에 기여하려면 이슈 491015를 참조하세요.
JaCoCo 커버리지 job 추가#
머지 리퀘스트 diff에서 라인별 커버리지 주석을 표시하려면 JaCoCo 커버리지 job을 추가합니다.
사전 조건:
- 라인 커버리지를 제공하는 적절히 형식화된 JaCoCo XML 파일.
JaCoCo 커버리지 job을 추가하려면:
artifacts:reports:coverage_report를 jacoco로 설정하여 .gitlab-ci.yml 파일에 job을 추가합니다. 예를 들면:
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
path를 생성된 JaCoCo XML 보고서의 위치로 설정합니다.
job이 여러 보고서를 생성하는 경우 아티팩트 경로에 와일드카드를 사용합니다.
커버리지 표시기#
JaCoCo 시각화는 보고서에서 ci(covered 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 뷰에서 커버리지는 다음과 같이 표시됩니다:
[
](/19.2/ci/testing/code_coverage/img/jacoco_coverage_example_v18_3.png)
이 예시에서 83-86 줄은 커버되지 않은 코드에 빨간 막대를 표시하고, 88 줄은 커버된 코드에 녹색 막대를 표시하며, 87, 89-90 줄에는 커버리지 데이터가 없습니다.
문제 해결#
커버리지 시각화의 문제 해결(경로 확인 실패 및 예상대로 표시되지 않는 주석 포함)은 커버리지 시각화 문제 해결을 참조하세요.
피드백 남기기#
JaCoCo 커버리지 시각화는 활발히 개선되고 있습니다. 문제를 보고하거나 개선 사항을 제안하려면 이슈 479804에 피드백을 남겨주세요.