忽略 gradle 构建中的 checkstyle 异常

Ignore checkstyle exceptions in gradle builds

我在代码中使用 Java14 功能。这在 Checkstyle from September 2020 on. Until then, it causes an exception.

中是可能的

Example java code:

switch (day) {
    case MONDAY, FRIDAY, SUNDAY -> System.out.println(6);
    case TUESDAY                -> System.out.println(7);
    case THURSDAY, SATURDAY     -> System.out.println(8);
    case WEDNESDAY              -> System.out.println(9);
}

我将 checkstyle 配置为在出现异常时不停止:

<property name="haltOnException" value="false"/>

这仍然会导致 checkstyle 失败:

ant:checkstyle] [ERROR] /home/runner/work/jabref/jabref/src/main/java/org/jabref/logic/layout/format/AuthorAndsReplacer.java:1: Got an exception - com.puppycrawl.tools.checkstyle.api.CheckstyleException: IllegalStateException occurred while parsing file /home/runner/work/jabref/jabref/src/main/java/org/jabref/logic/layout/format/AuthorAndsReplacer.java.
> Task :checkstyleMain
[ant:checkstyle]    at com.puppycrawl.tools.checkstyle.JavaParser.parse(JavaParser.java:105)

是否可以在检查时忽略解析错误?

我还想其他类待查

您可以使用:

checkstyle {
    sourceSets = []
}

您也可以使用命令行参数:

gradle build -x checkstyleMain

您必须在您的 Checkstyle 配置中使用 https://checkstyle.org/config_filefilters.html#BeforeExecutionExclusionFileFilter 来告诉 Checkstyle 根本不处理这些文件。这将排除所有模块 运行 在所述文件中,包括使用 Java 解析器和不使用的模块。 Checkstyle 中没有其他方法可以避免这些文件被解析。

我不太了解 Gradle,但 Checkstyle 命令行有 -e-x 参数也可以忽略文件。这会导致与上述过滤器相同类型的排除。如果 gradle 可以使用 Checkstyle 的命令行,那么这是另一个选项,但同样,只是以不同的方式复制过滤器。