[devkit] merge InternalInspection into DevKitInspectionBase

all inspections will now run only in plugin projects
This commit is contained in:
Yann Cébron
2016-11-04 16:34:38 +01:00
parent db8926c1b9
commit 5b9190b3e5
14 changed files with 56 additions and 73 deletions
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2015 JetBrains s.r.o.
* Copyright 2000-2016 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.
@@ -16,10 +16,12 @@
package org.jetbrains.idea.devkit.inspections;
import com.intellij.codeInspection.BaseJavaLocalInspectionTool;
import com.intellij.codeInspection.ProblemsHolder;
import com.intellij.openapi.actionSystem.ActionGroup;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleUtil;
import com.intellij.openapi.module.ModuleUtilCore;
import com.intellij.openapi.paths.PathReference;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VirtualFile;
@@ -39,6 +41,7 @@ import org.jetbrains.idea.devkit.module.PluginModuleType;
import org.jetbrains.idea.devkit.util.ActionType;
import org.jetbrains.idea.devkit.util.ComponentType;
import org.jetbrains.idea.devkit.util.DescriptorUtil;
import org.jetbrains.idea.devkit.util.PsiUtil;
import java.util.List;
import java.util.Set;
@@ -53,6 +56,30 @@ public abstract class DevKitInspectionBase extends BaseJavaLocalInspectionTool {
return DevKitBundle.message("inspections.group.name");
}
@NotNull
@Override
public final PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) {
return isAllowed(holder) ? buildInternalVisitor(holder, isOnTheFly) : PsiElementVisitor.EMPTY_VISITOR;
}
protected boolean isAllowed(ProblemsHolder holder) {
if (PsiUtil.isIdeaProject(holder.getProject())) {
return true;
}
Module module = ModuleUtilCore.findModuleForPsiElement(holder.getFile());
if (PluginModuleType.isPluginModuleOrDependency(module)) {
return true;
}
// always run in tests
return ApplicationManager.getApplication().isUnitTestMode();
}
protected PsiElementVisitor buildInternalVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) {
return super.buildVisitor(holder, isOnTheFly);
}
@Nullable
protected static Set<PsiClass> getRegistrationTypes(PsiClass psiClass, boolean includeActions) {
final Project project = psiClass.getProject();
@@ -62,7 +89,7 @@ public abstract class DevKitInspectionBase extends BaseJavaLocalInspectionTool {
final VirtualFile virtualFile = psiFile.getVirtualFile();
if (virtualFile == null) return null;
final Module module = ModuleUtil.findModuleForFile(virtualFile, project);
final Module module = ModuleUtilCore.findModuleForFile(virtualFile, project);
if (module == null) return null;
@@ -200,7 +227,7 @@ public abstract class DevKitInspectionBase extends BaseJavaLocalInspectionTool {
private void addType(PsiClass clazz) {
if (myTypes == null) {
//noinspection unchecked
myTypes = ContainerUtil.<PsiClass>newIdentityTroveSet(2);
myTypes = ContainerUtil.newIdentityTroveSet(2);
}
myTypes.add(clazz);
}
@@ -33,9 +33,9 @@ import org.jetbrains.idea.devkit.inspections.quickfix.ConvertToGrayQuickFix;
* @author Konstantin Bulenkov
*/
public class UseGrayInspection extends DevKitInspectionBase {
@NotNull
@Override
public PsiElementVisitor buildVisitor(@NotNull final ProblemsHolder holder, final boolean isOnTheFly) {
protected PsiElementVisitor buildInternalVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) {
return new JavaElementVisitor() {
@Override
public void visitNewExpression(PsiNewExpression expression) {
@@ -18,8 +18,8 @@ package org.jetbrains.idea.devkit.inspections.internal;
import com.intellij.codeInspection.ProblemHighlightType;
import com.intellij.codeInspection.ProblemsHolder;
import com.intellij.psi.*;
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.idea.devkit.inspections.DevKitInspectionBase;
import org.jetbrains.idea.devkit.inspections.quickfix.ChangeToPairCreateQuickFix;
import java.util.Arrays;
@@ -27,7 +27,7 @@ import java.util.Arrays;
/**
* @author Konstantin Bulenkov
*/
public class DontUseNewPairInspection extends InternalInspection {
public class DontUseNewPairInspection extends DevKitInspectionBase {
private static final String PAIR_FQN = "com.intellij.openapi.util.Pair";
@Override
@@ -19,8 +19,9 @@ import com.intellij.codeInspection.ProblemHighlightType;
import com.intellij.codeInspection.ProblemsHolder;
import com.intellij.psi.*;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.idea.devkit.inspections.DevKitInspectionBase;
public class FileEqualsUsageInspection extends InternalInspection {
public class FileEqualsUsageInspection extends DevKitInspectionBase {
static final String MESSAGE =
"Do not use File.equals/hashCode/compareTo as they don't honor case-sensitivity on MacOS. " +
"Please use FileUtil.filesEquals/fileHashCode/compareFiles instead";
@@ -23,10 +23,12 @@ import com.intellij.psi.util.InheritanceUtil;
import com.intellij.ui.ColoredListCellRenderer;
import com.intellij.ui.ListCellRendererWrapper;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.idea.devkit.inspections.DevKitInspectionBase;
import javax.swing.*;
public class GtkPreferredJComboBoxRendererInspection extends InternalInspection {
public class GtkPreferredJComboBoxRendererInspection extends DevKitInspectionBase {
private static final String COMBO_BOX_CLASS_NAME = JComboBox.class.getName();
private static final String[] RIGHT_RENDERER_CLASS_NAMES =
{ListCellRendererWrapper.class.getName(), ColoredListCellRenderer.class.getName()};
@@ -1,55 +0,0 @@
/*
* 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 org.jetbrains.idea.devkit.inspections.internal;
import com.intellij.codeInspection.BaseJavaLocalInspectionTool;
import com.intellij.codeInspection.ProblemsHolder;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleUtilCore;
import com.intellij.psi.PsiElementVisitor;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.idea.devkit.module.PluginModuleType;
import org.jetbrains.idea.devkit.util.PsiUtil;
public abstract class InternalInspection extends BaseJavaLocalInspectionTool {
@NotNull
@Override
public final PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) {
return isAllowed(holder) ? buildInternalVisitor(holder, isOnTheFly) : PsiElementVisitor.EMPTY_VISITOR;
}
private boolean isAllowed(ProblemsHolder holder) {
if (PsiUtil.isIdeaProject(holder.getProject())) {
return true;
}
Module module = ModuleUtilCore.findModuleForPsiElement(holder.getFile());
if (PluginModuleType.isPluginModuleOrDependency(module)) {
return true;
}
//seems that internal inspection tests should test in most cases the inspection
//and not that internal inspections are not available in non-idea non-plugin projects
return isAllowedByDefault();
}
protected boolean isAllowedByDefault() {
return ApplicationManager.getApplication().isUnitTestMode();
}
public abstract PsiElementVisitor buildInternalVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly);
}
@@ -28,12 +28,13 @@ import com.intellij.ui.treeStructure.Tree;
import com.intellij.util.QueryExecutor;
import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.idea.devkit.inspections.DevKitInspectionBase;
import javax.swing.*;
import java.awt.image.BufferedImage;
import java.util.Map;
public class UndesirableClassUsageInspection extends InternalInspection {
public class UndesirableClassUsageInspection extends DevKitInspectionBase {
private static final Map<String, String> CLASSES = ContainerUtil.<String, String>immutableMapBuilder()
.put(JList.class.getName(), JBList.class.getName())
@@ -25,8 +25,9 @@ import com.intellij.psi.*;
import com.intellij.psi.util.InheritanceUtil;
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.idea.devkit.inspections.DevKitInspectionBase;
public class UnsafeReturnStatementVisitorInspection extends InternalInspection {
public class UnsafeReturnStatementVisitorInspection extends DevKitInspectionBase {
private static final String BASE_WALKING_VISITOR_NAME = JavaRecursiveElementWalkingVisitor.class.getName();
private static final String BASE_VISITOR_NAME = JavaRecursiveElementVisitor.class.getName();
@@ -24,8 +24,9 @@ import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.util.InheritanceUtil;
import com.intellij.psi.util.PsiTreeUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.idea.devkit.inspections.DevKitInspectionBase;
public class UnsafeVfsRecursionInspection extends InternalInspection {
public class UnsafeVfsRecursionInspection extends DevKitInspectionBase {
private static final String VIRTUAL_FILE_CLASS_NAME = VirtualFile.class.getName();
private static final String GET_CHILDREN_METHOD_NAME = "getChildren";
@@ -20,6 +20,7 @@ import com.intellij.codeInspection.ProblemsHolder;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.*;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.idea.devkit.inspections.DevKitInspectionBase;
import org.jetbrains.idea.devkit.inspections.quickfix.UseCoupleQuickFix;
import java.util.List;
@@ -27,7 +28,7 @@ import java.util.List;
/**
* @author Konstantin Bulenkov
*/
public class UseCoupleInspection extends InternalInspection {
public class UseCoupleInspection extends DevKitInspectionBase {
private static final String PAIR_FQN = "com.intellij.openapi.util.Pair";
@Override
@@ -26,12 +26,13 @@ import com.intellij.util.ui.JBInsets;
import com.intellij.util.ui.JBUI;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.idea.devkit.inspections.DevKitInspectionBase;
import org.jetbrains.idea.devkit.inspections.quickfix.ConvertToJBInsetsQuickFix;
/**
* @author Konstantin Bulenkov
*/
public class UseDPIAwareInsetsInspection extends InternalInspection {
public class UseDPIAwareInsetsInspection extends DevKitInspectionBase {
@Override
public PsiElementVisitor buildInternalVisitor(@NotNull final ProblemsHolder holder, final boolean isOnTheFly) {
return new JavaElementVisitor() {
@@ -26,6 +26,7 @@ import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.ui.JBColor;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.idea.devkit.inspections.DevKitInspectionBase;
import org.jetbrains.idea.devkit.inspections.quickfix.ConvertToJBColorConstantQuickFix;
import org.jetbrains.idea.devkit.inspections.quickfix.ConvertToJBColorQuickFix;
@@ -34,7 +35,7 @@ import java.awt.*;
/**
* @author Konstantin Bulenkov
*/
public class UseJBColorInspection extends InternalInspection {
public class UseJBColorInspection extends DevKitInspectionBase {
@Override
public PsiElementVisitor buildInternalVisitor(@NotNull final ProblemsHolder holder, final boolean isOnTheFly) {
return new JavaElementVisitor() {
@@ -27,8 +27,9 @@ import com.siyeh.ig.PsiReplacementUtil;
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.idea.devkit.inspections.DevKitInspectionBase;
public class UsePrimitiveTypesInspection extends InternalInspection {
public class UsePrimitiveTypesInspection extends DevKitInspectionBase {
@Override
public PsiElementVisitor buildInternalVisitor(@NotNull final ProblemsHolder holder, final boolean isOnTheFly) {
return new JavaElementVisitor() {
@@ -22,11 +22,12 @@ import com.intellij.psi.*;
import com.intellij.psi.util.InheritanceUtil;
import com.siyeh.ig.psiutils.ComparisonUtils;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.idea.devkit.inspections.DevKitInspectionBase;
/**
* @author peter
*/
public class UseVirtualFileEqualsInspection extends InternalInspection {
public class UseVirtualFileEqualsInspection extends DevKitInspectionBase {
@Override
public PsiElementVisitor buildInternalVisitor(@NotNull final ProblemsHolder holder, boolean isOnTheFly) {
return new JavaElementVisitor() {