Element (@NotNull Map<String, Element> inspectionElements, boolean includeDefaults) { LinkedHashMap<String, Element> scopes = new LinkedHashMap<>(); LinkedHashMap<String, Set<String>> mentionedTools = new LinkedHashMap<>(); boolean enabled = false; boolean enabledByDefault = false; String level = null; final Element toolElement = new Element(InspectionProfileImpl.INSPECTION_TOOL_TAG); for (String sourceToolName : getSourceToolNames()) { Element sourceElement = getSourceElement(inspectionElements, sourceToolName); if (sourceElement == null) { if (includeDefaults) { try { sourceElement = writeOldSettings(sourceToolName); } catch (WriteExternalException ignored) {} } else { enabledByDefault |= isEnabledByDefault(sourceToolName); enabled |= enabledByDefault; if (level == null) { level = getDefaultSeverityLevel(); } } } if (sourceElement != null) { collectContent(sourceToolName, sourceElement, toolElement, scopes, mentionedTools); enabled |= Boolean.parseBoolean(sourceElement.getAttributeValue(ToolsImpl.ENABLED_ATTRIBUTE)); enabledByDefault |= Boolean.parseBoolean(sourceElement.getAttributeValue(ToolsImpl.ENABLED_BY_DEFAULT_ATTRIBUTE)); if (level == null) { level = getLevel(sourceElement); } } } if (writeMergedContent(toolElement)) { toolElement.setAttribute(InspectionProfileImpl.CLASS_TAG, getMergedToolName()); toolElement.setAttribute(ToolsImpl.ENABLED_ATTRIBUTE, String.valueOf(enabled)); if (level != null) { toolElement.setAttribute(ToolsImpl.LEVEL_ATTRIBUTE, level); } toolElement.setAttribute(ToolsImpl.ENABLED_BY_DEFAULT_ATTRIBUTE, String.valueOf(enabledByDefault)); for (Map.Entry<String, Element> entry : scopes.entrySet()) { Element scopeEl = entry.getValue(); Set<String> toolsWithScope = mentionedTools.get(entry.getKey()); //copy default settings if tool has no such scope defined for (String sourceToolName : getSourceToolNames()) { if (!toolsWithScope.contains(sourceToolName)) { copyDefaultSettings(scopeEl, inspectionElements, sourceToolName); } } toolElement.addContent(scopeEl); } return toolElement; } return null; }