【问题标题】:Cobertura with Maven - fail if coverage below threshold, but still generate site带有 Maven 的 Cobertura - 如果覆盖率低于阈值则失败,但仍会生成站点
【发布时间】:2011-12-20 10:08:59
【问题描述】:

我正在使用 Cobertura 和 Maven。

如果覆盖率低于给定阈值,我希望构建失败,但我希望仍然生成该站点(包括 Cobertura 报告)。这是因为开发人员需要参考覆盖率报告,以了解他们可以在哪里添加更多覆盖率来修复失败的构建。

目前我的 pom 看起来像:

<project>
  <build>
    ...
    <plugins>
        <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>cobertura-maven-plugin</artifactId>
      <version>${cobertura.version}</version>
      <configuration>
    <check>
      <totalLineRate>${cobertura.check.totalLineRate}</totalLineRate>
    </check>
      </configuration>
      <executions>
    <execution>
      <goals>
        <goal>clean</goal>
        <goal>check</goal>
      </goals>
    </execution>
      </executions>
    </plugin>
        ...
    </plugins>
  </build>
  <reporting>
    <plugins>
<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>cobertura-maven-plugin</artifactId>
  <version>${cobertura.version}</version>
</plugin>
    ...
    </plugins>
  </reporting>
</project>

如果我运行mvn clean verify site,那么如果满足覆盖率目标,它会生成 HTML 覆盖率报告,但如果不满足覆盖率目标,它会导致构建失败而不生成报告。如何将其更改为始终生成报告?

【问题讨论】:

    标签: maven cobertura


    【解决方案1】:

    如果不满足代码覆盖率目标,而不是使构建失败,是否可以将其设置为将构建标记为不稳定?我知道有办法通过 Jenkins CI 服务器来做到这一点,但我不确定是否可以通过 pom.xml 来做到这一点。再说一次,“不稳定”的构建可能更特定于 Jenkins,并且可能仅通过您的 pom 文件存在。

    【讨论】:

    • 我正在使用 Jenkins/Hudson,所以这对我来说是一个可以接受的解决方案。但是,我不知道该怎么做?
    • 安装 CoberturaStatic Analysis 插件,然后为您的项目启用 Cobertura 插件。一旦启用插件以根据不同的指标“改变天气”,就会有配置选项。
    • 这运行得相当好。静态分析插件没有收到我的 findbugs 或 checkstlye 报告,因为我在一个 Hudson 构建中构建了一个多模块 pom,而且它们似乎没有在子目录中搜索。 Cobertura 运行良好,因为它允许用户指定搜索路径。
    • 您是否也安装了 Findbugs 和 Checkstyle 插件?这些与静态分析插件集成,但 SA 插件不会自动获取 FB/CS 报告。当您使用它时,您还可以查看 PMD。
    • 是的,我已经安装了这些,但它仍然没有找到我的 findbugs 报告(它们在“subproj1/target/findbugs”和“subproj2/target/findbugs”下,而不是“target/findbugs”下",这就是我想象的地方)。我现在已经放弃了这个并安装了“M2 Extra Steps Plugin”并编写了我自己的 shell 脚本来检查输出并在任何 findbugs 问题上使构建失败。
    【解决方案2】:

    快速解决方法:删除 check 目标:

    <executions>
        <execution>
            <goals>
                <goal>clean</goal>
            </goals>
        </execution>
    </executions>
    

    然后运行

    mvn clean verify site cobertura:check
    

    如果您使用的是 Hudson/Jenkins,请删除 pom.xml 中的所有检查并将 Cobertura 插件安装到 Hudson 并在 Hudson/Jenkins 插件中配置检查。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-13
      • 2018-04-14
      • 2021-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-03
      相关资源
      最近更新 更多