java - 语句标签的缩进检查无法正常工作

标签 java indentation checkstyle

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/

相关文章:

java - Java类中的实现和继承问题

python - 总的Python处女,这段代码有什么问题? “Detect Indentation error.”

java - 使用 google_checks 时,Checkstyle Maven 插件执行不会因错误而失败

java - 如何对同一类型的 Checkstyle 问题应用多个快速修复?

Java Main 方法魔数(Magic Number)

java - 下拉列表不选择可见时的值

java - IntelliJ的java单例线程安全吗

java - Ascii 表空间

java - Eclipse 格式化程序 : conditional expression on same indentation level

C# - 计算缩进级别 XML