【问题标题】:how to fail a build when new warnings are introduced引入新警告时如何使构建失败
【发布时间】:2012-09-30 16:18:31
【问题描述】:

我们正在开发一些旧的 java 项目。该代码有很多警告,但我想避免引入新警告。有没有办法用maven,bamboo来做到这一点。我们无权在竹子(公司)上安装新插件,因此首选 maven 解决方案。

【问题讨论】:

  • 老实说,我在“度量”下拉列表中找不到“编译器警告”
  • 您可以使用 findbugs 或 checkstyle 插件并将阈值调整为您当前的值,如果值增加,构建会失败?
  • @wemu PMD 也可以推荐...
  • 杰普!我只关注 findbugs,因为我也在 IDE 中使用它,所以报告显示相同的内容。但确实 PMD 也有方便的东西!

标签: java maven-2 continuous-integration build-automation


【解决方案1】:

好吧,我同意没有插件可以做到这一点,但您可以使用 java 1.7 以简单的步骤做到这一点。

在编译时使用处理器来编译您的代码并维护在日志文件中生成的警告。每次您触发构建时,它都会启动,您可以将旧日志文件与新日志文件进行比较。

注意:在 jdk 1.6 和 1.5 中,您可以使用相同的 APT 工具。

【讨论】:

    【解决方案2】:

    如果您使用的是 eclipse,您可以添加一个注解 (@IgnoreWarnings) 来忽略现有的警告。但是您必须在任何出现警告的地方修改源代码。

    使用 PMD (http://pmd.sourceforge.net/) 和/或 findbugs (http://findbugs.sourceforge.net/) 可能有更智能的解决方案。许多环境都可以作为插件使用。

    您还可以决定修复您修改的类中的所有警告。当然,这意味着每个开发者都倾向于这样做......

    【讨论】:

      【解决方案3】:

      这里的重要词是“” -
      您正在构建日志中寻找新警告,无论其严重性或来源如何。

      为此,您需要拥有当前警告集的“快照”:

      • 复制“良好”构建的输出及其所有警告。

      • 每次新构建后(假设它没有失败),将新日志与保存的日志进行比较 -
        日志中的任何更改都意味着您收到了新警告

      干杯

      【讨论】:

      • 嗯,不。我可以计算我现在收到的所有警告。但是当警告数量太多时,仍然不知道如何使用 maven 构建失败
      • 用一个脚本包装它,该脚本从日志中读取警告的数量,如果警告数量太多则失败(返回非零值)。
      【解决方案4】:

      您可以使用checkstyle 任务,在报告生成完成后,您可以使用 xslt 提取警告数量(如果报告是 xml,我相信其他报告格式也可用)。

      然后,使用 ant 任务,您可以比较当前构建中的警告数量与可接受的警告数量(它可以是某处的硬编码数字,或者如果您想花哨的话,可以从以前的构建工件中获取)

      【讨论】:

        猜你喜欢
        • 2015-06-13
        • 1970-01-01
        • 1970-01-01
        • 2017-08-20
        • 1970-01-01
        • 2020-09-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多