虽然偶尔是有意为之,但这通常是误用格式化方法,串联的字符串中使用的变量包含 % 等特殊字符时,甚至可能导致安全问题。
此外,有时这可能是在本应输入 , 时输入了 + 而错误串联字符串格式实参所致。
示例:
static String formatGreeting(String userName) {
return String.format("Hello, " + userName);
}
这里的 userName 将解释为格式字符串的一部分,从而可能导致 IllegalFormatException(例如,如果 userName 为 "%")或使用大量内存(例如,如果 userName 为 "%2000000000%")。
该调用可能应替换为 String.format("Hello, %s", userName);。
此检查将检查对 java.util.Formatter、java.lang.String、java.io.PrintWriter 或 java.io.PrintStream 的格式化方法的调用。