Azure devops 测试代码被包含在覆盖率报告中,并影响覆盖率

Azure devops 测试代码被包含在覆盖率报告中,并影响覆盖率,azure-devops,azure-pipelines,cobertura,clover,reportgenerator,Azure Devops,Azure Pipelines,Cobertura,Clover,Reportgenerator,我正在Azure DevOps管道中使用OpenClover 问题是:target/site/clover/index.html中给出的覆盖率,当我在本地运行clover时(很遗憾)大约是45%,而在Azure DevOps中是71% 原因是AzDO中基于target/site/clover.xml的覆盖率报告还包括测试代码,测试代码的覆盖率通常为100%,从而扭曲了结果 如何使覆盖率报告不包含测试代码?我尝试过的是在ReportGenerator中使用classfilters,ReportGe

我正在Azure DevOps管道中使用OpenClover

问题是:
target/site/clover/index.html
中给出的覆盖率,当我在本地运行clover时(很遗憾)大约是45%,而在Azure DevOps中是71%

原因是AzDO中基于
target/site/clover.xml
的覆盖率报告还包括测试代码,测试代码的覆盖率通常为100%,从而扭曲了结果

如何使覆盖率报告不包含测试代码?我尝试过的是在ReportGenerator中使用
classfilters
,ReportGenerator负责将clover.xml转换为Cobertura,以便AzDO能够解释它。以下两项都不起作用:

classfilters: '-*Test.java'
classfilters: '-*Test'
classfilters: '-*Test.class'
作为上下文,这里是我的管道

-任务:Maven@3
投入:
mavenPomFile:'pom.xml'
mavenOptions:'-Xmx1024m'
mavenAuthenticateFeed:true
javaHomeOption:'JDKVersion'
jdkVersionOption:'1.11'
JDK体系结构选项:“x64”
结果:错误
目标:“清洁三叶草:设置测试三叶草:聚合三叶草:三叶草”
-任务:reportgenerator@4
投入:
报告:“$(Build.SourcesDirectory)/target/site/clover/clover.xml”
类过滤器:'-*测试'
targetdir:“$(Build.SourcesDirectory)/CoverageResults”
-任务:PublishCodeCoverageResults@1
displayName:“发布代码覆盖率”
投入:
codeCoverageTool:Cobertura
summaryFileLocation:“$(Build.SourcesDirectory)/CoverageResults/Cobertura.xml”
这是pom文件中与clover相关的部分:


org.openclover
clover maven插件
4.4.1
生成源
仪器

在ReportGenerator任务中使用
文件过滤器
而不是
类过滤器

-任务:reportgenerator@4
投入:
报告:“$(Build.SourcesDirectory)/target/site/clover/clover.xml”
文件过滤器:'-*Test.java'
targetdir:“$(Build.SourcesDirectory)/CoverageResults”

从ReportGenerator 4.6.4中,可以排除没有(脆弱)文件过滤器的测试项目

- task: reportgenerator@4
  inputs:
    reports: '$(Build.SourcesDirectory)/target/site/clover/clover.xml'
    customSettings: 'settings:excludeTestProjects=true'
    targetdir: '$(Build.SourcesDirectory)/CoverageResults'