2015-10-09 5 views
4

Я готовлю большую миграцию в JAVA8. Часть его настраивает checkstyle для правильной работы с конструкциями JAVA8. Я пытаюсь сохранить checkstyle, синхронизированный с инструментом автоформатирования по умолчанию в IntelliJ. К сожалению, он не принимает автоматическое выделение лямбда-выражений IntelliJ.Checkstyle и JAVA8 lambdas

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: '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, чтобы не сломать старый код и принять это Автоформатирование схему?

EDIT: обновленный 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. Я закрою этот вопрос.

ответ

3

Добавление:

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

конфигурации плагин Maven Checkstyle решил проблему. Подробности в основной теме.

Смежные вопросы