Checkstyle和JAVA8 lambdas

时间:2015-10-09 11:43:12

标签: lambda java-8 checkstyle

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

checkstyle.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
    }
}

Checkstyle报告:

  

Java8CheckstyleTest.java:25:&#39;阻止&#39;孩子有不正确的缩进   12级,预期水平应为16。

     

Java8CheckstyleTest.java:26:&#39;阻止rcurly&#39;有不正确的缩进   等级16,预期等级应为12。

如果我打破&#34;})&#34;使用新行和autoformat:

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:&#39;阻止&#39;孩子有不正确的缩进   20级,预期水平应为16。

     

Java8CheckstyleTest.java:26:&#39;阻止rcurly&#39;有不正确的缩进级别16,预期级别应为12。

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

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

  

Java8CheckstyleTest.java:32:错误:&#39;阻止&#39;孩子有错误   缩进级别20,预期级别应为以下之一:   12,16。

     

Java8CheckstyleTest.java:33:错误:&#39;阻止rcurly&#39;不正确   缩进级别16,预期级别应为以下之一:   8,12。

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

1 个答案:

答案 0 :(得分:3)

添加:

  <dependency>
      <groupId>com.puppycrawl.tools</groupId>
      <artifactId>checkstyle</artifactId>
      <version>6.11.1</version>
  </dependency>

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