在checkstyle
中,我启用了缩进检查。我遇到了一个奇怪的问题。
检查对于除语句标签
之外的所有内容都工作正常。
我有一个如下代码片段:
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。
现在,如果我将语句标签(搜索)
置于第 11 级,它应该给出一个警告,如下所示
- label child at indentation level 11 not at correct indentation, 12
但问题是,它在该行给出了多个标记
:
- label child at indentation level 11 not at correct indentation, 12
- label child at indentation level 11 not at correct indentation, 8
因此,无论我在哪个级别缩进标签
,总会有一个/两个警告。
我没有启用对两个不同缩进级别
的缩进的重复检查。
我如何在一次检查中收到两个警告?如何解决这个问题?
最佳答案
这是 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 内置了一个很好的格式化程序。
关于java - 语句标签的缩进检查无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18308208/