void (@Nullable Project project, @NotNull InspectionToolWrapper<?, ?> toolWrapper, @Nullable Map<? super String, List<String>> dependencies) { String shortName = toolWrapper.getShortName(); HighlightDisplayKey key = HighlightDisplayKey.find(shortName); if (key == null) { InspectionEP extension = toolWrapper.getExtension(); Computable<String> computable = extension == null || extension.displayName == null && extension.key == null ? new Computable.PredefinedValueComputable<>(toolWrapper.getDisplayName()) : extension::getDisplayName; if (toolWrapper instanceof LocalInspectionToolWrapper) { key = HighlightDisplayKey.register(shortName, computable, toolWrapper.getID(), ((LocalInspectionToolWrapper)toolWrapper).getAlternativeID()); } else { key = HighlightDisplayKey.register(shortName, computable, shortName); } } if (key == null) { LOG.error(shortName + " ; number of initialized tools: " + myTools.size()); return; } HighlightDisplayLevel baseLevel = myBaseProfile != null && myBaseProfile.getToolsOrNull(shortName, project) != null ? myBaseProfile.getErrorLevel(key, project) : HighlightDisplayLevel.DO_NOT_SHOW; HighlightDisplayLevel defaultLevel = toolWrapper.getDefaultLevel(); HighlightDisplayLevel level = baseLevel.getSeverity().compareTo(defaultLevel.getSeverity()) > 0 ? baseLevel : defaultLevel; boolean enabled = myBaseProfile != null && myBaseProfile.getToolsOrNull(shortName, project) != null ? myBaseProfile.isToolEnabled(key) : toolWrapper.isEnabledByDefault(); ToolsImpl toolsList = new ToolsImpl(toolWrapper, level, !myLockedProfile && enabled, enabled); Element element = myUninitializedSettings.remove(shortName); try { if (element != null) { element = element.clone(); getPathMacroManager().expandPaths(element); toolsList.readExternal(element, myProfileManager, dependencies); } else if (!myUninitializedSettings.containsKey(InspectionElementsMergerBase.getMergedMarkerName(shortName))) { InspectionElementsMergerBase merger = getMerger(shortName); Element merged = merger == null ? null : merger.merge(myUninitializedSettings); if (merged != null) { getPathMacroManager().expandPaths(merged); toolsList.readExternal(merged, myProfileManager, dependencies); } else if (isProfileLocked()) { // https://youtrack.jetbrains.com/issue/IDEA-158936 toolsList.setEnabled(false); if (toolsList.getNonDefaultTools() == null) { toolsList.getDefaultState().setEnabled(false); } } } } catch (InvalidDataException e) { LOG.error("Can't read settings for " + toolWrapper, e); } myTools.put(shortName, toolsList); }