mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-103523 MethodMayBeStaticInspection replace qualified usages by class name (reused MakeMethodStaticProcessor)
This commit is contained in:
@@ -112,6 +112,7 @@ public class MakeMethodStaticProcessor extends MakeMethodOrClassStaticProcessor<
|
||||
final PsiModifierList modifierList = myMember.getModifierList();
|
||||
modifierList.setModifierProperty(PsiModifier.STATIC, true);
|
||||
modifierList.setModifierProperty(PsiModifier.FINAL, false);
|
||||
modifierList.setModifierProperty(PsiModifier.DEFAULT, false);
|
||||
}
|
||||
|
||||
protected void changeInternalUsage(InternalUsageInfo usage, PsiElementFactory factory)
|
||||
|
||||
@@ -55,8 +55,7 @@ public final class Settings {
|
||||
}
|
||||
|
||||
|
||||
public Settings(boolean replaceUsages, String classParameterName,
|
||||
VariableData[] variableDatum) {
|
||||
public Settings(boolean replaceUsages, @Nullable String classParameterName, @Nullable VariableData[] variableDatum) {
|
||||
myReplaceUsages = replaceUsages;
|
||||
myMakeClassParameter = classParameterName != null;
|
||||
myClassParameterName = classParameterName;
|
||||
|
||||
+2
-13
@@ -29,18 +29,12 @@ import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ChangeModifierFix extends InspectionGadgetsFix {
|
||||
public static final String FAMILY_NAME = "Change modifier";
|
||||
|
||||
@PsiModifier.ModifierConstant private final String modifierText;
|
||||
private final String[] incompatibleModifiers;
|
||||
|
||||
public ChangeModifierFix(@NonNls @PsiModifier.ModifierConstant String modifierText) {
|
||||
this.modifierText = modifierText;
|
||||
this.incompatibleModifiers = null;
|
||||
}
|
||||
|
||||
public ChangeModifierFix(String modifierText, String... incompatibleModifiers) {
|
||||
this.modifierText = modifierText;
|
||||
this.incompatibleModifiers = incompatibleModifiers;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -53,7 +47,7 @@ public class ChangeModifierFix extends InspectionGadgetsFix {
|
||||
@NotNull
|
||||
@Override
|
||||
public String getFamilyName() {
|
||||
return "Change modifier";
|
||||
return FAMILY_NAME;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -70,10 +64,5 @@ public class ChangeModifierFix extends InspectionGadgetsFix {
|
||||
return;
|
||||
}
|
||||
modifiers.setModifierProperty(modifierText, true);
|
||||
if (incompatibleModifiers != null) {
|
||||
for (String modifier : incompatibleModifiers) {
|
||||
modifiers.setModifierProperty(modifier, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+30
-1
@@ -16,11 +16,16 @@
|
||||
package com.siyeh.ig.performance;
|
||||
|
||||
import com.intellij.codeInspection.InspectionManager;
|
||||
import com.intellij.codeInspection.ProblemDescriptor;
|
||||
import com.intellij.codeInspection.ui.MultipleCheckboxOptionsPanel;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Condition;
|
||||
import com.intellij.openapi.util.WriteExternalException;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.search.searches.ClassInheritorsSearch;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.refactoring.makeStatic.MakeMethodStaticProcessor;
|
||||
import com.intellij.refactoring.makeStatic.Settings;
|
||||
import com.intellij.util.Processor;
|
||||
import com.intellij.util.Query;
|
||||
import com.siyeh.InspectionGadgetsBundle;
|
||||
@@ -42,6 +47,7 @@ public class MethodMayBeStaticInspection extends BaseInspection {
|
||||
private static final String IGNORE_DEFAULT_METHODS_ATTR_NAME = "m_ignoreDefaultMethods";
|
||||
private static final String ONLY_PRIVATE_OR_FINAL_ATTR_NAME = "m_onlyPrivateOrFinal";
|
||||
private static final String IGNORE_EMPTY_METHODS_ATTR_NAME = "m_ignoreEmptyMethods";
|
||||
private static final String REPLACE_QUALIFIER_ATTR_NAME = "m_replaceQualifier";
|
||||
/**
|
||||
* @noinspection PublicField
|
||||
*/
|
||||
@@ -51,6 +57,7 @@ public class MethodMayBeStaticInspection extends BaseInspection {
|
||||
*/
|
||||
public boolean m_ignoreEmptyMethods = true;
|
||||
public boolean m_ignoreDefaultMethods = true;
|
||||
public boolean m_replaceQualifier = true;
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
@@ -66,7 +73,25 @@ public class MethodMayBeStaticInspection extends BaseInspection {
|
||||
|
||||
@Override
|
||||
protected InspectionGadgetsFix buildFix(Object... infos) {
|
||||
return new ChangeModifierFix(PsiModifier.STATIC, PsiModifier.DEFAULT);
|
||||
return new InspectionGadgetsFix() {
|
||||
@Override
|
||||
public void doFix(Project project, ProblemDescriptor descriptor) {
|
||||
final PsiMethod element = PsiTreeUtil.getParentOfType(descriptor.getPsiElement(), PsiMethod.class);
|
||||
new MakeMethodStaticProcessor(element.getProject(), element, new Settings(m_replaceQualifier, null, null)).run();
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public String getName() {
|
||||
return InspectionGadgetsBundle.message("change.modifier.quickfix", PsiModifier.STATIC);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public String getFamilyName() {
|
||||
return ChangeModifierFix.FAMILY_NAME;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -75,6 +100,7 @@ public class MethodMayBeStaticInspection extends BaseInspection {
|
||||
optionsPanel.addCheckbox(InspectionGadgetsBundle.message("method.may.be.static.only.option"), ONLY_PRIVATE_OR_FINAL_ATTR_NAME);
|
||||
optionsPanel.addCheckbox(InspectionGadgetsBundle.message("method.may.be.static.empty.option"), IGNORE_EMPTY_METHODS_ATTR_NAME);
|
||||
optionsPanel.addCheckbox("Ignore default methods", IGNORE_DEFAULT_METHODS_ATTR_NAME);
|
||||
optionsPanel.addCheckbox("Replace qualifier by class name", REPLACE_QUALIFIER_ATTR_NAME);
|
||||
return optionsPanel;
|
||||
}
|
||||
|
||||
@@ -91,6 +117,9 @@ public class MethodMayBeStaticInspection extends BaseInspection {
|
||||
if (!m_ignoreDefaultMethods) {
|
||||
node.addContent(new Element("option").setAttribute("name", IGNORE_DEFAULT_METHODS_ATTR_NAME).setAttribute("value", "false"));
|
||||
}
|
||||
if (!m_replaceQualifier) {
|
||||
node.addContent(new Element("option").setAttribute("name", REPLACE_QUALIFIER_ATTR_NAME).setAttribute("value", "false"));
|
||||
}
|
||||
}
|
||||
|
||||
private class MethodCanBeStaticVisitor extends BaseInspectionVisitor {
|
||||
Reference in New Issue
Block a user