我在 Azure DevOps Pipeline 中使用 OpenClover。
问题:当我在本地运行 clover 时,给出的覆盖率target/site/clover/index.html
(可悲)约为 45%,而在 Azure DevOps 中为 71%。
原因是基于 的 AzDO 中的覆盖率报告target/site/clover.xml
还包括测试代码,通常覆盖率为 100%,从而导致结果出现偏差。
如何摆脱包含测试代码的覆盖率报告?我试图无济于事的是classfilters
在 ReportGenerator 中使用 - 它负责将 clover.xml 转换为 Cobertura,以便 AzDO 可以解释它。以下都不起作用:
classfilters: '-*Test.java'
classfilters: '-*Test'
classfilters: '-*Test.class'
对于上下文,这是我的管道。
- task: Maven@3
inputs:
mavenPomFile: 'pom.xml'
mavenOptions: '-Xmx1024m'
mavenAuthenticateFeed: true
javaHomeOption: 'JDKVersion'
jdkVersionOption: '1.11'
jdkArchitectureOption: 'x64'
publishJUnitResults: false
goals: 'clean clover:setup test clover:aggregate clover:clover'
- task: reportgenerator@4
inputs:
reports: '$(Build.SourcesDirectory)/target/site/clover/clover.xml'
classfilters: '-*Test'
targetdir: '$(Build.SourcesDirectory)/CoverageResults'
- task: PublishCodeCoverageResults@1
displayName: 'Publish code coverage'
inputs:
codeCoverageTool: Cobertura
summaryFileLocation: '$(Build.SourcesDirectory)/CoverageResults/Cobertura.xml'
这是与三叶草有关的 pom 文件的一部分:
<build>
<plugins>
<plugin>
<groupId>org.openclover</groupId>
<artifactId>clover-maven-plugin</artifactId>
<version>4.4.1</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>instrument</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>