报告除了第一次迭代中产生的副作用外,在第二次和后续迭代中不产生其他副作用的循环,这可能表示编程错误。

这样的循环可能只迭代零次、一次或无限次。 如果不存在无限循环的情况,则可以将其替换为 if 语句。 否则,程序可能会卡住。

示例:


    public void foo(String baseName, String names) {
        int suffix = 1;
        String name = baseName;
        while (names.contains(name)) {
            // 错误:suffix 未更新,导致循环体幂等
            name = baseName + suffix;
        }
    }

2018.1 的新功能