void (@NotNull Set<? super Pair<TextRange, String>> emptyActionRegistered, @NotNull PsiFile file, @NotNull LocalInspectionToolWrapper toolWrapper, @NotNull HighlightSeverity severity, @NotNull ProblemDescriptor descriptor, @NotNull PsiElement element, @NotNull Consumer<? super HighlightInfo> outInfos) { SeverityRegistrar severityRegistrar = myProfileWrapper.getProfileManager().getSeverityRegistrar(); HighlightInfoType level = ProblemDescriptorUtil.highlightTypeFromDescriptor(descriptor, severity, severityRegistrar); ProblemPresentation presentation = ProblemDescriptorUtil.renderDescriptor(descriptor, element, ProblemDescriptorUtil.NONE); String message = presentation.getDescription(); ProblemGroup problemGroup = descriptor.getProblemGroup(); String problemName = problemGroup != null ? problemGroup.getProblemName() : null; String shortName = problemName != null ? problemName : toolWrapper.getShortName(); HighlightDisplayKey key = HighlightDisplayKey.find(shortName); InspectionProfile inspectionProfile = myProfileWrapper.getInspectionProfile(); if (!inspectionProfile.isToolEnabled(key, file)) { return; } HighlightInfoType type = new InspectionHighlightInfoType(level, element); String plainMessage = message.startsWith("<html>") ? StringUtil.unescapeXmlEntities(XmlStringUtil.stripHtml(message).replaceAll("<[^>]*>", "")) .replaceAll("&nbsp;|&#32;", " ") : message; @NlsSafe String tooltip = null; if (descriptor.showTooltip()) { String rendered = presentation.getTooltip(); tooltip = tooltips.intern(DaemonTooltipsUtil.getWrappedTooltip(rendered, shortName, showToolDescription(toolWrapper))); } List<IntentionAction> fixes = getQuickFixes(key, descriptor, emptyActionRegistered); HighlightInfo.Builder builder = highlightInfoFromDescriptor(descriptor, toolWrapper, type, plainMessage, tooltip, element, fixes, key, getColorsScheme(), severityRegistrar); if (builder == null) { return; } registerQuickFixes(builder, fixes, shortName); PsiFile context = getTopLevelFileInBaseLanguage(element, file.getProject()); PsiFile myContext = getTopLevelFileInBaseLanguage(file, file.getProject()); if (context != myContext) { String errorMessage = "Reported element " + element + " ("+element.getClass()+")"+ " is not from the file the inspection '" + shortName + "' (" + toolWrapper.getTool().getClass() + ") was invoked for. Message: '" + descriptor + "'.\nElement containing file: " + PsiUtilCore.getVirtualFile(context) + "\nInspection invoked for the file: " + PsiUtilCore.getVirtualFile(myContext) + "\n"; PluginException.logPluginError(LOG, errorMessage, null, toolWrapper.getTool().getClass()); } boolean isInInjected = myInspectInjectedPsi && file.getViewProvider() instanceof InjectedFileViewProvider; HighlightInfo info = builder.create(); if (info == null) { return; } info.toolId = toolWrapper.getShortName(); if (isInInjected) { Document documentRange = documentManager.getDocument(file); if (documentRange != null) { injectToHost(file, documentRange, element, fixes, info, shortName, outInfos); } } else { outInfos.accept(info); } }