gradle checkstyle 只是输出warm,但是构建成功

gradle checkstyle just output warn, but build sucess

可以看到checkstyle warn,但是这次的构建还是成功的。为什么?我希望它失败。请帮忙

D:\MyData\xxxx>gradle clean checkstyleMain
:clean
:compileJava
:processResources
:classes
:checkstyleMain
[ant:checkstyle] [WARN] D:\MyData\xxxx.java:218:18: Member name 'Aource' 
must match pattern '^[a-z][a-z0-9][a-zA-Z0-9]*$'. [MemberName]

BUILD SUCCESSFUL

Total time: 4.966 secs

```

查看图片:https://i.stack.imgur.com/7IbRM.jpg

参见 checkstyle.xml:https://i.stack.imgur.com/BE4An.jpg

编辑:因为我写了那个答案,所以有更好的解决方案 -> 使用 maxErrors=0 作为 xxSwordy 提到这里 .

这是公关:https://github.com/gradle/gradle/pull/3901

可以通过以下方式解决错误:

ignoreFailures = false

对于警告,不可能这样做,请参阅[this][1] ticket。

从他们的旧 Jira 和新 GitHub 问题评论中,有一种解决方法:

tasks.withType(Checkstyle).each { checkstyleTask ->
    checkstyleTask.doLast {
        reports.all { report ->
            def outputFile = report.destination
            if (outputFile.exists() && outputFile.text.contains("<error ")) {
                throw new GradleException("There were checkstyle warnings! For more info check $outputFile")
            }
        }
    }
}

所以答案是:默认情况下这是不可能的,并且仍然有打开的票。如果你真的想要它,你可以尝试参与并尝试修复它, Gradle 是开源的,它取决于开发人员:) [1]: https://github.com/gradle/gradle/issues/881

checkstyle 违规的默认严重级别是警告。如果您希望构建失败,请在 checkstyle.xml 配置中将严重性值从警告更改为错误。如果存在违规,任何后续构建现在都将失败。

<property name="severity" value="error"/>

抱歉 grave-digging 但我只是在尝试实现相同目标时偶然发现了这一点。原来这已经实现了,但是需要一个微小的配置更改。

所以对于任何未来的冒险在这里找到他们的方式:在你的 build.gradle 到以下内容:

checkstyle {
  ignoreFailures = false
  maxWarnings = 0
}

这将导致您的构建因 Checkstyle 错误而失败。