코드 커버리지
코드 커버리지를 사용하여 테스트 스위트에 의해 유효성이 검사되는 소스 코드에 대한 통찰을 제공합니다. 코드 커버리지는 소프트웨어 성능 및 품질을 결정할 수 있는 많은 테스트 메트릭 중 하나입니다.
코드 커버리지 결과
코드 커버리지 결과는 다음에서 표시됩니다:
- 병합 요청 위젯
- 프로젝트 저장소 분석
- 그룹 저장소 분석
- 저장소 뱃지
병합 요청의 파일 차이에서 테스트 커버리지 시각화에 대한 자세한 내용은 테스트 커버리지 시각화를 참조하세요.
병합 요청의 코드 커버리지 결과
코드에서 테스트 커버리지를 사용하는 경우 정규 표현식을 사용하여 작업 로그에서 커버리지 결과를 찾을 수 있습니다. 그런 다음 병합 요청에 이러한 결과를 포함할 수 있습니다.
파이프라인이 성공하면 커버리지가 병합 요청 위젯과 작업 테이블에 표시됩니다. 파이프라인의 여러 작업에 커버리지 보고서가 있는 경우 이들은 평균화됩니다.
병합 요청에 코드 커버리지 결과 추가
프로젝트의 .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+%)/
|
코드 커버리지 이력 보기
프로젝트 또는 그룹의 시간 경과에 따른 코드 커버리지의 진화를 추적할 수 있습니다.
프로젝트의 경우
프로젝트의 코드 커버리지 이력을 보려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 분석 > 저장소 분석을 선택합니다.
- 드롭다운 목록에서 보고 싶은 작업을 선택합니다.
- 데이터의 CSV 파일을 보려면 원시 데이터 다운로드 (.csv)을 선택합니다.
그룹의 경우
그룹의 모든 프로젝트에 대한 코드 커버리지 이력을 보려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 그룹을 찾습니다.
- 분석 > 저장소 분석을 선택합니다.
- 데이터의 CSV 파일을 보려면 기존 테스트 커버리지 데이터 다운로드 (.csv)를 선택합니다.
파이프라인 뱃지
프로젝트의 파이프라인 상태와 테스트 커버리지를 나타내기 위해 파이프라인 뱃지를 사용할 수 있습니다. 이러한 뱃지는 가장 최근에 성공한 파이프라인에 의해 결정됩니다.
커버리지 확인 승인 규칙 추가
특정 사용자 또는 그룹이 프로젝트의 테스트 커버리지를 줄이는 병합 요청을 승인하도록 요구할 수 있습니다.
전제 조건:
- 병합 요청에서 코드 커버리지 결과를 추가했는지 확인하십시오.
Coverage-Check
승인 규칙을 추가하려면:
- 프로젝트로 이동하여 설정 > 병합 요청을 선택합니다.
-
병합 요청 승인 아래에서 다음 작업 중 하나를 수행합니다:
-
Coverage-Check
승인 규칙 옆에 사용을 선택합니다. - 수동 설정을 위해 승인 규칙 추가를 선택한 다음 규칙 이름을 입력합니다. 예:
커버리지 확인
.
-
- 대상 브랜치를 선택합니다.
- 필요한 승인 횟수를 설정합니다.
- 사용자 또는 그룹를 선택하여 승인을 제공합니다.
- 변경 사항 저장을 선택합니다.
문제 해결
코드 커버리지에서 색 코드 제거
일부 테스트 커버리지 도구는 ANSI 색 코드가 포함된 출력물을 생성하여 정규 표현식에서 올바르게 파싱되지 않습니다. 이로 인해 커버리지 파싱이 실패합니다.
일부 커버리지 도구는 출력물에서 색 코드를 비활성화하는 옵션을 제공하지 않습니다. 그렇다면 커버리지 도구의 출력물을 색 코드를 제거하는 원라인 스크립트를 통해 파이프로 연결하세요.
예시:
lein cloverage | perl -pe 's/\e\[?.*?[\@-~]//g'