use non-recursive visitors in groovy inspections

This commit is contained in:
peter
2016-06-18 09:23:38 +02:00
parent 14aeb881db
commit 7a641cbd72
2 changed files with 13 additions and 44 deletions
@@ -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
@@ -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;