虽然偶尔是有意为之,但这通常是误用格式化方法,连接的字符串中使用的变量包含 %
等特殊字符时,甚至可能导致安全问题。
此外,有时这可能是在本应键入 ,
时键入了 +
而错误连接字符串格式参数所致。
示例:
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
的格式化方法的调用。