如何在TODO存在时阻止Java项目的构建

最近包含调试覆盖的代码已发布到生产中。 代码清楚标明

// TODO - Remove before releasing to production

但我们没有整合到Maven中,这会阻止项目的建立。 我见过一个名为Taglist的maven插件,可以生成一个报告。 但不会停止产生构建错误。

你们如何捕获调试代码并阻止构建?

如果在代码中找到TODO注释 ,您可以配置maven checkstyle插件以使构建失败。


让checkstyle失败的构建

为了让checkstyle失败,我按照这个答案的建议来回答类似的问题: https : //stackoverflow.com/a/42276077/7421645他们发现他们需要添加配置warningTodoComment需要包含一个正则表达式格式属性才能使构建失败。

   org.apache.maven.plugins maven-checkstyle-plugin 2.17   com.puppycrawl.tools checkstyle 7.5.1     validate validate  check   true          UTF-8 true true true warning     

您还可以通过选择预先构建的checkstyle.xml来包含更多检查


始终运行checkstyle,但只有在激活配置文件时才会失败-Pci-build

跑步:

mvn clean install -Pci-build

如果你使用checkstyle,我希望你能从中收集更多的价值,而不仅仅是检查TODO评论。 看起来您不能配置多个checkstyle配置,例如Jenkins构建作业的内联和configLocation。 但是,如果修改适合项目的checkstyle.xml,则可以修改要作为错误的模块的严重性:

     

并且您可以使用属性在需要时打开失败,例如对于服务器构建而不是maven pom.xml本地:

   false    ci-build  true    

然后您可以将其用作构建配置中的属性:

   my_google_checks.xml UTF-8 true false ${fail.on.error} warning  

我将failOnViolation更改为false以允许在checkstyle配置中发出警告。 我正在使用google checkstyle的修改版本,但如果您只想检查TODO或其他一些内容,则没有理由不能将其应用于内联配置。

当配置文件“ci-build”传递给maven时,可以打开这种在构建器服务器上失败的方法。

如果未发送ci-build配置文件,checkstyle仍会运行,但只生成一个报告。 当然你可以设置它,所以它仍然失败了我们认为值得出错的任何风格问题。


仅在配置文件激活时才运行checkstyle -Pci-build

跑步:

mvn clean install -Pci-build

在这种情况下,您不希望checkstyle在默认情况下完全运行。 因此,我们只需在需要时激活checkstyle构建配置文件。

    ci-build    org.apache.maven.plugins maven-checkstyle-plugin 2.17   com.puppycrawl.tools checkstyle 7.5.1     validate validate  check   my_google_checks.xml UTF-8 true true true warning         

我正在使用maven checkstyle插件:

  org.apache.maven.plugins maven-checkstyle-plugin 2.15   validate validate  src/main/resources/config/checkstyle.xml UTF-8 true false false   check     

配置文件应该包含一个TodoComment模块。这将阻止在里面构建带有“TODO”注释的代码。 您可以对其进行配置,以便查看其他注释正则表达式,例如“FIXME”或其他内容。 这里有更多细节。

您可以使用以下插件来检测TODO和/或FIXME(或您定义的任何其他注释文本),并将构建标记为不稳定或失败(如果找到): Task Scanner Plugin

但是,在下拉代码之后将执行此分析,因此这取决于您的生产过程如何设置。 此插件允许您将构建作业标记为失败(一旦将其添加为构建后步骤),然后可以在检测到TODO时取消任何下游作业。 如果您的移动生产作业位于此构建作业的下游,则可以解决您的问题。