diff --git a/src/main/java/org/openrewrite/java/logging/ParameterizedLogging.java b/src/main/java/org/openrewrite/java/logging/ParameterizedLogging.java index 6236fc33..c9a96095 100644 --- a/src/main/java/org/openrewrite/java/logging/ParameterizedLogging.java +++ b/src/main/java/org/openrewrite/java/logging/ParameterizedLogging.java @@ -146,7 +146,7 @@ private boolean isMarker(Expression expression) { private static class RemoveToStringVisitor extends JavaVisitor { private final JavaTemplate t = JavaTemplate.builder("#{any(java.lang.String)}").build(); - private final MethodMatcher TO_STRING = new MethodMatcher("java.lang.Object toString()"); + private final MethodMatcher TO_STRING = new MethodMatcher("*..* toString()"); @Override public J visitMethodInvocation(J.MethodInvocation method, ExecutionContext ctx) { diff --git a/src/test/java/org/openrewrite/java/logging/ParameterizedLoggingTest.java b/src/test/java/org/openrewrite/java/logging/ParameterizedLoggingTest.java index cff4aeda..0f36a1ed 100644 --- a/src/test/java/org/openrewrite/java/logging/ParameterizedLoggingTest.java +++ b/src/test/java/org/openrewrite/java/logging/ParameterizedLoggingTest.java @@ -98,6 +98,37 @@ static void method(Logger logger, Object person) { ); } + @SuppressWarnings("UnnecessaryToStringCall") + @Test + void noNeedToCallToStringOnParameterizedArgumentOfAnyType() { + rewriteRun( + spec -> spec.recipe(new ParameterizedLogging("org.slf4j.Logger info(..)", true)), + //language=java + java( + """ + import java.util.stream.Stream; + import org.slf4j.Logger; + + class Test { + static void method(Logger logger, Stream person) { + logger.info("Hello " + person.toString() + ", your name has " + person.toString().length() + " characters. Just counting " + person.toString()); + } + } + """, + """ + import java.util.stream.Stream; + import org.slf4j.Logger; + + class Test { + static void method(Logger logger, Stream person) { + logger.info("Hello {}, your name has {} characters. Just counting {}", person, person.toString().length(), person); + } + } + """ + ) + ); + } + @Test void doNotRemoveStringOnParameterizedArgument() { rewriteRun(