フォーマット文字列引数として使用されている非定数の文字列連結を報告します。

このような文字列連結は意図的な場合もありますが、フォーマットメソッドを誤用している場合がほとんどです。また、連結された文字列で使用されている変数に % などの特殊文字が含まれている場合にはセキュリティの問題が発生することもあります。

また、, のつもりで + を入力することで、文字列書式設定の引数を誤って連結した結果である可能性もあります。

例:


  static String formatGreeting(String userName) {
    return String.format("Hello, " + userName);
  }

この例では、userName がフォーマット文字列の一部として解釈されます。その結果、(userName"%" の場合などに) IllegalFormatException が発生したり、(userName"%2000000000%" の場合などに) 膨大な量のメモリが使用されたりする可能性があります。 この呼び出しは String.format("Hello, %s", userName); に置換する必要があると思われます。

このインスペクションは、java.util.Formatterjava.lang.Stringjava.io.PrintWriter、 または java.io.PrintStream のフォーマットメソッドの呼び出しをチェックします。