diff --git a/RegExpSupport/src/org/intellij/lang/regexp/inspection/custom/CustomRegExpInspection.java b/RegExpSupport/src/org/intellij/lang/regexp/inspection/custom/CustomRegExpInspection.java index c3acfe495d7c..9e8eac5642fd 100644 --- a/RegExpSupport/src/org/intellij/lang/regexp/inspection/custom/CustomRegExpInspection.java +++ b/RegExpSupport/src/org/intellij/lang/regexp/inspection/custom/CustomRegExpInspection.java @@ -8,6 +8,7 @@ import com.intellij.codeInspection.ex.*; import com.intellij.find.FindManager; import com.intellij.find.FindModel; import com.intellij.find.FindResult; +import com.intellij.lang.annotation.ProblemGroup; import com.intellij.modcommand.ModPsiUpdater; import com.intellij.modcommand.PsiUpdateModCommandQuickFix; import com.intellij.openapi.application.ApplicationManager; @@ -115,6 +116,10 @@ public final class CustomRegExpInspection extends LocalInspectionTool implements : new LocalQuickFix[] {new CustomRegExpQuickFix(findManager, model, text, result)}; final ProblemDescriptor descriptor = manager.createProblemDescriptor(element, warningRange, problemDescriptor, GENERIC_ERROR_OR_WARNING, isOnTheFly, fix); + descriptor.setProblemGroup(new ProblemGroup() { + @Override + public String getProblemName() { return uuid; } + }); descriptors.add(new ProblemDescriptorWithReporterName((ProblemDescriptorBase)descriptor, uuid)); result = findManager.findString(text, result.getEndOffset(), model, vFile); } @@ -135,12 +140,7 @@ public final class CustomRegExpInspection extends LocalInspectionTool implements } final String suppressId = configuration.getSuppressId(); final String name = configuration.getName(); - if (suppressId == null) { - HighlightDisplayKey.register(shortName, () -> name, SHORT_NAME, null, configuration); - } - else { - HighlightDisplayKey.register(shortName, () -> name, suppressId, SHORT_NAME, configuration); - } + HighlightDisplayKey.register(shortName, () -> name, StringUtil.isEmpty(suppressId) ? SHORT_NAME : suppressId, null, configuration); }, ModalityState.nonModal()); } diff --git a/platform/lang-impl/src/com/intellij/analysis/problemsView/toolWindow/HighlightingProblem.kt b/platform/lang-impl/src/com/intellij/analysis/problemsView/toolWindow/HighlightingProblem.kt index 88cc1bbeb605..12d7a9a2e326 100644 --- a/platform/lang-impl/src/com/intellij/analysis/problemsView/toolWindow/HighlightingProblem.kt +++ b/platform/lang-impl/src/com/intellij/analysis/problemsView/toolWindow/HighlightingProblem.kt @@ -1,4 +1,4 @@ -// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.analysis.problemsView.toolWindow import com.intellij.CommonBundle @@ -83,8 +83,8 @@ open class HighlightingProblem( override val group: String? get() { - val id = info?.inspectionToolId ?: return null - return HighlightDisplayKey.getDisplayNameByKey(HighlightDisplayKey.findById(id)) + val id = info?.problemGroup?.problemName ?: info?.inspectionToolId ?: return null + return HighlightDisplayKey.getDisplayNameByKey(HighlightDisplayKey.find(id)) } override val contextGroup: CodeInsightContext? diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/ProblemDescriptorWithReporterName.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/ProblemDescriptorWithReporterName.java index 74a4d1bd59e3..f82747a41d2e 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/ProblemDescriptorWithReporterName.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/ProblemDescriptorWithReporterName.java @@ -1,4 +1,4 @@ -// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.codeInsight.daemon.impl; import com.intellij.codeInspection.ProblemDescriptorBase; @@ -21,6 +21,7 @@ public final class ProblemDescriptorWithReporterName extends ProblemDescriptorBa pd.getHighlightType(), pd.isAfterEndOfLine(), pd.getTextRangeInElement(), pd.showTooltip(), pd.isOnTheFly(), pd.getTooltipTemplate() ); + setProblemGroup(pd.getProblemGroup()); myReportingToolShortName = reportingToolShortName; } diff --git a/platform/structuralsearch/source/com/intellij/structuralsearch/inspection/SSBasedInspection.java b/platform/structuralsearch/source/com/intellij/structuralsearch/inspection/SSBasedInspection.java index 07a04f4433e6..475b5001db19 100644 --- a/platform/structuralsearch/source/com/intellij/structuralsearch/inspection/SSBasedInspection.java +++ b/platform/structuralsearch/source/com/intellij/structuralsearch/inspection/SSBasedInspection.java @@ -1,4 +1,4 @@ -// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.structuralsearch.inspection; import com.intellij.codeInsight.daemon.HighlightDisplayKey; @@ -8,6 +8,7 @@ import com.intellij.codeInspection.*; import com.intellij.codeInspection.ex.*; import com.intellij.dupLocator.iterators.CountingNodeIterator; import com.intellij.dupLocator.iterators.NodeIterator; +import com.intellij.lang.annotation.ProblemGroup; import com.intellij.notification.NotificationGroupManager; import com.intellij.notification.NotificationType; import com.intellij.openapi.application.ApplicationManager; @@ -193,12 +194,7 @@ public class SSBasedInspection extends LocalInspectionTool implements DynamicGro } final String suppressId = configuration.getSuppressId(); final String name = configuration.getName(); - if (suppressId == null) { - HighlightDisplayKey.register(shortName, () -> name, SHORT_NAME, null, configuration); - } - else { - HighlightDisplayKey.register(shortName, () -> name, suppressId, SHORT_NAME, configuration); - } + HighlightDisplayKey.register(shortName, () -> name, StringUtil.isEmpty(suppressId) ? SHORT_NAME : suppressId, null, configuration); }, ModalityState.nonModal()); } @@ -340,19 +336,22 @@ public class SSBasedInspection extends LocalInspectionTool implements DynamicGro private void registerProblem(@NotNull MatchResult matchResult, @NotNull Configuration configuration, @NotNull ProblemsHolder holder) { final PsiElement element = matchResult.getMatch(); - PsiFile containingFile = element.getContainingFile(); - PsiFile templateFile = PsiUtilCore.getTemplateLanguageFile(containingFile); + final PsiFile containingFile = element.getContainingFile(); + final PsiFile templateFile = PsiUtilCore.getTemplateLanguageFile(containingFile); if (!element.isPhysical() || holder.getFile() != containingFile && holder.getFile() != templateFile) { return; } final LocalQuickFix fix = createQuickFix(element.getProject(), matchResult, configuration); final Configuration mainConfiguration = getMainConfiguration(configuration); final String name = ObjectUtils.notNull(mainConfiguration.getProblemDescriptor(), mainConfiguration.getName()); - final InspectionManager manager = holder.getManager(); final ProblemDescriptor descriptor = - manager.createProblemDescriptor(element, name, fix, GENERIC_ERROR_OR_WARNING, holder.isOnTheFly()); - final String toolName = configuration.getUuid(); - holder.registerProblem(new ProblemDescriptorWithReporterName((ProblemDescriptorBase)descriptor, toolName)); + holder.getManager().createProblemDescriptor(element, name, fix, GENERIC_ERROR_OR_WARNING, holder.isOnTheFly()); + final String uuid = mainConfiguration.getUuid(); + descriptor.setProblemGroup(new ProblemGroup() { + @Override + public String getProblemName() { return uuid; } + }); + holder.registerProblem(new ProblemDescriptorWithReporterName((ProblemDescriptorBase)descriptor, uuid)); } @Override