코드 커버리지

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated

테스트 스위트에서 검증되는 소스 코드에 대한 통찰력을 제공하기 위해 코드 커버리지를 사용하십시오. 코드 커버리지는 소프트웨어 성능과 품질을 결정할 수 있는 여러 테스트 메트릭 중 하나입니다.

코드 커버리지 결과

코드 커버리지 결과는 다음에 표시됩니다:

  • 병합 요청 위젯
  • 프로젝트 리포지토리 분석
  • 그룹 리포지토리 분석
  • 리포지토리 배지

병합 요청의 파일 차이에서 테스트 커버리지 시각화에 대한 자세한 내용은 테스트 커버리지 시각화를 참조하십시오.

병합 요청에서의 코드 커버리지 결과

코드에서 테스트 커버리지를 사용하는 경우, 정규 표현식을 사용하여 작업 로그에서 커버리지 결과를 찾을 수 있습니다. 그런 다음 이러한 결과를 병합 요청에 포함할 수 있습니다.

파이프라인이 성공하면, 커버리지는 병합 요청 위젯과 작업 테이블에 표시됩니다. 파이프라인에서 여러 작업이 커버리지 보고서를 갖고 있는 경우, 평균이 계산됩니다.

MR 위젯 커버리지

빌드 상태 커버리지

병합 요청에 코드 커버리지 결과 추가

프로젝트의 .gitlab-ci.yml 파일에 coverage 키워드를 추가하여 병합 요청에서 테스트 커버리지 결과를 표시할 수 있습니다.

여러 테스트 커버리지 값을 집계하려면:

  • 집계 값에 포함할 각 작업에 대해, 정규 표현식 뒤에 coverage 키워드를 추가하십시오.

테스트 커버리지 예시

다음 표는 여러 일반적인 테스트 커버리지 도구에 대한 샘플 정규 표현식 패턴을 나열합니다. 이 샘플이 생성된 후 도구가 변경되었거나 도구가 사용자 정의되었다면, 정규 표현식이 작동하지 않을 수 있습니다. 도구의 출력에서 커버리지를 올바르게 찾는지 확인하기 위해 정규 표현식을 주의 깊게 테스트하십시오:

이름 언어 명령 예시
Simplecov Ruby 없음 /\(\d+.\d+\%\) covered/
pytest-cov Python 없음 /TOTAL.*? (100(?:\.0+)?\%\|[1-9]?\d(?:\.\d+)?\%)$/
Scoverage Scala 없음 /(?i)total.*? (100(?:\.0+)?\%\|[1-9]?\d(?:\.\d+)?\%)$/
pest PHP pest --coverage --colors=never /Statement coverage[A-Za-z\.*]\s*:\s*([^%]+)/
phpunit PHP phpunit --coverage-text --colors=never /^\s*Lines:\s*\d+.\d+\%/
gcovr C/C++ 없음 /^TOTAL.*\s+(\d+\%)$/
tap NodeJs tap --coverage-report=text-summary /^Statements\s*:\s*([^%]+)/
nyc NodeJs nyc npm test /All files[^\|]*\|[^\|]*\s+([\d\.]+)/
jest NodeJs jest --ci --coverage /All files[^\|]*\|[^\|]*\s+([\d\.]+)/
excoveralls Elixir 없음 /\[TOTAL\]\s+(\d+\.\d+)%/
mix Elixir mix test --cover /\d+.\d+\%\s+\|\s+Total/
JaCoCo Java/Kotlin 없음 /Total.*?([0-9]{1,3})%/
go test (single package) Go go test -cover /coverage: \d+.\d+% of statements/
go test (whole project) Go go test -coverprofile=cover.profile && go tool cover -func cover.profile /total:\s+\(statements\)\s+\d+.\d+%/
OpenCover .NET 없음 /(Visited Points).*\((.*)\)/
dotnet test (MSBuild) .NET dotnet test /Total\s*\|\s*(\d+(?:\.\d+)?)/
tarpaulin Rust 없음 /^\d+.\d+% coverage/
Pester PowerShell 없음 /Covered (\d+\.\d+%)/

코드 커버리지 이력 보기

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

프로젝트용

프로젝트의 코드 커버리지 이력을 보려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 분석 > 리포지토리 분석을 선택합니다.
  3. 드롭다운 목록에서 이력 데이터를 보려는 작업을 선택합니다.
  4. 선택 사항. 데이터의 CSV 파일을 보려면 원시 데이터 다운로드(.csv)를 선택합니다.

프로젝트의 코드 커버리지 그래프

그룹용

Tier: Premium, Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated

그룹 내 모든 프로젝트의 코드 커버리지 이력을 보려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 그룹을 찾습니다.
  2. 분석 > 리포지토리 분석을 선택합니다.
  3. 선택 사항. 데이터의 CSV 파일을 보려면 히스토릭 테스트 커버리지 데이터 다운로드(.csv)를 선택합니다.

그룹의 코드 커버리지 그래프

파이프라인 배지

파이프라인 배지를 사용하여 파이프라인 상태와 프로젝트의 테스트 커버리지를 표시할 수 있습니다. 이러한 배지는 최신 성공적인 파이프라인에 따라 결정됩니다.

커버리지 검사 승인 규칙 추가

Tier: Premium, Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated

프로젝트의 테스트 커버리지를 줄이는 병합 요청을 승인할 특정 사용자 또는 그룹을 요구할 수 있습니다.

전제 조건:

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

  1. 프로젝트로 이동하여 설정 > 병합 요청을 선택합니다.
  2. 병합 요청 승인 아래에서 다음 중 하나를 수행합니다:
    • Coverage-Check 승인 규칙 옆에서 활성화를 선택합니다.
    • 수동 설정을 위해 승인 규칙 추가를 선택한 다음 규칙 이름을 입력합니다. 예: Coverage Check.
  3. 대상 브랜치를 선택합니다.
  4. 필요한 승인 수를 설정합니다.
  5. 승인을 제공할 사용자 또는 그룹을 선택합니다.
  6. 변경 사항 저장을 선택합니다.

문제 해결

코드 커버리지에서 색상 코드 제거

일부 테스트 커버리지 도구는 일반 표현식에 의해 올바르게 구문 분석되지 않는 ANSI 색상 코드와 함께 출력을 생성합니다. 이는 커버리지 구문 분석 실패를 초래합니다.

일부 커버리지 도구는 출력에서 색상 코드를 비활성화하는 옵션을 제공하지 않습니다. 그렇다면, 색상 코드를 제거하는 한 줄 스크립트를 통해 커버리지 도구의 출력을 파이프합니다.

예를 들어:

lein cloverage | perl -pe 's/\e\[?.*?[\@-~]//g'