我正在准备大迁移到 JAVA8。其中一部分是配置 checkstyle 以正确使用 JAVA8 结构。我尝试使 checkstyle 与 IntelliJ 中的默认自动格式化工具保持同步。不幸的是,它不接受 lambda 表达式的自动 IntelliJ 缩进。
检查样式.xml
<module name="Indentation">
<property name="caseIndent" value="0"/>
</module>
代码:
public class Java8CheckstyleTest {
public void java8Elements(String ala) {
Collections.sort(names, (String a, String b) -> {
return b.compareTo(a); // <<<25 line
}); // <<<26 line
}
}
检查样式报告:
Java8CheckstyleTest.java:25: 'block' child have incorrect indentation level 12, expected level should be 16.
Java8CheckstyleTest.java:26: 'block rcurly' have incorrect indentation level 16, expected level should be 12.
如果我用新行和自动格式化打破“})”:
public class Java8CheckstyleTest {
public void java8Elements(String ala) {
Collections.sort(names, (String a, String b) -> {
return b.compareTo(a); // <<<25 line
} // <<<26 line
);
}
}
我得到:
Java8CheckstyleTest.java:25: 'block' child have incorrect indentation level 20, expected level should be 16.
Java8CheckstyleTest.java:26:'block rcurly' have incorrect indentation level 16, expected level should be 12.
我应该如何配置 checkstyle 以不破坏旧代码并接受这些自动格式化方案?
编辑:我将 checkstyle 更新到 6.11.1,我看到问题几乎解决了。现在接受第一个代码。第二次产生报告:
Java8CheckstyleTest.java:32: error: 'block' child have incorrect indentation level 20, expected level should be one of the following: 12, 16.
Java8CheckstyleTest.java:33: error: 'block rcurly' have incorrect indentation level 16, expected level should be one of the following: 8, 12.
我认为这可能是必须在下一个 IntelliJ 版本中修复的事情。我将关闭这个问题。
最佳答案
添加:
<dependency>
<groupId>com.puppycrawl.tools</groupId>
<artifactId>checkstyle</artifactId>
<version>6.11.1</version>
</dependency>
给maven checkstyle 插件配置解决了一个问题。主线程中的详细信息。
关于lambda - Checkstyle 和 JAVA8 lambdas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33037423/