@@ -42,6 +42,9 @@ public class AssertionsArgumentOrder extends Recipe {
4242 };
4343 private static final MethodMatcher jupiterAssertIterableEqualsMatcher = new MethodMatcher ("org.junit.jupiter.api.Assertions assertIterableEquals(..)" );
4444
45+ // `assertNull("message", result())` should be `assertNull(result(), "message")`
46+ private static final MethodMatcher jupiterAssertNullMatcher = new MethodMatcher ("org.junit.jupiter.api.Assertions assert*Null(Object, String)" );
47+
4548 private static final MethodMatcher [] testNgMatcher = new MethodMatcher []{
4649 new MethodMatcher ("org.testng.Assert assertSame(..)" ),
4750 new MethodMatcher ("org.testng.Assert assertNotSame(..)" ),
@@ -54,6 +57,7 @@ public class AssertionsArgumentOrder extends Recipe {
5457 static {
5558 List <MethodMatcher > matchers = new ArrayList <>(Arrays .asList (jupiterAssertionMatchers ));
5659 matchers .add (jupiterAssertIterableEqualsMatcher );
60+ matchers .add (jupiterAssertNullMatcher );
5761 matchers .addAll (Arrays .asList (testNgMatcher ));
5862 //noinspection unchecked
5963 precondition = Preconditions .or (matchers .stream ().map (UsesMethod ::new ).toArray (TreeVisitor []::new ));
@@ -117,6 +121,9 @@ public J.MethodInvocation visitMethodInvocation(J.MethodInvocation method, Execu
117121 }
118122
119123 private boolean isCorrectOrder (Expression expected , Expression actual , J .MethodInvocation mi ) {
124+ if (jupiterAssertNullMatcher .matches (mi )) {
125+ return isConstant (actual , mi ) || !isConstant (expected , mi );
126+ }
120127 return isConstant (expected , mi ) || !isConstant (actual , mi );
121128 }
122129
@@ -156,7 +163,7 @@ private boolean isJupiterAssertion(J.MethodInvocation mi) {
156163 return true ;
157164 }
158165 }
159- return jupiterAssertIterableEqualsMatcher .matches (mi );
166+ return jupiterAssertIterableEqualsMatcher .matches (mi ) || jupiterAssertNullMatcher . matches ( mi ) ;
160167 }
161168
162169 private boolean isTestNgAssertion (J .MethodInvocation mi ) {
0 commit comments