From 5b9190b3e520c125fbb370dd616edaba60efbc23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yann=20C=C3=A9bron?= Date: Fri, 4 Nov 2016 16:34:38 +0100 Subject: [PATCH] [devkit] merge InternalInspection into DevKitInspectionBase all inspections will now run only in plugin projects --- .../src/inspections/DevKitInspectionBase.java | 35 ++++++++++-- .../src/inspections/UseGrayInspection.java | 4 +- .../internal/DontUseNewPairInspection.java | 4 +- .../internal/FileEqualsUsageInspection.java | 3 +- ...kPreferredJComboBoxRendererInspection.java | 4 +- .../internal/InternalInspection.java | 55 ------------------- .../UndesirableClassUsageInspection.java | 3 +- ...nsafeReturnStatementVisitorInspection.java | 3 +- .../UnsafeVfsRecursionInspection.java | 3 +- .../internal/UseCoupleInspection.java | 3 +- .../internal/UseDPIAwareInsetsInspection.java | 3 +- .../internal/UseJBColorInspection.java | 3 +- .../internal/UsePrimitiveTypesInspection.java | 3 +- .../UseVirtualFileEqualsInspection.java | 3 +- 14 files changed, 56 insertions(+), 73 deletions(-) delete mode 100644 plugins/devkit/src/inspections/internal/InternalInspection.java diff --git a/plugins/devkit/src/inspections/DevKitInspectionBase.java b/plugins/devkit/src/inspections/DevKitInspectionBase.java index f254c1fc963c..d7c01a1fd45e 100644 --- a/plugins/devkit/src/inspections/DevKitInspectionBase.java +++ b/plugins/devkit/src/inspections/DevKitInspectionBase.java @@ -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 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.newIdentityTroveSet(2); + myTypes = ContainerUtil.newIdentityTroveSet(2); } myTypes.add(clazz); } diff --git a/plugins/devkit/src/inspections/UseGrayInspection.java b/plugins/devkit/src/inspections/UseGrayInspection.java index 19613f49ce7a..e6eb9e1f6ad6 100644 --- a/plugins/devkit/src/inspections/UseGrayInspection.java +++ b/plugins/devkit/src/inspections/UseGrayInspection.java @@ -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) { diff --git a/plugins/devkit/src/inspections/internal/DontUseNewPairInspection.java b/plugins/devkit/src/inspections/internal/DontUseNewPairInspection.java index 0edb17bbc9d6..df72ee90f79b 100644 --- a/plugins/devkit/src/inspections/internal/DontUseNewPairInspection.java +++ b/plugins/devkit/src/inspections/internal/DontUseNewPairInspection.java @@ -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 diff --git a/plugins/devkit/src/inspections/internal/FileEqualsUsageInspection.java b/plugins/devkit/src/inspections/internal/FileEqualsUsageInspection.java index b8cc8ae4cdd1..d4a628a4ab1b 100644 --- a/plugins/devkit/src/inspections/internal/FileEqualsUsageInspection.java +++ b/plugins/devkit/src/inspections/internal/FileEqualsUsageInspection.java @@ -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"; diff --git a/plugins/devkit/src/inspections/internal/GtkPreferredJComboBoxRendererInspection.java b/plugins/devkit/src/inspections/internal/GtkPreferredJComboBoxRendererInspection.java index b4e2e7726dc2..727be2ea4ef2 100644 --- a/plugins/devkit/src/inspections/internal/GtkPreferredJComboBoxRendererInspection.java +++ b/plugins/devkit/src/inspections/internal/GtkPreferredJComboBoxRendererInspection.java @@ -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()}; diff --git a/plugins/devkit/src/inspections/internal/InternalInspection.java b/plugins/devkit/src/inspections/internal/InternalInspection.java deleted file mode 100644 index 640ea051b665..000000000000 --- a/plugins/devkit/src/inspections/internal/InternalInspection.java +++ /dev/null @@ -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); -} diff --git a/plugins/devkit/src/inspections/internal/UndesirableClassUsageInspection.java b/plugins/devkit/src/inspections/internal/UndesirableClassUsageInspection.java index be3cc8d34cb3..b2f339d40480 100644 --- a/plugins/devkit/src/inspections/internal/UndesirableClassUsageInspection.java +++ b/plugins/devkit/src/inspections/internal/UndesirableClassUsageInspection.java @@ -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 CLASSES = ContainerUtil.immutableMapBuilder() .put(JList.class.getName(), JBList.class.getName()) diff --git a/plugins/devkit/src/inspections/internal/UnsafeReturnStatementVisitorInspection.java b/plugins/devkit/src/inspections/internal/UnsafeReturnStatementVisitorInspection.java index 545d2ec3f0ec..f7d2fe737407 100644 --- a/plugins/devkit/src/inspections/internal/UnsafeReturnStatementVisitorInspection.java +++ b/plugins/devkit/src/inspections/internal/UnsafeReturnStatementVisitorInspection.java @@ -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(); diff --git a/plugins/devkit/src/inspections/internal/UnsafeVfsRecursionInspection.java b/plugins/devkit/src/inspections/internal/UnsafeVfsRecursionInspection.java index 97201d8e0561..ad9b0ce5f82a 100644 --- a/plugins/devkit/src/inspections/internal/UnsafeVfsRecursionInspection.java +++ b/plugins/devkit/src/inspections/internal/UnsafeVfsRecursionInspection.java @@ -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"; diff --git a/plugins/devkit/src/inspections/internal/UseCoupleInspection.java b/plugins/devkit/src/inspections/internal/UseCoupleInspection.java index a79a85c30954..cd3f03e31922 100644 --- a/plugins/devkit/src/inspections/internal/UseCoupleInspection.java +++ b/plugins/devkit/src/inspections/internal/UseCoupleInspection.java @@ -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 diff --git a/plugins/devkit/src/inspections/internal/UseDPIAwareInsetsInspection.java b/plugins/devkit/src/inspections/internal/UseDPIAwareInsetsInspection.java index 0bdd0e1e2d93..ffec3d81d1ca 100644 --- a/plugins/devkit/src/inspections/internal/UseDPIAwareInsetsInspection.java +++ b/plugins/devkit/src/inspections/internal/UseDPIAwareInsetsInspection.java @@ -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() { diff --git a/plugins/devkit/src/inspections/internal/UseJBColorInspection.java b/plugins/devkit/src/inspections/internal/UseJBColorInspection.java index 68e1830fefe6..a3f22a747d37 100644 --- a/plugins/devkit/src/inspections/internal/UseJBColorInspection.java +++ b/plugins/devkit/src/inspections/internal/UseJBColorInspection.java @@ -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() { diff --git a/plugins/devkit/src/inspections/internal/UsePrimitiveTypesInspection.java b/plugins/devkit/src/inspections/internal/UsePrimitiveTypesInspection.java index 46a8e5c928ba..577690575995 100644 --- a/plugins/devkit/src/inspections/internal/UsePrimitiveTypesInspection.java +++ b/plugins/devkit/src/inspections/internal/UsePrimitiveTypesInspection.java @@ -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() { diff --git a/plugins/devkit/src/inspections/internal/UseVirtualFileEqualsInspection.java b/plugins/devkit/src/inspections/internal/UseVirtualFileEqualsInspection.java index ddbedb4e559f..cabae8f31b1d 100644 --- a/plugins/devkit/src/inspections/internal/UseVirtualFileEqualsInspection.java +++ b/plugins/devkit/src/inspections/internal/UseVirtualFileEqualsInspection.java @@ -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() {