mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
@DataPoint: check annotated methods to support the contract
This commit is contained in:
+1
-1
@@ -2029,7 +2029,7 @@ junit.rule.display.name=Malformed @Rule/@ClassRule field
|
||||
junit.rule.problem.descriptor=Fields annotated with @{0} should be {1}
|
||||
junit.rule.type.problem.descriptor=Field type should be subtype of org.junit.rules.TestRule
|
||||
junit.datapoint.display.name=Malformed @DataPoint field
|
||||
junit.datapoint.problem.descriptor=Fields annotated with @DataPoint should be {0}
|
||||
junit.datapoint.problem.descriptor={1}s annotated with @DataPoint should be {0}
|
||||
inner.class.referenced.via.subclass.display.name=Inner class referenced via subclass
|
||||
inner.class.referenced.via.subclass.problem.descriptor=Inner class <code>#ref</code> declared in class ''{0}'' but referenced via subclass ''{1}'' #loc
|
||||
inner.class.referenced.via.subclass.quickfix=Rationalize inner class access
|
||||
+18
-12
@@ -1,13 +1,8 @@
|
||||
package com.siyeh.ig.junit;
|
||||
|
||||
import com.intellij.codeInsight.AnnotationUtil;
|
||||
import com.intellij.codeInspection.ProblemDescriptor;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiField;
|
||||
import com.intellij.psi.PsiModifier;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.*;
|
||||
import com.siyeh.InspectionGadgetsBundle;
|
||||
import com.siyeh.ig.BaseInspection;
|
||||
import com.siyeh.ig.BaseInspectionVisitor;
|
||||
@@ -46,15 +41,26 @@ public class JUnitDatapointInspection extends BaseInspection {
|
||||
@Override
|
||||
public BaseInspectionVisitor buildVisitor() {
|
||||
return new BaseInspectionVisitor() {
|
||||
@Override
|
||||
public void visitMethod(PsiMethod method) {
|
||||
visitMember(method, "method");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitField(PsiField field) {
|
||||
final boolean dataPointAnnotated = AnnotationUtil.isAnnotated(field, DATAPOINT_FQN, false);
|
||||
visitMember(field, "field");
|
||||
}
|
||||
|
||||
private <T extends PsiMember & PsiNameIdentifierOwner> void visitMember(T member,
|
||||
final String memberDescription) {
|
||||
final boolean dataPointAnnotated = AnnotationUtil.isAnnotated(member, DATAPOINT_FQN, false);
|
||||
if (dataPointAnnotated) {
|
||||
final String errorMessage = JUnitRuleInspection.getPublicStaticErrorMessage(field, false, true);
|
||||
final String errorMessage = JUnitRuleInspection.getPublicStaticErrorMessage(member, false, true);
|
||||
if (errorMessage != null) {
|
||||
registerError(field.getNameIdentifier(),
|
||||
InspectionGadgetsBundle.message("junit.datapoint.problem.descriptor", errorMessage),
|
||||
"Make field " + errorMessage, DATAPOINT_FQN);
|
||||
final PsiElement identifier = member.getNameIdentifier();
|
||||
registerError(identifier != null ? identifier : member,
|
||||
InspectionGadgetsBundle.message("junit.datapoint.problem.descriptor", errorMessage, StringUtil.capitalize(memberDescription)),
|
||||
"Make " + memberDescription + " " + errorMessage, DATAPOINT_FQN);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2
-1
@@ -19,6 +19,7 @@ import com.intellij.codeInsight.AnnotationUtil;
|
||||
import com.intellij.codeInspection.ui.MultipleCheckboxOptionsPanel;
|
||||
import com.intellij.psi.PsiField;
|
||||
import com.intellij.psi.PsiModifier;
|
||||
import com.intellij.psi.PsiModifierListOwner;
|
||||
import com.intellij.psi.util.InheritanceUtil;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.siyeh.InspectionGadgetsBundle;
|
||||
@@ -90,7 +91,7 @@ public class JUnitRuleInspection extends BaseInspection {
|
||||
};
|
||||
}
|
||||
|
||||
static String getPublicStaticErrorMessage(PsiField field, boolean shouldBeNonStatic, boolean shouldBeStatic) {
|
||||
static String getPublicStaticErrorMessage(PsiModifierListOwner field, boolean shouldBeNonStatic, boolean shouldBeStatic) {
|
||||
String errorMessage = null;
|
||||
final boolean hasStatic = field.hasModifierProperty(PsiModifier.STATIC);
|
||||
final boolean hasPublic = field.hasModifierProperty(PsiModifier.PUBLIC);
|
||||
|
||||
+4
-3
@@ -4,6 +4,7 @@ import com.intellij.codeInspection.ProblemDescriptor;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiField;
|
||||
import com.intellij.psi.PsiMember;
|
||||
import com.intellij.psi.PsiModifier;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
@@ -28,9 +29,9 @@ class MakePublicStaticFix extends InspectionGadgetsFix {
|
||||
final PsiElement element = descriptor.getPsiElement();
|
||||
if (element != null) {
|
||||
final PsiElement parent = element.getParent();
|
||||
if (parent instanceof PsiField) {
|
||||
PsiUtil.setModifierProperty((PsiField)parent, PsiModifier.PUBLIC, true);
|
||||
PsiUtil.setModifierProperty((PsiField)parent, PsiModifier.STATIC, myMakeStatic);
|
||||
if (parent instanceof PsiMember) {
|
||||
PsiUtil.setModifierProperty((PsiMember)parent, PsiModifier.PUBLIC, true);
|
||||
PsiUtil.setModifierProperty((PsiMember)parent, PsiModifier.STATIC, myMakeStatic);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,4 +3,5 @@ class Test {
|
||||
@org.junit.experimental.theories.DataPoint public Object <warning descr="Fields annotated with @DataPoint should be static">f2</warning>;
|
||||
@org.junit.experimental.theories.DataPoint static Object <warning descr="Fields annotated with @DataPoint should be public">f3</warning>;
|
||||
@org.junit.experimental.theories.DataPoint Object <warning descr="Fields annotated with @DataPoint should be public and static">f4</warning>;
|
||||
@org.junit.experimental.theories.DataPoint Object <warning descr="Methods annotated with @DataPoint should be public and static">f4</warning>(){return null;}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user