코드 커버리지

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

테스트 스위트에서 유효성을 검사하는 소스 코드를 알려주는 코드 커버리지를 사용하세요. 코드 커버리지는 소프트웨어 성능과 품질을 결정할 수 있는 여러 테스트 메트릭 가운데 하나입니다.

코드 커버리지 결과 보기

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

  • Merge Request 위젯
  • 프로젝트 리포지터리 분석
  • 그룹 리포지터리 분석
  • 리포지터리 뱃지

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

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

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

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

MR 위젯 커버리지

빌드 상태 커버리지

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

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

테스트 커버리지 예시

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

Name Language Command Example
Simplecov Ruby None /\(\d+.\d+\%\) covered/
pytest-cov Python None /(?i)total.*? (100(?:\.0+)?\%|[1-9]?\d(?:\.\d+)?\%)$/
Scoverage Scala None /(?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++ None /^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 None /\[TOTAL\]\s+(\d+\.\d+)%/
mix Elixir mix test --cover /\d+.\d+\%\s+\|\s+Total/
JaCoCo Java/Kotlin None /Total.*?([0-9]{1,3})%/
go test Go go test -cover /coverage: \d+.\d+% of statements/
OpenCover .NET None /(Visited Points).*\((.*)\)/
dotnet test .NET dotnet test /Total\s*\|\s*(\d+(?:\.\d+)?)/
tarpaulin Rust None /^\d+.\d+% coverage/
Pester PowerShell None /Covered (\d+\.\d+%)/

프로젝트 코드 커버리지 이력 보기

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

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

그래프 위의 드롭다운 디렉터리에 각 작업에 대한 이력 데이터가 나열됩니다.

데이터의 CSV 파일을 보려면 원본 데이터 다운로드(.csv)를 선택하세요.

프로젝트 코드 커버리지 시간별 그래프

그룹 코드 커버리지 이력 보기

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

그룹 내 모든 프로젝트의 코드 커버리지를 시간에 따라 보려면 그룹 리포지터리 분석을 확인할 수 있습니다.

그룹 시간별 코드 커버리지 그래프

파이프라인 뱃지

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

커버리지 확인 승인 규칙

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

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

커버리지 확인 MR 승인 규칙을 활성화하려면 다음 단계를 따르세요:

  1. 전체 커버리지 값을 포함하길 원하는 모든 작업에 coverage 정규 표현식을 설정하세요.
  2. 프로젝트로 이동하여 설정 > Merge Request을 선택하세요.
  3. Merge Request 승인 아래에서 커버리지 확인 승인 규칙 옆에 있는 활성화를 선택하세요.
  4. 대상 브랜치를 선택하세요.
  5. 필요한 승인 수를 0보다 큰 값으로 설정하세요.
  6. 승인을 제공할 사용자나 그룹을 선택하세요.
  7. 승인 규칙 추가를 선택하세요.

커버리지 확인 승인 규칙

문제 해결

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

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

일부 커버리지 도구는 출력에서 색상 코드를 비활성화하는 옵션이 제공되지 않을 수 있습니다. 그렇다면 커버리지 도구의 출력을 색상 코드를 제거하는 단일 라인 스크립트를 통해 파이프하는 방법이 있습니다.

예를 들어:

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