0

我在 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>
4

2 回答 2

1

在 ReportGenerator 任务中使用filefilters而不是有效:classfilters

- task: reportgenerator@4
  inputs:
    reports: '$(Build.SourcesDirectory)/target/site/clover/clover.xml'
    filefilters: '-*Test.java'
    targetdir: '$(Build.SourcesDirectory)/CoverageResults'
于 2020-07-18T12:17:10.967 回答
0

从 ReportGenerator 4.6.4 开始,可以在没有(脆弱)文件过滤器的情况下排除测试项目。

- task: reportgenerator@4
  inputs:
    reports: '$(Build.SourcesDirectory)/target/site/clover/clover.xml'
    customSettings: 'settings:excludeTestProjects=true'
    targetdir: '$(Build.SourcesDirectory)/CoverageResults'
于 2020-08-26T22:57:10.400 回答