我正在代码中使用Java14功能。在Checkstyle from September 2020上可以实现。在此之前,causes an exception。
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解析器的模块和不使用Java解析器的模块。 Checkstyle没有其他方法可以避免解析这些文件。
我不太了解Gradle,但是Checkstyle命令行具有-e
和-x
参数,它们也忽略文件。这导致与上述过滤器相同类型的排除。如果gradle可以使用Checkstyle的命令行,那么这是另一个选择,但是同样,只需以不同的方式复制过滤器即可。
另一种方法是忽略(或完全关闭CheckStyle)给定的一段代码:
//CHECKSTYLE:OFF
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:ON
这样,当CheckStyle就绪时,您可以轻松地搜索这些“术语”并将其删除。这样,该课程的其余部分仍可以进行处理,现在就可以利用有效的方法。
注意,
CHECKSTYLE:{OFF|ON}
的配置可以不同,但concept相同。