From f10d28026e3438a9e054c3dbcab02dfb653ecbbd Mon Sep 17 00:00:00 2001 From: Dmitry Batkovich Date: Wed, 6 Sep 2017 11:42:01 +0300 Subject: [PATCH] unused declaration: show nodes with error suffix if error severity is chosen IDEA-177356 --- .../ui/DefaultInspectionToolPresentation.java | 13 ++--------- .../ui/InspectionToolPresentation.java | 22 +++++++++++++++++++ .../codeInspection/ui/RefElementNode.java | 7 +++++- 3 files changed, 30 insertions(+), 12 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInspection/ui/DefaultInspectionToolPresentation.java b/platform/lang-impl/src/com/intellij/codeInspection/ui/DefaultInspectionToolPresentation.java index f03e92171293..5809e690a19f 100644 --- a/platform/lang-impl/src/com/intellij/codeInspection/ui/DefaultInspectionToolPresentation.java +++ b/platform/lang-impl/src/com/intellij/codeInspection/ui/DefaultInspectionToolPresentation.java @@ -127,7 +127,7 @@ public class DefaultInspectionToolPresentation implements InspectionToolPresenta @Nullable @Override public HighlightSeverity getSeverity(@NotNull RefElement element) { - final PsiElement psiElement = element.getPointer().getContainingFile(); + final PsiElement psiElement = ((RefElement)element.getRefManager().getRefinedElement(element)).getPointer().getContainingFile(); if (psiElement != null) { final GlobalInspectionContextImpl context = getContext(); final String shortName = getSeverityDelegateName(); @@ -405,16 +405,7 @@ public class DefaultInspectionToolPresentation implements InspectionToolPresenta @NonNls Element problemClassElement = new Element(InspectionsBundle.message("inspection.export.results.problem.element.tag")); problemClassElement.addContent(myToolWrapper.getDisplayName()); - final HighlightSeverity severity; - if (refEntity instanceof RefElement){ - final RefElement refElement = (RefElement)refEntity; - severity = getSeverity(refElement); - } - else { - final InspectionProfile profile = InspectionProjectProfileManager.getInstance(getContext().getProject()).getCurrentProfile(); - final HighlightDisplayLevel level = profile.getErrorLevel(HighlightDisplayKey.find(myToolWrapper.getShortName()), psiElement); - severity = level.getSeverity(); - } + final HighlightSeverity severity = InspectionToolPresentation.getSeverity(refEntity, psiElement, this); if (severity != null) { ProblemHighlightType problemHighlightType = descriptor instanceof ProblemDescriptor diff --git a/platform/lang-impl/src/com/intellij/codeInspection/ui/InspectionToolPresentation.java b/platform/lang-impl/src/com/intellij/codeInspection/ui/InspectionToolPresentation.java index 9c4df3503090..399fbc00a74c 100644 --- a/platform/lang-impl/src/com/intellij/codeInspection/ui/InspectionToolPresentation.java +++ b/platform/lang-impl/src/com/intellij/codeInspection/ui/InspectionToolPresentation.java @@ -15,8 +15,11 @@ */ package com.intellij.codeInspection.ui; +import com.intellij.codeHighlighting.HighlightDisplayLevel; +import com.intellij.codeInsight.daemon.HighlightDisplayKey; import com.intellij.codeInsight.intention.IntentionAction; import com.intellij.codeInspection.CommonProblemDescriptor; +import com.intellij.codeInspection.InspectionProfile; import com.intellij.codeInspection.ProblemDescriptionsProcessor; import com.intellij.codeInspection.ex.*; import com.intellij.codeInspection.reference.RefElement; @@ -24,6 +27,8 @@ import com.intellij.codeInspection.reference.RefEntity; import com.intellij.codeInspection.reference.RefModule; import com.intellij.codeInspection.ui.util.SynchronizedBidiMultiMap; import com.intellij.lang.annotation.HighlightSeverity; +import com.intellij.profile.codeInspection.InspectionProjectProfileManager; +import com.intellij.psi.PsiElement; import org.jdom.Element; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -136,4 +141,21 @@ public interface InspectionToolPresentation extends ProblemDescriptionsProcessor void amnesty(@NotNull CommonProblemDescriptor descriptor); void exclude(@NotNull CommonProblemDescriptor descriptor); + + static HighlightSeverity getSeverity(@Nullable RefEntity entity, + @Nullable PsiElement psiElement, + @NotNull InspectionToolPresentation presentation) { + HighlightSeverity severity; + if (entity instanceof RefElement){ + final RefElement refElement = (RefElement)entity; + severity = presentation.getSeverity(refElement); + } + else { + final InspectionProfile profile = InspectionProjectProfileManager.getInstance(presentation.getContext().getProject()).getCurrentProfile(); + final HighlightDisplayLevel + level = profile.getErrorLevel(HighlightDisplayKey.find(presentation.getToolWrapper().getShortName()), psiElement); + severity = level.getSeverity(); + } + return severity; + } } diff --git a/platform/lang-impl/src/com/intellij/codeInspection/ui/RefElementNode.java b/platform/lang-impl/src/com/intellij/codeInspection/ui/RefElementNode.java index 969cbc7d74b9..6b96156b9784 100644 --- a/platform/lang-impl/src/com/intellij/codeInspection/ui/RefElementNode.java +++ b/platform/lang-impl/src/com/intellij/codeInspection/ui/RefElementNode.java @@ -22,6 +22,7 @@ import com.intellij.codeInspection.InspectionsBundle; import com.intellij.codeInspection.reference.RefDirectory; import com.intellij.codeInspection.reference.RefElement; import com.intellij.codeInspection.reference.RefEntity; +import com.intellij.lang.annotation.HighlightSeverity; import gnu.trove.TObjectIntHashMap; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -141,7 +142,11 @@ public class RefElementNode extends SuppressableInspectionTreeNode { @Override protected void visitProblemSeverities(TObjectIntHashMap counter) { if (!isExcluded() && isLeaf() && !getPresentation().isProblemResolved(getElement()) && !getPresentation().isSuppressed(getElement())) { - counter.put(HighlightDisplayLevel.WARNING, counter.get(HighlightDisplayLevel.WARNING) + 1); + HighlightSeverity severity = InspectionToolPresentation.getSeverity(getElement(), null, getPresentation()); + HighlightDisplayLevel level = HighlightDisplayLevel.find(severity); + if (!counter.adjustValue(level, 1)) { + counter.put(level, 1); + } return; } super.visitProblemSeverities(counter);