我安装了这个插件,似乎没有考虑Eclipse Formatter。
例如,我的链函数看起来像Formatter中的下面的代码:
stringB.append("a")
.append("b")
.append("c")
但是,当我问eclipse到autoformat(我猜使用Formatter)时,代码放置如下:
stringB.append("a").append("b").append("c")
知道为什么会这样吗? CheckStyle是否覆盖了Eclipse定义的Formatter。我该如何解决这个问题?
知道为什么会这样吗?
它可能正在发生,因为这可能是您正在使用的格式化程序的默认行为。为了防止这种情况,您可以选中名为“从未加入已包裹的行”的框:
但是,有一个更好的解决方案(详见下文),甚至不需要检查该框。
CheckStyle是否覆盖了Eclipse定义的Formatter。
不,但您可以轻松确认此问题不是由Checkstyle引起的:
我该如何解决这个问题?
您需要修改格式化程序的设置:
应用这些更改,然后重新格式化代码。格式化程序现在应该按照您指定的方式运行。下面是一些代码示例,其中包含链式方法调用的格式化的各种问题:
List<String> months = Arrays.asList("January", "February", "March", "April", "May", "June");
List<String> months5 = months.stream().filter(s -> s.length() == 5).collect(Collectors.toList());
StringBuilder stA = new StringBuilder();
StringBuilder stringB = new StringBuilder();
StringBuilder thisIsStringC = new StringBuilder();
stA.append("a").append("b").append("c");
stringB.append("a")
.append("b")
.append("c");
stringB.append("d").append("e")
.append("f");
thisIsStringC .append("a")
.append("b")
.append("c");
thisIsStringC.append("d")
.append("e");
以下是使用上述设置重新格式化(Ctrl-Shift-F)后的样子:
List<String> months = Arrays.asList("January", "February", "March", "April", "May", "June");
List<String> months5 = months.stream()
.filter(s -> s.length() == 5)
.collect(Collectors.toList());
StringBuilder stA = new StringBuilder();
StringBuilder stringB = new StringBuilder();
StringBuilder thisIsStringC = new StringBuilder();
stA.append("a")
.append("b")
.append("c");
stringB.append("a")
.append("b")
.append("c");
stringB.append("d")
.append("e")
.append("f");
thisIsStringC.append("a")
.append("b")
.append("c");
thisIsStringC.append("d")
.append("e");