単一の String.repeat() メソッドに置換できるループを報告します (Java 11 以降で使用できます)。

例:


  void append(StringBuilder sb, int count, Object obj) {
    for (int i = 0; i < count; i++) {
      sb.append(obj);
    }
  }

クイックフィックス適用後:


  void append(StringBuilder sb, int count, Object obj) {
    sb.append(String.valueOf(obj).repeat(Math.max(0, count)));
  }

このインスペクションは count が負の値でないことを静的に証明できない場合、デフォルトでは countMath.max(0, count) でラップする場合があります。 この処理はセマンティクスの変更を防ぐために行われます。String.repeat() は負の数値を拒否するためです。 必要に応じてこの動作を無効にするには、「セマンティクスの変更を回避するために Math.max(0, count) を追加する」オプションを使用します。

同様に、繰り返したい文字列を String.valueOf でラップし、null になる可能性があるかどうかが分からない場合に NullPointerException を防ぐことができます。

このインスペクションは、プロジェクトまたはモジュールの言語レベルが 11 以上の場合にのみ報告します。

2019.1 の新機能です