InfoGrab DocsInfoGrab Docs

커버리지 리포팅

요약

coverage 키워드를 사용하여 테스트 job의 로그 출력에서 커버리지 비율을 추출하고, 머지 리퀘스트 및 분석 화면에 표시할 수 있습니다. 이 키워드는 커버리지 비율만 표시합니다. 테스트 도구의 출력과 일치하는 정규 표현식을 사용하여 job에 coverage 키워드를 추가합니다:

coverage 키워드를 사용하여 테스트 job의 로그 출력에서 커버리지 비율을 추출하고, 머지 리퀘스트 및 분석 화면에 표시할 수 있습니다.

이 키워드는 커버리지 비율만 표시합니다. MR diff에서 라인별 어노테이션은 생성하지 않습니다. 라인 어노테이션을 표시하려면 artifacts:reports:coverage_report를 별도로 구성하세요.

커버리지 리포팅 구성#

커버리지 리포팅을 구성하려면:

  • 테스트 도구의 출력과 일치하는 정규 표현식을 사용하여 job에 coverage 키워드를 추가합니다:

    test:
      script:
        - pytest --cov
      coverage: '/TOTAL.*? (100(?:\.0+)?\%|[1-9]?\d(?:\.\d+)?\%)$/'
    
  • 여러 job에서 커버리지를 집계하려면 각 job에 coverage 키워드를 추가합니다.

커버리지 정규식 패턴#

다음 정규식 패턴은 일반적인 테스트 커버리지 도구의 출력과 일치합니다. 도구의 출력 형식은 시간이 지남에 따라 변경될 수 있으므로 신중하게 테스트하세요.

Python 및 Ruby

도구 언어 명령어 정규식 패턴
pytest-cov Python pytest --cov /TOTAL.*? (100(?:.0+)?%
Simplecov-html Ruby rspec spec /Line\sCoverage:\s\d+.\d+%/

C/C++ 및 Rust

도구 언어 명령어 정규식 패턴
gcovr C/C++ gcovr /^TOTAL.*\s+(\d+%)$/
tarpaulin Rust cargo tarpaulin /^\d+.\d+% coverage/

Java 및 JVM

도구 언어 명령어 정규식 패턴
JaCoCo Java/Kotlin ./gradlew test jacocoTestReport /Total.*?([0-9]{1,3})%/
Scoverage Scala sbt coverage test coverageReport /(?i)total.*? (100(?:.0+)?%

Node.js

도구 명령어 정규식 패턴
tap tap --coverage-report=text-summary /^Statements\s*:\s*([^%]+)/
nyc nyc npm test /All files[^
jest jest --ci --coverage /All files[^
node:test node --experimental-test-coverage --test /all files[^

PHP

도구 명령어 정규식 패턴
pest pest --coverage --colors=never /Statement coverage[A-Za-z.]\s:\s*([^%]+)/
phpunit phpunit --coverage-text --colors=never /^\sLines:\s\d+.\d+%/

Go

도구 명령어 정규식 패턴
go test (single) go test -cover /coverage: \d+.\d+% of statements/
go test (project) go test -coverprofile=cover.profile && go tool cover -func cover.profile /total:\s+(statements)\s+\d+.\d+%/

.NET 및 PowerShell

도구 언어 명령어 정규식 패턴
OpenCover .NET None /(Visited Points).((.))/
dotnet test .NET dotnet test /Total\s*
Pester PowerShell None /Covered (\d{1,3}(.

Elixir

도구 명령어 정규식 패턴
excoveralls None /[TOTAL]\s+(\d+.\d+)%/
mix mix test --cover /\d+.\d+%\s+

커버리지 확인 승인 규칙 추가#

DETAILS: Tier: Premium, Ultimate

프로젝트의 테스트 커버리지를 낮추는 머지 리퀘스트에 대해 특정 사용자 또는 그룹의 승인을 요구할 수 있습니다.

사전 조건:

  • 커버리지 리포팅을 구성합니다.

Coverage-Check 승인 규칙을 추가하려면:

  • 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.

  • 왼쪽 사이드바에서 Settings > Merge requests를 선택합니다.

  • Merge request approvals 아래에서 다음 중 하나를 수행합니다:

Coverage-Check 승인 규칙 옆에서 Enable을 선택합니다.

  • 수동 설정의 경우 Add approval rule을 선택한 후 Rule name으로 Coverage-Check를 입력합니다.

  • Target branch를 선택합니다.

  • Required number of approvals 수를 설정합니다.

  • 승인을 제공할 Users 또는 Groups를 선택합니다.

  • Save changes를 선택합니다.

Coverage-Check 승인 규칙은 머지 베이스 파이프라인에 커버리지 데이터가 없을 때 승인을 요구합니다. 머지 리퀘스트가 전체 커버리지를 향상시키는 경우에도 마찬가지입니다.

커버리지 기록 보기#

시간 경과에 따라 프로젝트 또는 그룹의 커버리지 추이를 추적할 수 있습니다.

프로젝트의 경우#

  • 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.

  • 왼쪽 사이드바에서 Analyze > Repository analytics를 선택합니다.

  • 드롭다운 목록에서 기록 데이터를 보고 싶은 job을 선택합니다.

  • 선택 사항. 데이터를 다운로드하려면 **Download raw data (.csv)**를 선택합니다.

그룹의 경우#

DETAILS: Tier: Premium, Ultimate

  • 상단 바에서 Search or go to를 선택하고 그룹을 찾습니다.

  • 왼쪽 사이드바에서 Analyze > Repository analytics를 선택합니다.

  • 선택 사항. 데이터를 다운로드하려면 **Download historic test coverage data (.csv)**를 선택합니다.

커버리지 배지 표시#

프로젝트에 커버리지 배지를 추가하려면 테스트 커버리지 리포트 배지를 참조하세요.

문제 해결#

커버리지 리포팅을 사용할 때 다음과 같은 문제가 발생할 수 있습니다.

MR 위젯에 커버리지 비율이 표시되지 않는 경우#

coverage 키워드는 정규 표현식을 사용하여 job의 로그 출력에서 비율을 추출합니다. 비율이 표시되지 않는 경우:

  • 정규식이 도구의 실제 출력과 일치하는지 확인합니다. job 로그에서 한 줄을 복사하여 정규식에 대해 테스트해보세요.

  • 일부 도구는 정규식 매칭을 방해하는 ANSI 색상 코드를 출력합니다. 도구에서 색상 출력 비활성화를 지원하지 않는 경우, 파싱 전에 코드를 제거합니다:

    lein cloverage | perl -pe 's/\e\[?.*?[\@-~]//g'
    
  • job이 성공적으로 완료되었는지 확인합니다. 커버리지는 성공한 job에서만 추출됩니다.

  • 하위 파이프라인의 커버리지 출력은 기록되지 않습니다. 자세한 내용은 이슈 280818을 참조하세요.

coverage 키워드는 MR 위젯에 비율만 표시합니다. diff의 라인별 어노테이션을 보려면 artifacts:reports:coverage_report를 별도로 구성하세요.

커버리지 리포팅

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

coverage 키워드를 사용하여 테스트 job의 로그 출력에서 커버리지 비율을 추출하고, 머지 리퀘스트 및 분석 화면에 표시할 수 있습니다. 이 키워드는 커버리지 비율만 표시합니다. 테스트 도구의 출력과 일치하는 정규 표현식을 사용하여 job에 coverage 키워드를 추가합니다:

coverage 키워드를 사용하여 테스트 job의 로그 출력에서 커버리지 비율을 추출하고, 머지 리퀘스트 및 분석 화면에 표시할 수 있습니다.

이 키워드는 커버리지 비율만 표시합니다. MR diff에서 라인별 어노테이션은 생성하지 않습니다. 라인 어노테이션을 표시하려면 artifacts:reports:coverage_report를 별도로 구성하세요.

커버리지 리포팅 구성#

커버리지 리포팅을 구성하려면:

  • 테스트 도구의 출력과 일치하는 정규 표현식을 사용하여 job에 coverage 키워드를 추가합니다:

    test:
      script:
        - pytest --cov
      coverage: '/TOTAL.*? (100(?:\.0+)?\%|[1-9]?\d(?:\.\d+)?\%)$/'
    
  • 여러 job에서 커버리지를 집계하려면 각 job에 coverage 키워드를 추가합니다.

커버리지 정규식 패턴#

다음 정규식 패턴은 일반적인 테스트 커버리지 도구의 출력과 일치합니다. 도구의 출력 형식은 시간이 지남에 따라 변경될 수 있으므로 신중하게 테스트하세요.

Python 및 Ruby

도구 언어 명령어 정규식 패턴
pytest-cov Python pytest --cov /TOTAL.*? (100(?:.0+)?%
Simplecov-html Ruby rspec spec /Line\sCoverage:\s\d+.\d+%/

C/C++ 및 Rust

도구 언어 명령어 정규식 패턴
gcovr C/C++ gcovr /^TOTAL.*\s+(\d+%)$/
tarpaulin Rust cargo tarpaulin /^\d+.\d+% coverage/

Java 및 JVM

도구 언어 명령어 정규식 패턴
JaCoCo Java/Kotlin ./gradlew test jacocoTestReport /Total.*?([0-9]{1,3})%/
Scoverage Scala sbt coverage test coverageReport /(?i)total.*? (100(?:.0+)?%

Node.js

도구 명령어 정규식 패턴
tap tap --coverage-report=text-summary /^Statements\s*:\s*([^%]+)/
nyc nyc npm test /All files[^
jest jest --ci --coverage /All files[^
node:test node --experimental-test-coverage --test /all files[^

PHP

도구 명령어 정규식 패턴
pest pest --coverage --colors=never /Statement coverage[A-Za-z.]\s:\s*([^%]+)/
phpunit phpunit --coverage-text --colors=never /^\sLines:\s\d+.\d+%/

Go

도구 명령어 정규식 패턴
go test (single) go test -cover /coverage: \d+.\d+% of statements/
go test (project) go test -coverprofile=cover.profile && go tool cover -func cover.profile /total:\s+(statements)\s+\d+.\d+%/

.NET 및 PowerShell

도구 언어 명령어 정규식 패턴
OpenCover .NET None /(Visited Points).((.))/
dotnet test .NET dotnet test /Total\s*
Pester PowerShell None /Covered (\d{1,3}(.

Elixir

도구 명령어 정규식 패턴
excoveralls None /[TOTAL]\s+(\d+.\d+)%/
mix mix test --cover /\d+.\d+%\s+

커버리지 확인 승인 규칙 추가#

DETAILS: Tier: Premium, Ultimate

프로젝트의 테스트 커버리지를 낮추는 머지 리퀘스트에 대해 특정 사용자 또는 그룹의 승인을 요구할 수 있습니다.

사전 조건:

  • 커버리지 리포팅을 구성합니다.

Coverage-Check 승인 규칙을 추가하려면:

  • 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.

  • 왼쪽 사이드바에서 Settings > Merge requests를 선택합니다.

  • Merge request approvals 아래에서 다음 중 하나를 수행합니다:

Coverage-Check 승인 규칙 옆에서 Enable을 선택합니다.

  • 수동 설정의 경우 Add approval rule을 선택한 후 Rule name으로 Coverage-Check를 입력합니다.

  • Target branch를 선택합니다.

  • Required number of approvals 수를 설정합니다.

  • 승인을 제공할 Users 또는 Groups를 선택합니다.

  • Save changes를 선택합니다.

Coverage-Check 승인 규칙은 머지 베이스 파이프라인에 커버리지 데이터가 없을 때 승인을 요구합니다. 머지 리퀘스트가 전체 커버리지를 향상시키는 경우에도 마찬가지입니다.

커버리지 기록 보기#

시간 경과에 따라 프로젝트 또는 그룹의 커버리지 추이를 추적할 수 있습니다.

프로젝트의 경우#

  • 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.

  • 왼쪽 사이드바에서 Analyze > Repository analytics를 선택합니다.

  • 드롭다운 목록에서 기록 데이터를 보고 싶은 job을 선택합니다.

  • 선택 사항. 데이터를 다운로드하려면 **Download raw data (.csv)**를 선택합니다.

그룹의 경우#

DETAILS: Tier: Premium, Ultimate

  • 상단 바에서 Search or go to를 선택하고 그룹을 찾습니다.

  • 왼쪽 사이드바에서 Analyze > Repository analytics를 선택합니다.

  • 선택 사항. 데이터를 다운로드하려면 **Download historic test coverage data (.csv)**를 선택합니다.

커버리지 배지 표시#

프로젝트에 커버리지 배지를 추가하려면 테스트 커버리지 리포트 배지를 참조하세요.

문제 해결#

커버리지 리포팅을 사용할 때 다음과 같은 문제가 발생할 수 있습니다.

MR 위젯에 커버리지 비율이 표시되지 않는 경우#

coverage 키워드는 정규 표현식을 사용하여 job의 로그 출력에서 비율을 추출합니다. 비율이 표시되지 않는 경우:

  • 정규식이 도구의 실제 출력과 일치하는지 확인합니다. job 로그에서 한 줄을 복사하여 정규식에 대해 테스트해보세요.

  • 일부 도구는 정규식 매칭을 방해하는 ANSI 색상 코드를 출력합니다. 도구에서 색상 출력 비활성화를 지원하지 않는 경우, 파싱 전에 코드를 제거합니다:

    lein cloverage | perl -pe 's/\e\[?.*?[\@-~]//g'
    
  • job이 성공적으로 완료되었는지 확인합니다. 커버리지는 성공한 job에서만 추출됩니다.

  • 하위 파이프라인의 커버리지 출력은 기록되지 않습니다. 자세한 내용은 이슈 280818을 참조하세요.

coverage 키워드는 MR 위젯에 비율만 표시합니다. diff의 라인별 어노테이션을 보려면 artifacts:reports:coverage_report를 별도로 구성하세요.