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;
}