mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-18 09:34:34 +07:00
IDEA-79962 (Inspection "equals() and hashCode() not paired " does not provide miss method insertion)
This commit is contained in:
+9
-8
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2011 JetBrains s.r.o.
|
||||
* Copyright 2000-2014 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -15,10 +15,7 @@
|
||||
*/
|
||||
package com.intellij.codeInspection.equalsAndHashcode;
|
||||
|
||||
import com.intellij.codeInspection.BaseJavaBatchLocalInspectionTool;
|
||||
import com.intellij.codeInspection.InspectionsBundle;
|
||||
import com.intellij.codeInspection.LocalQuickFix;
|
||||
import com.intellij.codeInspection.ProblemsHolder;
|
||||
import com.intellij.codeInspection.*;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.roots.ProjectRootManager;
|
||||
@@ -36,10 +33,10 @@ import org.jetbrains.annotations.Nullable;
|
||||
/**
|
||||
* @author max
|
||||
*/
|
||||
public class EqualsAndHashcode extends BaseJavaBatchLocalInspectionTool {
|
||||
public class EqualsAndHashcodeBase extends BaseJavaBatchLocalInspectionTool {
|
||||
@Override
|
||||
@NotNull
|
||||
public PsiElementVisitor buildVisitor(@NotNull final ProblemsHolder holder, boolean isOnTheFly) {
|
||||
public PsiElementVisitor buildVisitor(@NotNull final ProblemsHolder holder, final boolean isOnTheFly) {
|
||||
final Project project = holder.getProject();
|
||||
Pair<PsiMethod, PsiMethod> pair = CachedValuesManager.getManager(project).getCachedValue(project, new CachedValueProvider<Pair<PsiMethod, PsiMethod>>() {
|
||||
@Override
|
||||
@@ -92,7 +89,7 @@ public class EqualsAndHashcode extends BaseJavaBatchLocalInspectionTool {
|
||||
hasEquals[0]
|
||||
? InspectionsBundle.message("inspection.equals.hashcode.only.one.defined.problem.descriptor", "<code>equals()</code>", "<code>hashCode()</code>")
|
||||
: InspectionsBundle.message("inspection.equals.hashcode.only.one.defined.problem.descriptor","<code>hashCode()</code>", "<code>equals()</code>"),
|
||||
(LocalQuickFix[])null);
|
||||
buildFixes(isOnTheFly, hasEquals[0]));
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -130,4 +127,8 @@ public class EqualsAndHashcode extends BaseJavaBatchLocalInspectionTool {
|
||||
public String getShortName() {
|
||||
return "EqualsAndHashcode";
|
||||
}
|
||||
|
||||
protected LocalQuickFix[] buildFixes(boolean isOnTheFly, boolean hasEquals) {
|
||||
return LocalQuickFix.EMPTY_ARRAY;
|
||||
}
|
||||
}
|
||||
+72
@@ -0,0 +1,72 @@
|
||||
/*
|
||||
* Copyright 2000-2014 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.intellij.codeInspection.equalsAndHashcode;
|
||||
|
||||
import com.intellij.codeInsight.generation.GenerateEqualsHandler;
|
||||
import com.intellij.codeInspection.InspectionsBundle;
|
||||
import com.intellij.codeInspection.LocalQuickFix;
|
||||
import com.intellij.codeInspection.ProblemDescriptor;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.fileEditor.FileEditorManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
* @author Bas Leijdekkers
|
||||
*/
|
||||
public class EqualsAndHashcode extends EqualsAndHashcodeBase {
|
||||
|
||||
protected LocalQuickFix[] buildFixes(boolean isOnTheFly, boolean hasEquals) {
|
||||
if (!isOnTheFly) {
|
||||
return LocalQuickFix.EMPTY_ARRAY;
|
||||
}
|
||||
return new LocalQuickFix[]{new GenerateEqualsHashcodeFix(hasEquals)};
|
||||
}
|
||||
|
||||
private static class GenerateEqualsHashcodeFix implements LocalQuickFix {
|
||||
|
||||
private final boolean myHasEquals;
|
||||
|
||||
public GenerateEqualsHashcodeFix(boolean hasEquals) {
|
||||
myHasEquals = hasEquals;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public String getName() {
|
||||
return myHasEquals
|
||||
? InspectionsBundle.message("inspection.equals.hashcode.generate.hashcode.quickfix")
|
||||
: InspectionsBundle.message("inspection.equals.hashcode.generate.equals.quickfix");
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public String getFamilyName() {
|
||||
return getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) {
|
||||
final Editor editor = FileEditorManager.getInstance(project).getSelectedTextEditor();
|
||||
if (editor == null) {
|
||||
return;
|
||||
}
|
||||
final PsiElement element = descriptor.getPsiElement();
|
||||
new GenerateEqualsHandler().invoke(project, editor, element.getContainingFile());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -116,6 +116,8 @@ inspection.redundant.throws.problem.descriptor2=The declared exception {0} is ne
|
||||
|
||||
inspection.equals.hashcode.display.name=equals() and hashCode() not paired
|
||||
inspection.equals.hashcode.only.one.defined.problem.descriptor=Class has {0} defined but does not define {1}
|
||||
inspection.equals.hashcode.generate.equals.quickfix=Generate 'equals()'
|
||||
inspection.equals.hashcode.generate.hashcode.quickfix=Generate 'hashCode()'
|
||||
|
||||
inspection.1.5.display.name=Usages of API documented as @since 1.5 (1.6|1.7)
|
||||
inspection.1.5.problem.descriptor=Usage of API documented as @since {0}+
|
||||
|
||||
Reference in New Issue
Block a user