最初の繰り返しで生じる副作用を除き、後続のすべての繰り返しで副作用が生じないループを報告します (これはプログラミングにミスがある可能性を示唆している場合があります)。

そのようなループの繰り返しは、0 回、1 回、もしくは無限に続く可能性があります。 ループを無限に繰り返しても到達できないケースがある場合、そのループを if ステートメントに置換できます。 そうしないと、プログラムがループから抜け出せなくなる可能性があります。

例:


    public void foo(String baseName, String names) {
        int suffix = 1;
        String name = baseName;
        while (names.contains(name)) {
            // エラー: suffix が更新されていないため、ループ本体は常に同じ結果になります
            name = baseName + suffix;
        }
    }

2018.1 の新機能です