我有一个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="
" />
<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>
我只是错过了一些设置,或者这只是格式化程序中的一个缺陷?它有什么办法吗?
从Preferences > Editor > Code Style > Java
选择Wrapping and Braces
选项卡并滚动到Chained method calls
然后:
Wrap always
Wrap first call
选项Align when multiline
选项使用该配置,您的代码将被格式化为:
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个字符。