mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-18 09:34:34 +07:00
use non-recursive visitors in groovy inspections
This commit is contained in:
+10
-31
@@ -15,15 +15,14 @@
|
||||
*/
|
||||
package org.jetbrains.plugins.groovy.codeInspection;
|
||||
|
||||
import com.intellij.codeInspection.InspectionManager;
|
||||
import com.intellij.codeInspection.InspectionProfileEntry;
|
||||
import com.intellij.codeInspection.ProblemDescriptor;
|
||||
import com.intellij.codeInspection.LocalInspectionToolSession;
|
||||
import com.intellij.codeInspection.ProblemsHolder;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.PsiElementVisitor;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.GroovyFileBase;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.GroovyPsiElementVisitor;
|
||||
|
||||
public abstract class BaseInspection extends GroovySuppressableInspectionTool {
|
||||
private final String m_shortName = InspectionProfileEntry.getShortName(getClass().getSimpleName());
|
||||
@@ -51,16 +50,6 @@ public abstract class BaseInspection extends GroovySuppressableInspectionTool {
|
||||
return m_shortName;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
protected BaseInspectionVisitor buildGroovyVisitor(@NotNull ProblemsHolder problemsHolder, boolean onTheFly) {
|
||||
final BaseInspectionVisitor visitor = buildVisitor();
|
||||
visitor.setProblemsHolder(problemsHolder);
|
||||
visitor.setOnTheFly(onTheFly);
|
||||
visitor.setInspection(this);
|
||||
return visitor;
|
||||
}
|
||||
|
||||
|
||||
@Nullable
|
||||
protected String buildErrorString(Object... args) {
|
||||
return null;
|
||||
@@ -75,24 +64,14 @@ public abstract class BaseInspection extends GroovySuppressableInspectionTool {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
protected GroovyFix[] buildFixes(@NotNull PsiElement location) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
@Nullable
|
||||
public ProblemDescriptor[] checkFile(@NotNull PsiFile psiFile, @NotNull InspectionManager inspectionManager, boolean isOnTheFly) {
|
||||
if (!(psiFile instanceof GroovyFileBase)) {
|
||||
return super.checkFile(psiFile, inspectionManager, isOnTheFly);
|
||||
}
|
||||
final GroovyFileBase groovyFile = (GroovyFileBase) psiFile;
|
||||
|
||||
final ProblemsHolder problemsHolder = new ProblemsHolder(inspectionManager, psiFile, isOnTheFly);
|
||||
final BaseInspectionVisitor visitor = buildGroovyVisitor(problemsHolder, isOnTheFly);
|
||||
groovyFile.accept(visitor);
|
||||
return problemsHolder.getResultsArray();
|
||||
|
||||
public PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder,
|
||||
boolean isOnTheFly,
|
||||
@NotNull LocalInspectionToolSession session) {
|
||||
BaseInspectionVisitor visitor = buildVisitor();
|
||||
visitor.initialize(this, holder, isOnTheFly);
|
||||
return new GroovyPsiElementVisitor(visitor);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
+3
-13
@@ -22,7 +22,7 @@ import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.GroovyRecursiveElementVisitor;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.GroovyElementVisitor;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.GrStatement;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.GrVariable;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrExpression;
|
||||
@@ -31,20 +31,14 @@ import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrRefere
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.GrTypeDefinition;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrMethod;
|
||||
|
||||
public abstract class BaseInspectionVisitor extends GroovyRecursiveElementVisitor {
|
||||
public abstract class BaseInspectionVisitor extends GroovyElementVisitor {
|
||||
private BaseInspection inspection = null;
|
||||
private ProblemsHolder problemsHolder = null;
|
||||
private boolean onTheFly = false;
|
||||
|
||||
public void setInspection(BaseInspection inspection) {
|
||||
void initialize(BaseInspection inspection, ProblemsHolder problemsHolder, boolean onTheFly) {
|
||||
this.inspection = inspection;
|
||||
}
|
||||
|
||||
public void setProblemsHolder(ProblemsHolder problemsHolder) {
|
||||
this.problemsHolder = problemsHolder;
|
||||
}
|
||||
|
||||
public void setOnTheFly(boolean onTheFly) {
|
||||
this.onTheFly = onTheFly;
|
||||
}
|
||||
|
||||
@@ -125,10 +119,6 @@ public abstract class BaseInspectionVisitor extends GroovyRecursiveElementVisito
|
||||
inspection.buildQuickFixesOnlyForOnTheFlyErrors()) {
|
||||
return null;
|
||||
}
|
||||
final GroovyFix[] fixes = inspection.buildFixes(location);
|
||||
if (fixes != null) {
|
||||
return fixes;
|
||||
}
|
||||
final GroovyFix fix = inspection.buildFix(location);
|
||||
if (fix == null) {
|
||||
return null;
|
||||
|
||||
Reference in New Issue
Block a user