diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/AssertEqualsHint.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/AssertEqualsHint.java index 3479e2f04e56..1753ca0dd1b1 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/AssertEqualsHint.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/AssertEqualsHint.java @@ -50,13 +50,8 @@ public class AssertEqualsHint { return null; } final PsiClass containingClass = method.getContainingClass(); - final boolean messageOnLastPosition = InheritanceUtil.isInheritor(containingClass, JUnitCommonClassNames.ORG_JUNIT_JUPITER_API_ASSERTIONS) || - InheritanceUtil.isInheritor(containingClass, "org.testng.Assert"); - if (!InheritanceUtil.isInheritor(containingClass, JUnitCommonClassNames.JUNIT_FRAMEWORK_ASSERT) && - !InheritanceUtil.isInheritor(containingClass, JUnitCommonClassNames.ORG_JUNIT_ASSERT) && - !InheritanceUtil.isInheritor(containingClass, JUnitCommonClassNames.JUNIT_FRAMEWORK_TEST_CASE) && - !InheritanceUtil.isInheritor(containingClass, "org.testng.AssertJUnit") && - !messageOnLastPosition) { + final boolean messageOnLastPosition = isMessageOnLastPosition(containingClass); + if (!isMessageOnFirstPosition(containingClass) && !messageOnLastPosition) { return null; } final PsiParameterList parameterList = method.getParameterList(); @@ -83,6 +78,18 @@ public class AssertEqualsHint { return new AssertEqualsHint(argumentIndex, method); } + public static boolean isMessageOnFirstPosition(PsiClass containingClass) { + return InheritanceUtil.isInheritor(containingClass, JUnitCommonClassNames.JUNIT_FRAMEWORK_ASSERT) || + InheritanceUtil.isInheritor(containingClass, JUnitCommonClassNames.ORG_JUNIT_ASSERT) || + InheritanceUtil.isInheritor(containingClass, JUnitCommonClassNames.JUNIT_FRAMEWORK_TEST_CASE) || + InheritanceUtil.isInheritor(containingClass, "org.testng.AssertJUnit"); + } + + public static boolean isMessageOnLastPosition(PsiClass containingClass) { + return InheritanceUtil.isInheritor(containingClass, JUnitCommonClassNames.ORG_JUNIT_JUPITER_API_ASSERTIONS) || + InheritanceUtil.isInheritor(containingClass, "org.testng.Assert"); + } + public static String areExpectedActualTypesCompatible(PsiMethodCallExpression expression) { final AssertEqualsHint assertEqualsHint = create(expression); if (assertEqualsHint == null) return null; diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/AssertsWithoutMessagesInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/AssertsWithoutMessagesInspection.java index 87d5ed2a37fb..9c98e1dc0f34 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/AssertsWithoutMessagesInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/AssertsWithoutMessagesInspection.java @@ -82,8 +82,9 @@ public class AssertsWithoutMessagesInspection extends BaseInspection { return; } final PsiClass containingClass = method.getContainingClass(); - if (!InheritanceUtil.isInheritor(containingClass, JUnitCommonClassNames.JUNIT_FRAMEWORK_ASSERT) && - !InheritanceUtil.isInheritor(containingClass, JUnitCommonClassNames.ORG_JUNIT_ASSERT)) { + final boolean messageOnFirstPosition = AssertEqualsHint.isMessageOnFirstPosition(containingClass); + final boolean messageOnLastPosition = AssertEqualsHint.isMessageOnLastPosition(containingClass); + if (!messageOnFirstPosition && !messageOnLastPosition) { return; } final PsiParameterList parameterList = method.getParameterList(); @@ -98,7 +99,7 @@ public class AssertsWithoutMessagesInspection extends BaseInspection { } final PsiType stringType = TypeUtils.getStringType(expression); final PsiParameter[] parameters = parameterList.getParameters(); - final PsiType parameterType1 = parameters[0].getType(); + final PsiType parameterType1 = parameters[messageOnFirstPosition ? 0 : parameters.length - 1].getType(); if (!parameterType1.equals(stringType)) { registerMethodCallError(expression); return; @@ -106,7 +107,7 @@ public class AssertsWithoutMessagesInspection extends BaseInspection { if (parameters.length != 2) { return; } - final PsiType parameterType2 = parameters[1].getType(); + final PsiType parameterType2 = parameters[messageOnFirstPosition ? parameterCount - 1 : 0].getType(); if (!parameterType2.equals(stringType)) { return; } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/ConstantJUnitAssertArgumentInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/ConstantJUnitAssertArgumentInspection.java index e02bfb7bc0fd..2f92530545dc 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/ConstantJUnitAssertArgumentInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/ConstantJUnitAssertArgumentInspection.java @@ -31,7 +31,7 @@ import java.util.Set; public class ConstantJUnitAssertArgumentInspection extends BaseInspection { @NonNls - private static final Set ASSERT_METHODS = new HashSet(); + private static final Set ASSERT_METHODS = new HashSet<>(); static { ASSERT_METHODS.add("assertTrue"); @@ -60,28 +60,24 @@ public class ConstantJUnitAssertArgumentInspection extends BaseInspection { return new ConstantJUnitAssertArgumentVisitor(); } - private static class ConstantJUnitAssertArgumentVisitor - extends BaseInspectionVisitor { + private static class ConstantJUnitAssertArgumentVisitor extends BaseInspectionVisitor { @Override - public void visitMethodCallExpression( - PsiMethodCallExpression expression) { - final PsiReferenceExpression methodExpression = - expression.getMethodExpression(); - @NonNls final String methodName = - methodExpression.getReferenceName(); + public void visitMethodCallExpression(PsiMethodCallExpression expression) { + final PsiReferenceExpression methodExpression = expression.getMethodExpression(); + @NonNls final String methodName = methodExpression.getReferenceName(); if (!ASSERT_METHODS.contains(methodName)) { return; } + final PsiMethod method = expression.resolveMethod(); if (method == null) { return; } final PsiClass containingClass = method.getContainingClass(); - if (!InheritanceUtil.isInheritor(containingClass, - JUnitCommonClassNames.JUNIT_FRAMEWORK_ASSERT) && - !InheritanceUtil.isInheritor(containingClass, - JUnitCommonClassNames.ORG_JUNIT_ASSERT)) { + final boolean messageOnFirstPosition = AssertEqualsHint.isMessageOnFirstPosition(containingClass); + final boolean messageOnLastPosition = AssertEqualsHint.isMessageOnLastPosition(containingClass); + if (!messageOnFirstPosition && !messageOnLastPosition) { return; } final PsiExpressionList argumentList = expression.getArgumentList(); @@ -89,11 +85,11 @@ public class ConstantJUnitAssertArgumentInspection extends BaseInspection { if (arguments.length == 0) { return; } - final PsiExpression lastArgument = arguments[arguments.length - 1]; - if (!PsiUtil.isConstantExpression(lastArgument)) { + final PsiExpression argument = arguments[messageOnFirstPosition ? arguments.length - 1 : 0]; + if (!PsiUtil.isConstantExpression(argument)) { return; } - registerError(lastArgument); + registerError(argument); } } } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/TestMethodWithoutAssertionInspectionBase.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/TestMethodWithoutAssertionInspectionBase.java index f794e08a9c08..5f2b42d2d533 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/TestMethodWithoutAssertionInspectionBase.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/TestMethodWithoutAssertionInspectionBase.java @@ -37,6 +37,7 @@ public class TestMethodWithoutAssertionInspectionBase extends BaseInspection { methodMatcher = new MethodMatcher(true, "assertionMethods") .add(JUnitCommonClassNames.ORG_JUNIT_ASSERT, "assert.*|fail.*") .add(JUnitCommonClassNames.JUNIT_FRAMEWORK_ASSERT, "assert.*|fail.*") + .add(JUnitCommonClassNames.ORG_JUNIT_JUPITER_API_ASSERTIONS, "assert.*|fail.*") .add("org.mockito.Mockito", "verify.*") .add("org.mockito.InOrder", "verify") .add("org.junit.rules.ExpectedException", "expect.*")