JaCoCo Coverage Reports

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-managed Status: Beta
  • 이슈 227345번에서 소개되었습니다. 기본값으로 비활성화된 jacoco_coverage_reports라는 플래그와 함께 GitLab 17.3에 추가되었습니다.

피드백을 남겨주세요

이 기능의 사용성은 피처 플래그로 제어됩니다. 자세한 내용은 히스토리를 참조하십시오. 이 기능은 테스트용으로 제공되지만 프로덕션에서 사용할 준비가 되지 않았습니다.

JaCoCo 커버리지 보고서가 작동하려면 올바르게 포맷된 JaCoCo XML 파일을 생성해야 합니다. 이 XML 파일은 라인 커버리지를 제공해야 합니다.

JaCoCo 커버리지 보고서 시각화는 다음을 지원합니다:

이 기능은 베타 상태입니다. 더 자세한 내용을 알고 싶다면 피드백 이슈를 사용하여 의견을 제공하세요.

JaCoCo 커버리지 작업 추가

파이프라인을 구성하여 커버리지 보고서를 생성하려면 .gitlab-ci.yml 파일에 작업을 추가하십시오. 예를 들면:

다음은 예시 구성입니다:

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

이 예시에서 mvn 명령은 JaCoCo 커버리지 보고서를 생성합니다. path는 생성된 보고서를 가리킵니다.

작업이 여러 보고서를 생성하는 경우, 와일드카드를 사용하여 아티팩트 경로를 지정하십시오.

상대 파일 경로 보정

파일 경로 변환

JaCoCo 보고서는 상대 파일 경로를 제공하지만 커버리지 보고서 시각화에서는 절대 경로를 필요로 합니다. GitLab은 관련된 머지 요청의 데이터를 사용하여 상대 경로를 절대 경로로 변환하려고 시도합니다.

경로 일치 과정은 다음과 같습니다:

  1. 파이프라인 ref에 대한 모든 머지 요청을 찾습니다.
  2. 변경된 모든 파일에 대해 모든 절대 경로를 찾습니다.
  3. 보고서의 각 상대 경로에 대해 첫 번째 일치하는 절대 경로를 사용합니다.

이 과정은 항상 적합한 일치하는 절대 경로를 찾을 수 없을 수 있습니다.

여러 모듈 또는 소스 디렉터리

여러 모듈 또는 소스 디렉터리에 대해 동일한 파일 이름을 가지고 있는 경우, 기본 설정으로는 절대 경로를 찾을 수 없을 수 있습니다.

예를 들어, 다른 머지 요청에서 다음 파일을 변경한 경우 GitLab은 절대 경로를 찾을 수 없습니다:

  • src/main/java/org/acme/DemoExample.java
  • src/main/other-module/org/acme/DemoExample.java

변환된 경로가 성공하려면 상대 경로에서 고유한 차이가 있어야 합니다. 가령, 파일이나 디렉터리 이름을 변경할 수 있습니다:

  • 파일 이름 변경:

    src/main/java/org/acme/DemoExample.java
    - src/main/other-module/org/acme/DemoExample.java
    + src/main/other-module/org/acme/OtherDemoExample.java
    
  • 경로 변경:

    src/main/java/org/acme/DemoExample.java
    - src/main/other-module/org/acme/DemoExample.java
    + src/main/other-module/org/other-acme/DemoExample.java
    

또한 완전한 상대 경로가 고유하다면 새 디렉터리를 추가할 수도 있습니다.

문제 해결

변경된 파일의 메트릭이 모두 표시되지 않음

동일한 소스 브랜치에서 새로운 머지 요청을 작성하지만 대상 브랜치가 다른 경우, 메트릭이 올바르게 표시되지 않을 수 있습니다.

작업은 새로운 머지 요청의 차이점을 고려하지 않고 다른 머지 요청의 차이점에 포함되지 않은 파일의 메트릭을 표시하지 않습니다. 에러가 발생하더라도 생성된 커버리지 보고서에 지정된 파일의 메트릭을 표시하지 않습니다.

이 문제를 해결하려면 새로운 머지 요청이 생성될 때까지 기다렸다가 파이프라인을 다시 실행하거나 새로 시작해야 합니다. 그러면 새로운 머지 요청이 고려됩니다.