diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/InspectionGadgetsBundle.properties b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/InspectionGadgetsBundle.properties index e33585044264..be6f90e356d3 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/InspectionGadgetsBundle.properties +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/InspectionGadgetsBundle.properties @@ -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 #ref declared in class ''{0}'' but referenced via subclass ''{1}'' #loc inner.class.referenced.via.subclass.quickfix=Rationalize inner class access \ No newline at end of file diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/JUnitDatapointInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/JUnitDatapointInspection.java index 7520ba8fced0..fdca2818f665 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/JUnitDatapointInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/JUnitDatapointInspection.java @@ -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 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); } } } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/JUnitRuleInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/JUnitRuleInspection.java index f29d519fc2bc..ec7e4a1b1420 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/JUnitRuleInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/JUnitRuleInspection.java @@ -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); diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/MakePublicStaticFix.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/MakePublicStaticFix.java index 30b1f1d1f590..7e8a6c235c59 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/MakePublicStaticFix.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/MakePublicStaticFix.java @@ -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); } } } diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/junit/rule/wrongdatapoint.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/junit/rule/wrongdatapoint.java index 5a8a898c1671..4142e2b9a516 100644 --- a/plugins/InspectionGadgets/test/com/siyeh/igtest/junit/rule/wrongdatapoint.java +++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/junit/rule/wrongdatapoint.java @@ -3,4 +3,5 @@ class Test { @org.junit.experimental.theories.DataPoint public Object f2; @org.junit.experimental.theories.DataPoint static Object f3; @org.junit.experimental.theories.DataPoint Object f4; + @org.junit.experimental.theories.DataPoint Object f4(){return null;} }