Azure DevOps Services
코드 검사는 중요한 품질 메트릭이며 테스트 중인 프로젝트 코드의 백분율을 측정하는 데 도움이 됩니다. 시간이 지남에 따라(또는 적어도 회귀하지 않음) 프로젝트의 품질이 향상되도록 하려면 시스템에 도입되는 새 코드를 잘 테스트해야 합니다. 개발자가 끌어오기 요청을 발생하면 변경 내용이 테스트에 포함되는지 여부를 알면 변경 내용이 대상 분기에 병합되기 전에 테스트 구멍을 뚫는 데 도움이 됩니다. 리포지토리 소유자는 테스트되지 않은 큰 변경 내용이 병합되지 않도록 정책을 설정할 수도 있습니다.
전체 적용 범위, diff 적용 범위
전체 범위 는 프로젝트의 전체 코드베이스에 대한 범위가 측정되는 경우입니다. 그러나 끌어오기 요청의 컨텍스트에서 개발자는 변경 내용에 초점을 맞추고 추가하거나 변경한 특정 코드 줄이 적용되는지 여부를 알고자 합니다. 이러한 유형의 적용 범위는 diff 검사입니다.
필수 조건
끌어오기 요청에 대한 검사 메트릭을 가져오려면 먼저 끌어오기 요청의 유효성을 검사하는 파이프라인을 구성합니다. 이 파이프라인에서 코드 검사 메트릭을 수집하는 데 사용하는 테스트 도구를 구성합니다. 그런 다음 보고를 위해 검사 결과를 서버에 게시해야 합니다.
선택한 언어에 대한 코드 검사 결과를 수집하고 게시하는 방법에 대한 자세한 내용은 에코시스템 섹션을 참조하세요. 예를 들어 .NET Core 앱에 대한 코드 검사를 수집하고 게시합니다.
참고 항목
Azure Pipelines를 사용하여 다양한 언어에 대한 코드 검사 결과를 수집하고 게시할 수 있지만, 이 문서에서 설명하는 끌어오기 요청 기능에 대한 코드 검사 기능은 현재 Visual Studio 코드 검사 결과 형식(파일 확장명 .coverage)을 사용하는 .NET 및 .NET Core 프로젝트에만 사용할 수 있습니다. 다른 언어 및 적용 범위 형식에 대한 지원은 향후 중요 시점에 추가될 예정입니다.
검사 상태, 세부 정보 및 표시기
코드 검사를 수집하고 게시하는 파이프라인을 구성한 후에는 끌어오기 요청을 만들 때 코드 검사 상태를 게시합니다. 기본적으로 서버는 테스트에서 처리되는 변경된 줄의 70% 이상을 확인합니다. diff 검사 임계값 대상은 원하는 값으로 변경할 수 있습니다. 자세한 내용은 이 문서의 설정 구성 섹션 을 참조하세요.
상태 검사는 끌어오기 요청의 모든 코드 파일에 대한 diff 검사 값을 평가합니다. 각 파일에 대한 % diff 검사 값을 보려면 구성 섹션에서 설명한 대로 세부 정보를 켤 수 있습니다. 세부 정보를 켜면 끌어오기 요청의 메모로 세부 정보가 게시됩니다.
끌어오기 요청의 변경된 파일 보기에서 변경된 줄에는 해당 줄이 적용되는지 여부를 표시하기 위해 검사 표시기가 주석으로 추가됩니다.
참고 항목
Azure Pipelines에서 지원하는 다양한 버전 제어 시스템에서 코드를 빌드할 수 있지만 이 문서에서 설명하는 끌어오기 요청 기능에 대한 코드 검사는 현재 Azure Repos에서만 사용할 수 있습니다.
검사 설정 구성
끌어오기 요청에 대한 코드 검사 환경의 기본 설정을 변경하려면 리포지토리의 루트에 azurepipelines-coverage.yml이라는 구성 YAML 파일을 포함해야 합니다. 이 파일에서 원하는 값을 설정하면 다음에 파이프라인이 실행될 때 자동으로 사용됩니다.
변경할 수 있는 설정은 다음과 같습니다.
설정 | 설명 | 기본값 | 허용되는 값 |
---|---|---|---|
status | 끌어오기 요청에 코드 검사 상태 검사를 게시해야 하는지 여부를 나타냅니다. 해제해도 검사 검사 및 검사 주석이 변경된 파일 보기에 표시되지 않습니다. |
On | on, off |
target | 성공적인 검사 상태를 게시하려면 diff 검사에 대한 대상 임계값을 충족해야 합니다. | 70% | 원하는 % 숫자 |
comments | 각 코드 파일에 대한 검사 세부 정보가 포함된 주석을 끌어오기 요청에 게시해야 하는지 여부를 나타냅니다. | off | on, off |
예제 구성:
coverage:
status: # Code coverage status will be posted to pull requests based on targets defined below.
comments: on # Off by default. When on, details about coverage for each file changed will be posted as a pull request comment.
diff: # Diff coverage is code coverage only for the lines changed in a pull request.
target: 60% # Set this to a desired percentage. Default is 70 percent
세부 정보가 포함된 더 많은 예제는 코드 검사 YAML 샘플 리포지토리에서 찾을 수 있습니다.
참고 항목
적용 범위 표시기는 끌어오기 요청 주석 세부 정보가 켜져 있는지 여부에 관계없이 변경된 파일 보기에서 밝아집니다.
팁
적용 범위 설정 YAML은 YAML 파이프라인과 다릅니다. 이는 적용 범위 설정이 리포지토리에 적용되며 코드를 빌드하는 파이프라인에 관계없이 사용되기 때문입니다. 또한 이 분리는 클래식 디자이너 기반 빌드 파이프라인을 사용하는 경우 끌어오기 요청에 대한 코드 검사 상태 검사를 받게 된다는 것을 의미합니다.
코드 검사 정책을 사용하여 분기 보호
끌어오기 요청에 대한 코드 검사 상태 검사는 개발자를 위한 제안일 뿐이며 코드 검사 범위가 낮은 끌어오기 요청이 대상 분기에 병합되는 것을 방지하지 않습니다. 개발자가 적용 범위 임계값을 충족하지 않는 변경 내용을 병합하지 못하도록 하려면 검사 상태 검사를 사용하여 분기 정책을 구성해야 합니다.
팁
파이프라인에서 게시된 코드 검사 상태는 명명 규칙을 {name-of-your-pipeline/codecoverage}
따릅니다.
참고 항목
Azure Repos의 분기 정책(선택적 정책)은 끌어오기 요청이 실패할 경우 자동으로 완료되지 않도록 방지합니다. 이 동작은 코드 검사 정책과 관련이 없습니다.
2023년 9월부터 빌드가 실패할 경우 코드 검사 정책이 실패로 재정의되지 않습니다. 이 기능은 모든 고객에 대해 사용하도록 설정됩니다..
FAQ
끌어오기 요청에서 코드 검사의 유효성을 검사하는 데 사용할 수 있는 검사 도구 및 결과 형식은 무엇입니까?
끌어오기 요청 기능에 대한 코드 검사 기능은 현재 Visual Studio Code 검사, .coverage
형식에만 사용할 수 있습니다. Visual Studio 테스트 태스크, dotnet core 작업의 테스트 동사 및 테스트 결과 게시 태스크의 TRX 옵션을 사용하여 코드 검사를 게시하는 경우 사용합니다.
다른 검사 도구 및 결과 형식에 대한 지원은 향후 중요 시점에 추가될 예정입니다.
끌어오기 요청이 발생할 때 여러 파이프라인이 트리거되는 경우 범위가 파이프라인 전체에서 병합되나요?
끌어오기 요청이 발생할 때 여러 파이프라인이 트리거되면 코드 범위가 병합되지 않습니다. 이 기능은 현재 끌어오기 요청에 대한 코드 검사를 수집하고 게시하는 단일 파이프라인용으로 설계되었습니다. 파이프라인 간에 검사 데이터를 병합해야 하는 경우 개발자 커뮤니티에 기능 요청을 제출합니다.