IDEA-201258 Highlight usages of @ScheduledForRemoval elements only if they reside in libraries

This commit is contained in:
Yaroslav Pankratyev
2018-11-07 19:07:04 +07:00
parent 58f1fd39d2
commit 89e007df91
3 changed files with 13 additions and 21 deletions
@@ -3,11 +3,15 @@ package com.intellij.codeInspection;
import com.intellij.analysis.JvmAnalysisBundle;
import com.intellij.codeInspection.ui.SingleCheckboxOptionsPanel;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.ProjectFileIndex;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.*;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.util.PsiUtilCore;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.uast.UImportStatement;
@@ -31,7 +35,7 @@ public abstract class AnnotatedElementInspectionBase extends LocalInspectionTool
protected abstract void createProblem(@NotNull PsiReference reference, @NotNull ProblemsHolder holder);
protected boolean shouldProcessElement(@NotNull PsiModifierListOwner element) {
return true;
return isLibraryElement(element);
}
@@ -133,4 +137,12 @@ public abstract class AnnotatedElementInspectionBase extends LocalInspectionTool
// references are not PsiQualifiedReference for annotation attributes
return StringUtil.getShortName(reference.getCanonicalText());
}
private static boolean isLibraryElement(@NotNull PsiElement element) {
if (ApplicationManager.getApplication().isUnitTestMode()) {
return true;
}
VirtualFile containingVirtualFile = PsiUtilCore.getVirtualFile(element);
return containingVirtualFile != null && ProjectFileIndex.getInstance(element.getProject()).isInLibraryClasses(containingVirtualFile);
}
}
@@ -2,7 +2,6 @@
package com.intellij.codeInspection;
import com.intellij.analysis.JvmAnalysisBundle;
import com.intellij.psi.PsiModifierListOwner;
import com.intellij.psi.PsiReference;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
@@ -3,13 +3,7 @@ package com.intellij.codeInspection;
import com.intellij.analysis.JvmAnalysisBundle;
import com.intellij.codeInspection.util.SpecialAnnotationsUtil;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.roots.ProjectFileIndex;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiModifierListOwner;
import com.intellij.psi.PsiReference;
import com.intellij.psi.util.PsiUtilCore;
import com.siyeh.ig.ui.ExternalizableStringSet;
import org.jetbrains.annotations.NotNull;
@@ -41,11 +35,6 @@ public class UnstableApiUsageInspection extends AnnotatedElementInspectionBase {
holder.registerProblem(reference, message, ProblemHighlightType.GENERIC_ERROR_OR_WARNING);
}
@Override
protected boolean shouldProcessElement(@NotNull PsiModifierListOwner element) {
return isLibraryElement(element);
}
@NotNull
@Override
public JPanel createOptionsPanel() {
@@ -60,12 +49,4 @@ public class UnstableApiUsageInspection extends AnnotatedElementInspectionBase {
panel.add(annotationsListControl, BorderLayout.CENTER);
return panel;
}
private static boolean isLibraryElement(@NotNull PsiElement element) {
if (ApplicationManager.getApplication().isUnitTestMode()) {
return true;
}
VirtualFile containingVirtualFile = PsiUtilCore.getVirtualFile(element);
return containingVirtualFile != null && ProjectFileIndex.getInstance(element.getProject()).isInLibraryClasses(containingVirtualFile);
}
}