소스 코드 공급자로부터 수집되는 데이터에 대한 자세한 내용은 수집되는 데이터를 참조하세요.
데이터 액세스 권한
Datadog 관리형 역할 대신 사용자 지정 역할을 사용하는 경우, 코드 커버리지 데이터를 조회해야 하는 역할에 대해 Code Coverage Read 권한을 활성화해야 합니다.
역할 설정으로 이동하여 필요한 역할에 대해 Edit을 클릭하고, 해당 역할에 Code Coverage Read 권한을 추가한 다음 변경 사항을 저장합니다.
더 세밀한 제어를 원하면 Data Access Control을 사용하여 조직 전체가 아닌 리포지토리별로 코드 커버리지 데이터를 제한하세요. 이렇게 하면 소스 경로 및 테스트 이름과 같은 커버리지 보고서의 민감한 정보가 팀 경계를 넘어가는 것을 방지할 수 있습니다.
Datadog에서 Organization Settings > Data Access Control로 이동하여 Software Delivery 및 제한하려는 리포지토리로 범위가 지정된 Restricted Dataset를 생성합니다. 해당 데이터를 확인해야 하는 역할이나 팀에 액세스 권한을 부여합니다.
PR Gate
PR 커버리지에 대해 게이트를 설정하려면 다음 두 가지 방법 중 하나로 PR Gate 규칙을 구성할 수 있습니다.
Datadog UI: PR Gate 규칙 생성으로 이동하여 전체 또는 패치 커버리지에 대해 게이트를 설정하는 규칙을 구성합니다.
test:
stage: test
script:
- ... # run your tests and generate coverage reports
- datadog-ci coverage upload . # make sure to add the DD_API_KEY CI/CD variable
이 명령은 지정된 디렉터리에서 지원되는 커버리지 보고서 파일을 재귀적으로 검색하므로 현재 디렉터리(.)를 지정하는 것으로 충분한 경우가 많습니다.
datadog-ci coverage upload 명령에 대한 자세한 내용은 datadog-ci 설명서를 참조하세요.
코드 커버리지 보고서 업로드가 완료된 직후, Datadog은 코드 커버리지 백분율 값이 포함된 PR 코멘트를 추가합니다. 코멘트에 파일별 전체 커버리지 및 패치 커버리지 분석을 추가하려면 PR 코멘트를 참조하세요.
또한 Datadog의 Code Coverage 페이지에서 풀 요청별로 집계된 커버리지 데이터를 조회하고 개별 파일 및 코드 줄을 검토할 수 있습니다.
문제 해결
커버리지 업로드 명령이 커버리지 보고서 파일을 탐지하지 못함
datadog-ci coverage upload 명령은 파일 이름 및 확장자와 같은 추론을 사용하여 지정된 디렉터리에서 지원되는 커버리지 보고서 파일을 자동으로 탐지합니다.
커버리지 보고서 파일이 예상 패턴과 일치하지 않으면 명령이 자동으로 탐지하지 못할 수 있습니다. 이 경우 보고서 형식을 지정하고 파일 경로를 위치 인수로 제공하세요. 예를 들면 다음과 같습니다.
Git 메타데이터 업로드는 CI 공급자를 Datadog과 직접 통합할 수 없는 경우에만 필요합니다.
Datadog GitHub 앱이나 Gitlab 통합과 같은 소스 코드 공급자 통합을 사용하는 경우, 다음과 같이 datadog-ci coverage upload 명령에 --skip-git-metadata-upload=1 플래그를 전달하여 Git 메타데이터 업로드를 비활성화할 수 있습니다.
기본적으로 ‘Changed files’ 테이블에는 업로드된 커버리지 보고서에 포함된 실행 가능한 소스 코드 파일만 표시됩니다.
테이블 헤더에서 Non-executable files 또는 All을 선택하면 실행 가능 여부와 관계없이 PR에서 변경된 모든 파일이 표시됩니다.
소스 코드 파일이 실수로 실행 불가능으로 표시된 경우, 업로드된 커버리지 보고서에서 누락되었을 가능성이 높습니다.
관련 보고서를 모두 업로드했는지 확인하고, 커버리지 도구 구성을 다시 확인하여 모든 해당 파일에 대해 커버리지 데이터가 수집되었는지 확인하세요.
테스트 소스는 커버리지를 측정하는 프로덕션 코드베이스의 일부가 아니므로 실행 가능한 파일로 간주되지 않습니다.
Datadog UI에 잘못된 파일 경로가 표시됨
Code Coverage는 커버리지 보고서의 파일 경로가 절대 경로이거나 리포지토리 루트를 기준으로 한 상대 경로여야 합니다.
보고서의 경로가 리포지토리의 다른 디렉터리를 기준으로 하는 경우, datadog-ci coverage upload 명령을 실행할 때 --base-path 옵션을 사용하여 올바른 기본 경로(리포지토리 루트 기준)를 다음과 같이 지정하세요.
일부 커버리지 도구는 보고서에 실행 불가능한 줄(코멘트, 빈 줄, 닫는 괄호 등)을 포함하여 해당 줄을 커버되지 않는 것으로 계산됩니다. 이는 커버리지 백분율을 낮추고 절대 실행될 수 없는 줄에 대해 거짓 부정 결과를 도출할 수 있습니다.
업로드 중 CLI는 소스 파일을 자동으로 스캔하여 이러한 실행 불가능한 줄을 식별하므로 그러한 줄을 커버리지 계산에서 제외할 수 있습니다.
파일 수정은 Go, Kotlin, C/C++, Swift, Objective-C 및 PHP 언어를 지원합니다.
다음 옵션을 사용하여 이 동작을 제어할 수 있습니다.
--disable-file-fixes: 파일 수정 생성을 완전히 비활성화합니다.
--file-fixes-search-path <dir>: 소스 파일을 스캔하는 데 사용되는 루트 디렉터리를 재정의합니다. 기본적으로 리포지토리 루트가 사용됩니다. 이는 모노레포 환경이거나 커버리지 보고서가 코드베이스의 일부만 다루는 경우, 탐색할 디렉터리 트리를 제한하여 스캔 속도를 높일 수 있으므로 유용합니다.
Datadog UI와 커버리지 보고서 값 간의 불일치
Datadog은 동일한 커밋에 대한 커버리지 보고서를 자동으로 병합합니다.
결과적으로 Datadog UI에 표시되는 커버리지 비율은 개별 커버리지 보고서의 값과 다를 수 있으며, 특히 해당 보고서에 중복되거나 겹치는 소스 코드 파일 항목이 포함된 경우에 그렇습니다.
Datadog에 업로드하기 전에 외부 도구(예: ReportGenerator)를 사용하여 커버리지 보고서를 병합하는 경우,
병합된 보고서에 중복된 소스 코드 파일 항목이 포함되지 않도록 하세요.
Datadog은 보고서 간에 겹치는 파일을 중복 제거하며, 이로 인해 원래의 커버리지 값과 Datadog UI에 표시되는 병합된 값 사이에 차이가 발생할 수 있습니다.
보고서가 병합되는 방식과 각 줄 상태가 계산되는 방식에 대한 설명은 코드 커버리지 계산을 참조하세요.