【问题标题】:Ignore checkstyle exceptions in gradle builds忽略 gradle 构建中的 checkstyle 异常
【发布时间】:2020-07-17 21:10:49
【问题描述】:

我在我的代码中使用 Java14 功能。这将在 Checkstyle from September 2020 上成为可能。在那之前,它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)

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

我还想检查其他类

【问题讨论】:

    标签: gradle checkstyle gradle-plugin


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      您可以使用:

      checkstyle {
          sourceSets = []
      }
      

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

      gradle build -x checkstyleMain
      

      【讨论】:

      • 这似乎完全禁用了 checkstyle。看,我有 100 多个源文件,并且只想使用 Java14 语法忽略 2 个(其他都没有)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-31
      • 1970-01-01
      • 1970-01-01
      • 2022-06-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多