boolean doImport()

in src/main/java/org/jetbrains/plugins/spotbugs/gui/settings/SonarProfileImporter.java [47:101]


	boolean doImport(@NotNull final Element profile, @NotNull final AbstractSettings settings) {
		final Element rules = profile.getChild("rules");
		if (rules == null) {
			handleError(ResourcesLoader.getString("sonar.import.error.noRules"));
			return false;
		}

		// disable all detectors (like legacy sonar importer logic)
		settings.detectors.clear();
		final Map<String, PluginSettings> settingsByPluginId = new HashMap<>();
		for (final PluginSettings pluginSettings : settings.plugins) {
			pluginSettings.detectors.clear();
			settingsByPluginId.put(pluginSettings.id, pluginSettings);
		}

		for (final DetectorFactory detector : DetectorFactoryCollection.instance().getFactories()) {
			Map<String, Boolean> detectors = settings.detectors;
			final PluginSettings pluginSettings = settingsByPluginId.get(detector.getPlugin().getPluginId());
			if (pluginSettings != null) {
				detectors = pluginSettings.detectors;
			}
			detectors.put(detector.getShortName(), false);
		}

		final Map<String, String> pluginIdByShortName = createIndexDetectorsPluginIdByShortName();
		final Map<String, Set<String>> shortNameByBugPatternType = createIndexShortNameByBugPatternType();

		final List ruleList = rules.getChildren("rule");
		for (final Object child : ruleList) {
			if (child instanceof Element) {
				final Element rule = (Element) child;
				final Element repositoryKey = rule.getChild("repositoryKey");
				final Element key = rule.getChild("key");
				if (repositoryKey != null && "findbugs".equals(repositoryKey.getValue()) && key != null) {
					final String bugPatternType = key.getValue();
					final Set<String> shortNames = shortNameByBugPatternType.get(bugPatternType);
					if (shortNames != null) {
						for (final String shortName : shortNames) {
							final String pluginId = pluginIdByShortName.get(shortName);
							final PluginSettings pluginSettings = settingsByPluginId.get(pluginId);
							Map<String, Boolean> detectors = settings.detectors;
							if (pluginSettings != null) {
								detectors = pluginSettings.detectors;
							}
							detectors.put(shortName, true);
						}
					} else {
						LOGGER.warn("Unknown bug pattern type: " + bugPatternType);
					}
				}
			}
		}
		return true;

	}