我正在准备向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报告:



如果我用新行换行并自动格式化,则将“})”换成新的:
public class Java8CheckstyleTest {
    public void java8Elements(String ala) {
        Collections.sort(names, (String a, String b) -> {
                    return b.compareTo(a); // <<<25 line
                } // <<<26 line
        );
    }
}

我得到:



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

编辑:我将checkstyle更新为6.11.1,并且我认为问题已基本解决。现在已接受第一个代码。第二生产报告:



我认为这可能是在下一个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/

10-11 22:20