在checkstyle
我已启用缩进检查。我遇到了一个奇怪的问题。
除了statement label
以外的其他所有内容,该检查工作正常。
我有一个如下代码段:
public void doIt(int k) {
for (int i = 0; i < k; i++){
search:{
for (int j = 0; j < i; j++){
if (j == i){
break search;
}
}
}
}
}
缩进级别设置为4.
现在,如果我将statement label (search)
放在第11级,它应该给出一个警告
- label child at indentation level 11 not at correct indentation, 12
但问题是,它在该行给出了Multiple markers
:
- label child at indentation level 11 not at correct indentation, 12
- label child at indentation level 11 not at correct indentation, 8
因此,无论在label
缩进的哪个级别,都会有一两个警告。
我没有启用了对两个不同Indent Level
缩进的重复检查。
如何通过一次检查获得两次警告?如何解决这个问题?
答案 0 :(得分:1)
这是IndentationCheck的限制。标签缩进被硬编码为比树中此时的正常缩进小一个级别(通过查看Checkstyle 5.6 sources进行验证)。下一个标记,即左大括号,或者,如果省略大括号,则for语句必须在预期的级别上。所以你可以像这样格式化代码,没有错误:
public void doIt(int k) {
for (int i = 0; i < k; i++){
search:
for (int j = 0; j < i; j++){
if (j == i){
break search;
}
}
}
}
这当然是个人品味的问题,但我不喜欢它。我建议不要使用Checkstyle来检查格式,而是使用自动代码格式化程序。例如,Eclipse内置了一个很好的格式化程序。