package krasa.inspections;
import org.jetbrains.annotations.*;
import com.intellij.codeInspection.*;
import com.intellij.psi.*;
public class UseAssertResponseEqualBuilderTestInspection extends SdpTestInspection {
@Override
public PsiElementVisitor buildInternalVisitor(@NotNull final ProblemsHolder holder, final boolean isOnTheFly) {
return new JavaElementVisitor() {
@Override
public void visitMethodCallExpression(PsiMethodCallExpression expression) {
final ProblemDescriptor descriptor = checkNewExpression(expression, holder.getManager(), isOnTheFly);
if (descriptor != null) {
holder.registerProblem(descriptor);
}
super.visitMethodCallExpression(expression);
}
};
}
@Nullable
private static ProblemDescriptor checkNewExpression(PsiMethodCallExpression expression, InspectionManager manager,
boolean isOnTheFly) {
final PsiType type = expression.getType();
if (type != null) {
String referenceName = expression.getMethodExpression().getReferenceName();
if ("assertEqualXmlResponse".equals(referenceName)) {
return manager.createProblemDescriptor(expression, "Use #expect",
new ConvertAssertResponseEqualBuilderQuickFix(),
ProblemHighlightType.GENERIC_ERROR_OR_WARNING, isOnTheFly);
} else if ("assertEqualJsonResponse".equals(referenceName)) {
return manager.createProblemDescriptor(expression, "Use #expect",
new ConvertAssertResponseEqualBuilderQuickFix() {
@Override
protected String getMatches() {
return "matchesJson";
}
},
ProblemHighlightType.GENERIC_ERROR_OR_WARNING, isOnTheFly);
}
}
return null;
}
@Nls
@NotNull
@Override
public String getDisplayName() {
return "Use AssertResponseEqualBuilder";
}
@NotNull
@Override
public String getShortName() {
return "AssertResponseEqualBuilder";
}
}