Checkstyle和JAVA8 lambdas

aer*_*ion 5 lambda checkstyle java-8

我准备大规模迁移到JAVA8.部分原因是配置checkstyle以正确使用JAVA8结构.我尝试将checkstyle与IntelliJ中的默认自动调整工具保持同步.不幸的是,它不接受lambda表达式的自动IntelliJ缩进.

checkstyle.xml

<module name="Indentation">
     <property name="caseIndent" value="0"/>
</module>
Run Code Online (Sandbox Code Playgroud)

码:

public class Java8CheckstyleTest {
    public void java8Elements(String ala) {
        Collections.sort(names, (String a, String b) -> {
            return b.compareTo(a); // <<<25 line
        }); // <<<26 line
    }
}
Run Code Online (Sandbox Code Playgroud)

Checkstyle报告:

Java8CheckstyleTest.java:25:'block'子级有不正确的缩进级别12,预期级别应为16.

Java8CheckstyleTest.java:26:'块rcurly'有不正确的缩进级别16,预期级别应为12.

如果我用新行和autoformat打破"})":

public class Java8CheckstyleTest {
    public void java8Elements(String ala) {
        Collections.sort(names, (String a, String b) -> {
                    return b.compareTo(a); // <<<25 line
                } // <<<26 line
        ); 
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到:

Java8CheckstyleTest.java:25:'block'子级的缩进级别为20,预期级别应为16.

Java8CheckstyleTest.java:26:'block rcurly'有不正确的缩进级别16,预期级别应为12.

我应该如何配置checkstyle而不是破坏旧代码并接受这些自动配置方案?

编辑:我更新了checkstyle到6.11.1,因为我看到问题几乎解决了.现在接受第一个代码.第二次报告:

Java8CheckstyleTest.java:32:错误:'block'子级具有不正确的缩进级别20,预期级别应为以下之一:12,16.

Java8CheckstyleTest.java:33:错误:'block rcurly'有不正确的缩进级别16,预期级别应该是以下之一:8,12.

我认为这可能是必须在下一个IntelliJ版本中修复的东西.我将结束这个问题.

aer*_*ion 3

添加:

  <dependency>
      <groupId>com.puppycrawl.tools</groupId>
      <artifactId>checkstyle</artifactId>
      <version>6.11.1</version>
  </dependency>
Run Code Online (Sandbox Code Playgroud)

到maven checkstyle插件配置解决了一个问题。主线程中的详细信息。