코드 커버리지

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

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

코드 커버리지 결과 보기

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

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

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

MR에서 코드 커버리지 결과 보기

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

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

MR 위젯 커버리지

빌드 상태 커버리지

coverage 키워드를 사용하여 테스트 커버리지 결과 추가

프로젝트의 .gitlab-ci.yml 파일을 사용하여 병합 요청에 테스트 커버리지 결과를 추가하려면 coverage 키워드를 사용하여 정규 표현식을 제공하세요.

테스트 커버리지 예시

다음 목록은 여러 일반적인 테스트 커버리지 도구에 대한 샘플 정규 표현식 패턴을 보여줍니다. 예시가 작성된 후 도구가 변경된 경우나 도구가 사용자 정의된 경우 정규 표현식이 작동하지 않을 수 있습니다. 정확한 커버리지를 올바르게 찾는지 신중하게 테스트하세요:

  • Simplecov (Ruby). 예시: /\(\d+.\d+\%\) covered/.
  • pytest-cov (Python). 예시: /TOTAL.*? (100(?:\.0+)?\%|[1-9]?\d(?:\.\d+)?\%)$/.
  • Scoverage (Scala). 예시: /Statement coverage[A-Za-z\.*]\s*:\s*([^%]+)/.
  • pest --coverage --colors=never (PHP). 예시: /^\s*Cov:\s*\d+\.\d+?%$/.
  • phpunit --coverage-text --colors=never (PHP). 예시: /^\s*Lines:\s*\d+.\d+\%/.
  • gcovr (C/C++). 예시: /^TOTAL.*\s+(\d+\%)$/.
  • tap --coverage-report=text-summary (NodeJS). 예시: /^Statements\s*:\s*([^%]+)/.
  • nyc npm test (NodeJS). 예시: /All files[^|]*\|[^|]*\s+([\d\.]+)/.
  • jest --ci --coverage (NodeJS). 예시: /All files[^|]*\|[^|]*\s+([\d\.]+)/.
  • excoveralls (Elixir). 예시: /\[TOTAL\]\s+(\d+\.\d+)%/.
  • mix test --cover (Elixir). 예시: /\d+.\d+\%\s+\|\s+Total/.
  • JaCoCo (Java/Kotlin). 예시: /Total.*?([0-9]{1,3})%/.
  • go test -cover (Go). 예시: /^coverage: (\d+.\d+)% of statements$/.
  • .NET (OpenCover). 예시: /(Visited Points).*\((.*)\)/.
  • .NET (dotnet test line coverage). 예시: /Total\s*\|\s*(\d+(?:\.\d+)?)/.
  • tarpaulin (Rust). 예시: /^\d+.\d+% coverage/.
  • Pester (PowerShell). 예시: /Covered (\d+\.\d+%)/.

프로젝트 코드 커버리지의 히스토리 보기

  • GitLab 12.10에서 .csv 다운로드 기능을 도입함.
  • GitLab 13.1에서 그래프가 도입됨.

프로젝트 코드 커버리지의 진화를 보려면 데이터를 포함한 그래프를 보거나 CSV 파일을 다운로드할 수 있습니다.

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 분석 > 저장소 분석을 선택합니다.

각 작업의 히스토릭 데이터는 그래프 위의 드롭다운 목록에 나열됩니다.

데이터의 CSV 파일을 보려면 원시 데이터 다운로드 (.csv)를 선택합니다.

GitLab 13.1 이후 프로젝트의 코드 커버리지 그래프

그룹 코드 커버리지 히스토리 보기

Tier: 프리미엄, 얼티메이트 Offering: GitLab.com, Self-managed, GitLab Dedicated

시간별로 그룹 내 모든 프로젝트의 코드 커버리지를 보려면 그룹 저장소 분석를 확인할 수 있습니다.

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

파이프라인 뱃지

프로젝트의 파이프라인 상태와 테스트 커버리지를 나타내기 위해 파이프라인 뱃지를 사용할 수 있습니다. 이러한 뱃지는 최신 성공한 파이프라인에 의해 결정됩니다.

커버리지 확인 승인 규칙

Tier: 프리미엄, 얼티메이트 Offering: GitLab.com, Self-managed, GitLab Dedicated

프로젝트의 테스트 커버리지가 감소할 수 있는 요청을 병합할 때, 해당 병합 요청이 특정 사용자나 그룹의 승인을 요구하도록 지정할 수 있습니다.

커버리지-체크 MR 승인 규칙을 활성화하는 단계는 다음과 같습니다.

  1. 전체 커버리지 값에 포함하려는 모든 작업에 대해 커버리지 정규 표현식을 설정합니다.
  2. 프로젝트로 이동하여 설정 > 병합 요청을 선택합니다.
  3. 병합 요청 승인에서 커버리지-체크 승인 규칙 옆의 활성화를 선택합니다.
  4. 대상 브랜치를 선택합니다.
  5. 필요한 승인 횟수를 0보다 크게 설정합니다.
  6. 승인을 제공할 사용자 또는 그룹을 선택합니다.
  7. 승인 규칙 추가를 선택합니다.

커버리지-체크 승인 규칙

문제 해결

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

일부 테스트 커버리지 도구는 ANSI 색상 코드로 출력되어 정규 표현식에서 올바르게 구문 분석되지 않습니다. 이는 커버리지 구문 분석에 실패합니다.

일부 커버리지 도구는 출력에서 색상 코드를 비활성화할 수 있는 옵션을 제공하지 않습니다. 그렇다면 커버리지 도구의 출력을 색상 코드를 제거하는 원줄 스크립트를 통해 처리하세요.

예를 들어:

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