코드 커버리지

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

코드 커버리지를 사용하여 테스트 스위트에 의해 유효성이 검사되는 소스 코드에 대한 통찰을 제공합니다. 코드 커버리지는 소프트웨어 성능 및 품질을 결정할 수 있는 많은 테스트 메트릭 중 하나입니다.

코드 커버리지 결과

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

  • 병합 요청 위젯
  • 프로젝트 저장소 분석
  • 그룹 저장소 분석
  • 저장소 뱃지

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

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

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

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

MR widget coverage

Build status coverage

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

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

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

  • 집계 값을 포함하려는 각 작업에 대해 정규 표현식 뒤에 coverage 키워드를 추가합니다.

테스트 커버리지 예제

다음 표에는 많은 일반적인 테스트 커버리지 도구에 대한 샘플 정규 표현식 패턴이 나열되어 있습니다. 이러한 샘플이 생성된 후 도구가 변경되었거나 도구가 사용자화되었다면 정규 표현식이 작동하지 않을 수 있습니다. 도구의 출력에서 커버리지가 올바르게 찾아지는지 주의 깊게 테스트하세요.

이름 언어 명령어 예제
Simplecov 루비 없음 /\(\d+.\d+\%\) covered/
pytest-cov 파이썬 없음 /TOTAL.*? (100(?:\.0+)?\%\|[1-9]?\d(?:\.\d+)?\%)$/
Scoverage 스칼라 없음 /(?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 엘릭서 없음 /\[TOTAL\]\s+(\d+\.\d+)%/
mix 엘릭서 mix test --cover /\d+.\d+\%\s+\|\s+Total/
JaCoCo 자바/코틀린 없음 /Total.*?([0-9]{1,3})%/
go test (단일 패키지) Go go test -cover /coverage: \d+.\d+% of statements/
go test (전체 프로젝트) 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 러스트 없음 /^\d+.\d+% coverage/
Pester 파워셸 없음 /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 승인 규칙 옆에 사용을 선택합니다.
    • 수동 설정을 위해 승인 규칙 추가를 선택한 다음 규칙 이름을 입력합니다. 예: 커버리지 확인.
  3. 대상 브랜치를 선택합니다.
  4. 필요한 승인 횟수를 설정합니다.
  5. 사용자 또는 그룹를 선택하여 승인을 제공합니다.
  6. 변경 사항 저장을 선택합니다.

문제 해결

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

일부 테스트 커버리지 도구는 ANSI 색 코드가 포함된 출력물을 생성하여 정규 표현식에서 올바르게 파싱되지 않습니다. 이로 인해 커버리지 파싱이 실패합니다.

일부 커버리지 도구는 출력물에서 색 코드를 비활성화하는 옵션을 제공하지 않습니다. 그렇다면 커버리지 도구의 출력물을 색 코드를 제거하는 원라인 스크립트를 통해 파이프로 연결하세요.

예시:

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