mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IJPL-227634 [inspections]: group by inspection correctly in Problems|File
fixes grouping for inspections with a separate suppressID and custom RegExp/SSR inspections GitOrigin-RevId: 5e736d5991b358483bb34ce6087f56bc59466909
This commit is contained in:
committed by
intellij-monorepo-bot
parent
fa8b6f52ca
commit
62b7fb77e7
+6
-6
@@ -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());
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -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?
|
||||
|
||||
+2
-1
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
+12
-13
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user