From c50b59a7a3323ddba92a12e6fdcfbeb7272537df Mon Sep 17 00:00:00 2001 From: anna Date: Mon, 5 Dec 2011 21:44:42 +0100 Subject: [PATCH] inspections view: beautify problem node with line when no reference was provided by inspection author! (IDEA-77918) (cherry picked from commit 8931206c1453200535124221189f5ffefeb75383) --- .../ui/ProblemDescriptionNode.java | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInspection/ui/ProblemDescriptionNode.java b/platform/lang-impl/src/com/intellij/codeInspection/ui/ProblemDescriptionNode.java index 4b54ed06293f..a30c768a71a0 100644 --- a/platform/lang-impl/src/com/intellij/codeInspection/ui/ProblemDescriptionNode.java +++ b/platform/lang-impl/src/com/intellij/codeInspection/ui/ProblemDescriptionNode.java @@ -17,6 +17,7 @@ package com.intellij.codeInspection.ui; import com.intellij.codeInspection.CommonProblemDescriptor; +import com.intellij.codeInspection.InspectionsBundle; import com.intellij.codeInspection.ProblemDescriptor; import com.intellij.codeInspection.ProblemHighlightType; import com.intellij.codeInspection.ex.DescriptorProviderInspection; @@ -117,26 +118,37 @@ public class ProblemDescriptionNode extends InspectionTreeNode { if (descriptor == null) return ""; PsiElement element = descriptor instanceof ProblemDescriptor ? ((ProblemDescriptor)descriptor).getPsiElement() : null; - return renderDescriptionMessage(descriptor, element).replaceAll("<[^>]*>", ""); + return renderDescriptionMessage(descriptor, element, true).replaceAll("<[^>]*>", ""); } @NotNull public static String renderDescriptionMessage(@NotNull CommonProblemDescriptor descriptor, PsiElement element) { + return renderDescriptionMessage(descriptor, element, false); + } + + @NotNull + public static String renderDescriptionMessage(@NotNull CommonProblemDescriptor descriptor, PsiElement element, boolean appendLineNumber) { String message = descriptor.getDescriptionTemplate(); // no message. Should not be the case if inspection correctly implemented. // noinspection ConstantConditions if (message == null) return ""; + if (message.contains("#ref")) { + String ref = extractHighlightedText(descriptor, element); + message = StringUtil.replace(message, "#ref", ref); + } else if (appendLineNumber && descriptor instanceof ProblemDescriptor && message.contains("#loc")) { + final int lineNumber = ((ProblemDescriptor)descriptor).getLineNumber(); + if (lineNumber >= 0) { + message = StringUtil.replace(message, "#loc", "(" + InspectionsBundle.message("inspection.export.results.at.line") + " " + lineNumber + ")"); + } + } message = StringUtil.replace(message, "", "'"); message = StringUtil.replace(message, "", "'"); message = StringUtil.replace(message, "#loc ", ""); message = StringUtil.replace(message, " #loc", ""); message = StringUtil.replace(message, "#loc", ""); - if (message.contains("#ref")) { - String ref = extractHighlightedText(descriptor, element); - message = StringUtil.replace(message, "#ref", ref); - } + final int endIndex = message.indexOf("#end"); if (endIndex > 0) { message = message.substring(0, endIndex);