IntelliJ没有强制执行正确的保证金

问题描述 投票:0回答:1

我有一个checkstyle活动,如果一行超过100列就会抱怨,我将我的intelliJ配置设置为100列的硬包装。

问题是它并不总是强制执行此操作,导致checkstyle失败并且唯一的方法是禁用IDE中的格式并手动执行格式化。

所以这是一个简短(和愚蠢)的例子,它失败了

class TestClass {

    public static void main(String[] args) {
        String superString = "s";
        String bestString = "b";
        Arrays.asList(superString.split(""))
              .stream()
              .map(superiorString -> Arrays.asList(bestString.split(""))
                                           .stream()
                                           .map(otherSub -> Arrays.asList(superiorString.split(""))
                                                                  .stream()
                                                                  .map(qwerty -> Arrays.asList(
                                                                          otherSub.split(""))
                                                                                       .stream()
                                                                                       .map(dvorak -> null))));
    }
}

这是我的intelliJ配置:

<code_scheme name="stream-manager" version="173">
  <option name="LINE_SEPARATOR" value="&#xA;" />
  <option name="CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND" value="999" />
  <option name="NAMES_COUNT_TO_USE_IMPORT_ON_DEMAND" value="999" />
  <option name="PACKAGES_TO_USE_IMPORT_ON_DEMAND">
    <value />
  </option>
  <option name="RIGHT_MARGIN" value="100" />
  <option name="WRAP_WHEN_TYPING_REACHES_RIGHT_MARGIN" value="true" />
  <JavaCodeStyleSettings>
    <option name="CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND" value="9999" />
    <option name="NAMES_COUNT_TO_USE_IMPORT_ON_DEMAND" value="9999" />
  </JavaCodeStyleSettings>
  <codeStyleSettings language="JAVA">
    <option name="RIGHT_MARGIN" value="100" />
    <option name="KEEP_LINE_BREAKS" value="false" />
    <option name="KEEP_FIRST_COLUMN_COMMENT" value="false" />
    <option name="KEEP_BLANK_LINES_IN_DECLARATIONS" value="1" />
    <option name="KEEP_BLANK_LINES_IN_CODE" value="1" />
    <option name="KEEP_BLANK_LINES_BETWEEN_PACKAGE_DECLARATION_AND_HEADER" value="1" />
    <option name="KEEP_BLANK_LINES_BEFORE_RBRACE" value="0" />
    <option name="BLANK_LINES_AFTER_CLASS_HEADER" value="1" />
    <option name="ALIGN_MULTILINE_CHAINED_METHODS" value="true" />
    <option name="ALIGN_MULTILINE_PARAMETERS_IN_CALLS" value="true" />
    <option name="ALIGN_MULTILINE_TERNARY_OPERATION" value="true" />
    <option name="ALIGN_MULTILINE_THROWS_LIST" value="true" />
    <option name="ALIGN_MULTILINE_EXTENDS_LIST" value="true" />
    <option name="SPACE_BEFORE_ARRAY_INITIALIZER_LBRACE" value="true" />
    <option name="SPACE_BEFORE_ANNOTATION_ARRAY_INITIALIZER_LBRACE" value="true" />
    <option name="CALL_PARAMETERS_WRAP" value="1" />
    <option name="METHOD_PARAMETERS_WRAP" value="1" />
    <option name="RESOURCE_LIST_WRAP" value="5" />
    <option name="EXTENDS_LIST_WRAP" value="1" />
    <option name="THROWS_LIST_WRAP" value="1" />
    <option name="EXTENDS_KEYWORD_WRAP" value="1" />
    <option name="METHOD_CALL_CHAIN_WRAP" value="5" />
    <option name="TERNARY_OPERATION_WRAP" value="5" />
    <option name="IF_BRACE_FORCE" value="3" />
    <option name="DOWHILE_BRACE_FORCE" value="3" />
    <option name="WHILE_BRACE_FORCE" value="3" />
    <option name="FOR_BRACE_FORCE" value="3" />
    <option name="WRAP_LONG_LINES" value="true" />
    <option name="SOFT_MARGINS" value="80,120" />
  </codeStyleSettings>
</code_scheme>

我只是错过了一些设置,或者这只是格式化程序中的一个缺陷?它有什么办法吗?

intellij-idea ide checkstyle
1个回答
1
投票

Preferences > Editor > Code Style > Java选择Wrapping and Braces选项卡并滚动到Chained method calls然后:

  • 设置Wrap always
  • 勾选Wrap first call选项
  • 勾选Align when multiline选项

enter image description here

使用该配置,您的代码将被格式化为:

public static void main(String[] args) {
    String superString = "s";
    String bestString = "b";
    Arrays
            .asList(superString.split(""))
            .stream()
            .map(superiorString -> Arrays
                    .asList(bestString.split(""))
                    .stream()
                    .map(otherSub -> Arrays
                            .asList(superiorString.split(""))
                            .stream()
                            .map(qwerty -> Arrays
                                    .asList(
                                            otherSub.split(""))
                                    .stream()
                                    .map(dvorak -> null))));
}

这是最广泛的68个字符。

© www.soinside.com 2019 - 2024. All rights reserved.