From b38ff0a0903447e85c41d36b6ed888db36b93c4a Mon Sep 17 00:00:00 2001 From: Knut Wannheden Date: Thu, 23 Jan 2025 08:38:21 +0100 Subject: [PATCH] Use new `J.SwitchExpression` constructor --- .../EqualsAvoidsNullVisitor.java | 6 ++- .../staticanalysis/EqualsAvoidsNullTest.java | 52 +++++++++++++++++++ 2 files changed, 57 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/openrewrite/staticanalysis/EqualsAvoidsNullVisitor.java b/src/main/java/org/openrewrite/staticanalysis/EqualsAvoidsNullVisitor.java index d2d35fb7b..ad9941279 100644 --- a/src/main/java/org/openrewrite/staticanalysis/EqualsAvoidsNullVisitor.java +++ b/src/main/java/org/openrewrite/staticanalysis/EqualsAvoidsNullVisitor.java @@ -49,6 +49,8 @@ public class EqualsAvoidsNullVisitor

extends JavaVisitor

{ private static final String JAVA_LANG_STRING = "java.lang.String "; private static final MethodMatcher EQUALS = new MethodMatcher(JAVA_LANG_STRING + "equals(java.lang.Object)"); private static final MethodMatcher EQUALS_IGNORE_CASE = new MethodMatcher(JAVA_LANG_STRING + "equalsIgnoreCase(java.lang.String)"); + private static final MethodMatcher COMPARE_TO = new MethodMatcher(JAVA_LANG_STRING + "compareTo(java.lang.String)"); + private static final MethodMatcher COMPARE_TO_IGNORE_CASE = new MethodMatcher(JAVA_LANG_STRING + "compareToIgnoreCase(java.lang.String)"); private static final MethodMatcher CONTENT_EQUALS = new MethodMatcher(JAVA_LANG_STRING + "contentEquals(java.lang.CharSequence)"); EqualsAvoidsNullStyle style; @@ -90,7 +92,9 @@ private boolean hasCompatibleArgument(J.MethodInvocation m) { private boolean isStringComparisonMethod(J.MethodInvocation methodInvocation) { return EQUALS.matches(methodInvocation) || (!style.getIgnoreEqualsIgnoreCase() && EQUALS_IGNORE_CASE.matches(methodInvocation)) || - CONTENT_EQUALS.matches(methodInvocation); + CONTENT_EQUALS.matches(methodInvocation) || + COMPARE_TO.matches(methodInvocation) || + COMPARE_TO_IGNORE_CASE.matches(methodInvocation); } private void maybeHandleParentBinary(J.MethodInvocation m) { diff --git a/src/test/java/org/openrewrite/staticanalysis/EqualsAvoidsNullTest.java b/src/test/java/org/openrewrite/staticanalysis/EqualsAvoidsNullTest.java index 47e95519f..1f6ee26e6 100644 --- a/src/test/java/org/openrewrite/staticanalysis/EqualsAvoidsNullTest.java +++ b/src/test/java/org/openrewrite/staticanalysis/EqualsAvoidsNullTest.java @@ -64,6 +64,58 @@ public class A { ); } + @DocumentExample + @Test + void invertConditional_compareTo() { + rewriteRun( + //language=java + java( + """ + public class A { + { + String s = null; + if(s.compareTo("test")) {} + } + } + """, + """ + public class A { + { + String s = null; + if("test".compareTo(s)) {} + } + } + """ + ) + ); + } + + @DocumentExample + @Test + void invertConditional_compareToIgnoreCase() { + rewriteRun( + //language=java + java( + """ + public class A { + { + String s = null; + if(s.compareToIgnoreCase("test")) {} + } + } + """, + """ + public class A { + { + String s = null; + if("test".compareToIgnoreCase(s)) {} + } + } + """ + ) + ); + } + @Test void removeUnnecessaryNullCheck() { rewriteRun(