끌어오기 요청에 대한 코드 범위

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 파일을 포함해야 합니다. 이 파일에서 원하는 값을 설정하면 다음에 파이프라인이 실행될 때 자동으로 사용됩니다.

변경할 수 있는 설정은 다음과 같습니다.

설정 설명 기본값 허용되는 값
상태 끌어오기 요청에 코드 검사 상태 검사 게시해야 하는지 여부를 나타냅니다.
이 옵션을 해제해도 검사 검사 및 적용 범위 주석이 변경된 파일 보기에 표시되지 않습니다.
On on, off
대상 성공적인 적용 범위 상태 게시하려면 diff 적용 범위에 대한 대상 임계값을 충족해야 합니다. 70% 원하는 % 숫자
comments 각 코드 파일에 대한 검사 세부 정보가 포함된 주석을 끌어오기 요청에 게시해야 하는지 여부를 나타냅니다. 끄기 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 코드 검사(.coverage) 형식에만 사용할 수 있습니다. Visual Studio 테스트 작업, dotnet core 작업의 테스트 동사 및 테스트 결과 게시 태스크의 TRX 옵션을 사용하여 코드 검사를 게시하는 경우에 사용할 수 있습니다. 다른 검사 도구 및 결과 형식에 대한 지원은 향후 마일스톤에 추가될 예정입니다.

끌어오기 요청이 발생할 때 여러 파이프라인이 트리거되는 경우 범위가 파이프라인 전체에서 병합되나요?

끌어오기 요청이 발생할 때 여러 파이프라인이 트리거되는 경우 코드 검사도 병합되지 않습니다. 이 기능은 현재 끌어오기 요청에 대한 코드 검사를 수집하고 게시하는 단일 파이프라인을 위해 설계되었습니다. 파이프라인 간에 검사 데이터를 병합하는 기능이 필요한 경우 개발자 커뮤니티에 기능 요청을 제출하세요.

도움말 및 지원