InfoGrab Docs

JaCoCo 커버리지 보고서

요약

JaCoCo 커버리지 보고서가 작동하려면 라인 커버리지를 제공하는 적절히 형식화된 JaCoCo XML 파일을 생성해야 합니다. 멀티 모듈 프로젝트의 집계 보고서는 지원되지 않습니다. JaCoCo 커버리지 보고서 시각화는 다음을 지원합니다:

히스토리

피드백 남기기

JaCoCo 커버리지 보고서가 작동하려면 라인 커버리지를 제공하는 적절히 형식화된 JaCoCo XML 파일을 생성해야 합니다.

Note

멀티 모듈 프로젝트의 집계 보고서는 지원되지 않습니다. 집계 보고서 지원에 기여하려면 이슈 491015를 참조하세요.

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

커버리지 정보는 다음 표시기와 함께 머지 리퀘스트 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 뷰에서 커버리지는 다음과 같이 표시됩니다:

커버되지 않은 줄에 빨간 막대, 커버된 줄에 녹색 막대가 있는 커버리지 표시기를 보여주는 머지 리퀘스트 diff 뷰.

이 예시에서 83-86 줄은 커버되지 않은 코드에 빨간 막대를 표시하고, 88 줄은 커버된 코드에 녹색 막대를 표시하며, 87, 89-90 줄에는 커버리지 데이터가 없습니다.

JaCoCo 커버리지 job 추가#

커버리지 보고서를 생성하도록 파이프라인을 구성하려면 .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

이 예시에서:

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

job이 여러 보고서를 생성하는 경우 아티팩트 경로에 와일드카드를 사용합니다.

상대 파일 경로 수정#

파일 경로 변환#

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
    

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

문제 해결#

변경된 모든 파일에 메트릭이 표시되지 않음#

동일한 소스 브랜치에서 새 머지 리퀘스트를 생성하지만 다른 대상 브랜치를 사용하는 경우 메트릭이 올바르게 표시되지 않을 수 있습니다.

job은 새 머지 리퀘스트의 diff를 고려하지 않으며 다른 머지 리퀘스트의 diff에 포함되지 않은 파일에 대한 메트릭을 표시하지 않습니다. 생성된 커버리지 보고서에 지정된 파일에 대한 메트릭이 포함되어 있는 경우에도 이런 일이 발생합니다.

이 문제를 해결하려면 새 머지 리퀘스트가 생성될 때까지 기다린 다음 파이프라인을 다시 실행하거나 새로 시작합니다. 그러면 새 머지 리퀘스트가 고려됩니다.

JaCoCo 커버리지 보고서

Tier: Free, Premium, Ultimate
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
원문 보기
요약

JaCoCo 커버리지 보고서가 작동하려면 라인 커버리지를 제공하는 적절히 형식화된 JaCoCo XML 파일을 생성해야 합니다. 멀티 모듈 프로젝트의 집계 보고서는 지원되지 않습니다. JaCoCo 커버리지 보고서 시각화는 다음을 지원합니다:

히스토리

피드백 남기기

JaCoCo 커버리지 보고서가 작동하려면 라인 커버리지를 제공하는 적절히 형식화된 JaCoCo XML 파일을 생성해야 합니다.

Note

멀티 모듈 프로젝트의 집계 보고서는 지원되지 않습니다. 집계 보고서 지원에 기여하려면 이슈 491015를 참조하세요.

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

커버리지 정보는 다음 표시기와 함께 머지 리퀘스트 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 뷰에서 커버리지는 다음과 같이 표시됩니다:

커버되지 않은 줄에 빨간 막대, 커버된 줄에 녹색 막대가 있는 커버리지 표시기를 보여주는 머지 리퀘스트 diff 뷰.

이 예시에서 83-86 줄은 커버되지 않은 코드에 빨간 막대를 표시하고, 88 줄은 커버된 코드에 녹색 막대를 표시하며, 87, 89-90 줄에는 커버리지 데이터가 없습니다.

JaCoCo 커버리지 job 추가#

커버리지 보고서를 생성하도록 파이프라인을 구성하려면 .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

이 예시에서:

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

job이 여러 보고서를 생성하는 경우 아티팩트 경로에 와일드카드를 사용합니다.

상대 파일 경로 수정#

파일 경로 변환#

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
    

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

문제 해결#

변경된 모든 파일에 메트릭이 표시되지 않음#

동일한 소스 브랜치에서 새 머지 리퀘스트를 생성하지만 다른 대상 브랜치를 사용하는 경우 메트릭이 올바르게 표시되지 않을 수 있습니다.

job은 새 머지 리퀘스트의 diff를 고려하지 않으며 다른 머지 리퀘스트의 diff에 포함되지 않은 파일에 대한 메트릭을 표시하지 않습니다. 생성된 커버리지 보고서에 지정된 파일에 대한 메트릭이 포함되어 있는 경우에도 이런 일이 발생합니다.

이 문제를 해결하려면 새 머지 리퀘스트가 생성될 때까지 기다린 다음 파이프라인을 다시 실행하거나 새로 시작합니다. 그러면 새 머지 리퀘스트가 고려됩니다.