1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
Passing a string that contains format specifiers to a method that does not
perform string formatting is usually a mistake.
Do this:
```java
if (!isValid(arg)) {
throw new IllegalArgumentException(String.format("invalid arg: %s", arg));
}
```
or this:
```java
logger.atWarning().log("invalid arg: %s", arg);
```
Not this:
```java
if (!isValid(arg)) {
throw new IllegalArgumentException("invalid arg: %s");
}
```
or this:
```java
logger.atWarning().log("invalid arg: %s");
```
If the method you're calling actually accepts a format string, you can annotate
that method with [`@FormatMethod`][fm] to ensure that callers correctly pass
format strings (and to inform Error Prone that the method call you're making
doesn't orphan a format string).
[fm]: https://errorprone.info/api/latest/com/google/errorprone/annotations/FormatMethod.html
|