tool_chain_tag: 'GCC5'\r
vm_image: 'ubuntu-latest'\r
arch_list: "IA32,X64,ARM,AARCH64,RISCV64,LOONGARCH64"\r
-\r
+ extra_install_step:\r
+ - bash: sudo apt-get install -y lcov\r
+ displayName: Install Code Coverage Tools\r
+ condition: and(gt(variables.pkg_count, 0), succeeded())\r
tool_chain_tag: 'VS2019'\r
vm_image: 'windows-2019'\r
arch_list: "IA32,X64"\r
+ extra_install_step:\r
+ - powershell: choco install opencppcoverage; Write-Host "##vso[task.prependpath]C:\Program Files\OpenCppCoverage"\r
+ displayName: Install Code Coverage Tool\r
+ condition: and(gt(variables.pkg_count, 0), succeeded())\r
+\r
tool_chain_tag: ''\r
vm_image: ''\r
arch_list: ''\r
+ extra_install_step: []\r
\r
# Build step\r
jobs:\r
build_pkgs: $(Build.Pkgs)\r
build_targets: $(Build.Targets)\r
build_archs: ${{ parameters.arch_list }}\r
+ extra_install_step: ${{ parameters.extra_install_step }}\r
+\r
+- job: Build_${{ parameters.tool_chain_tag }}_TARGET_CODE_COVERAGE\r
+ dependsOn: Build_${{ parameters.tool_chain_tag }}\r
+ workspace:\r
+ clean: all\r
+\r
+ pool:\r
+ vmImage: 'windows-2019'\r
+\r
+ steps:\r
+ - checkout: self\r
+ clean: true\r
+ fetchDepth: 1\r
+ submodules: true\r
+\r
+ - task: DownloadPipelineArtifact@2\r
+ displayName: 'Download Build Artifacts'\r
+ inputs:\r
+ buildType: 'current'\r
+ targetPath: '$(Build.ArtifactStagingDirectory)'\r
+\r
+ - task: CmdLine@2\r
+ displayName: Create code coverage report\r
+ inputs:\r
+ script: |\r
+ dotnet tool install -g dotnet-reportgenerator-globaltool\r
+ reportgenerator -reports:$(Build.ArtifactStagingDirectory)/**/coverage.xml -targetdir:$(Build.ArtifactStagingDirectory)/Coverage -reporttypes:Cobertura -filefilters:-*Build*;-*UnitTest*;-*Mock*;-*usr*\r
+\r
+ - task: PublishCodeCoverageResults@1\r
+ displayName: 'Publish code coverage'\r
+ inputs:\r
+ codeCoverageTool: Cobertura\r
+ summaryFileLocation: '$(Build.ArtifactStagingDirectory)/Coverage/Cobertura.xml'\r
+\r
build_pkgs: ''\r
build_targets: ''\r
build_archs: ''\r
+ extra_install_step: []\r
\r
steps:\r
- checkout: self\r
displayName: fetch target branch\r
condition: eq(variables['Build.Reason'], 'PullRequest')\r
\r
+- ${{ parameters.extra_install_step }}\r
+\r
# trim the package list if this is a PR\r
- task: CmdLine@1\r
displayName: Check if ${{ parameters.build_pkgs }} need testing\r
TestSuites.xml\r
**/BUILD_TOOLS_REPORT.html\r
**/OVERRIDELOG.TXT\r
+ coverage.xml\r
flattenFolders: true\r
condition: succeededOrFailed()\r
\r
edk2-pytool-extensions~=0.20.0\r
edk2-basetools==0.1.39\r
antlr4-python3-runtime==4.7.1\r
+lcov-cobertura==2.0.2\r
+\r