in src/main/java/org/jetbrains/plugins/spotbugs/gui/preferences/LegacyAbstractSettingsConverter.java [167:217]
private static void applyDetectorsAndPluginsTo(@NotNull final PersistencePreferencesBean from, @NotNull final AbstractSettings to) {
final LegacyPluginLoaderImpl legacyPluginLoader = new LegacyPluginLoaderImpl();
legacyPluginLoader.load(
from.getPlugins(),
from.getDisabledUserPluginIds(),
from.getEnabledBundledPluginIds(),
from.getDisabledBundledPluginIds()
);
final Map<String, Map<String, Boolean>> detectorDefaultEnabled = new HashMap<>();
for (final DetectorFactory detector : DetectorFactoryCollection.instance().getFactories()) {
detectorDefaultEnabled.computeIfAbsent(detector.getPlugin().getPluginId(), k -> new HashMap<>())
.put(detector.getShortName(), detector.isDefaultEnabled());
}
// core detectors
apply(from.getDetectors(), to.detectors, detectorDefaultEnabled.get(FindBugsPluginConstants.FINDBUGS_CORE_PLUGIN_ID));
// bundled plugins and detectors
for (final String bundledPluginId : new String[]{
Plugins.AndroidFindbugs.id,
Plugins.fb_contrib.id,
Plugins.findsecbugs_plugin.id
}) {
final boolean enabled = from.getEnabledBundledPluginIds() != null && from.getEnabledBundledPluginIds().contains(bundledPluginId);
final PluginSettings pluginSettings = new PluginSettings();
pluginSettings.id = bundledPluginId;
pluginSettings.enabled = enabled;
pluginSettings.bundled = true;
apply(from.getDetectors(), pluginSettings.detectors, detectorDefaultEnabled.get(bundledPluginId));
if (enabled || !pluginSettings.detectors.isEmpty()) {
to.plugins.add(pluginSettings);
}
}
// user plugins and detectors
final List<String> plugins = from.getPlugins();
if (plugins != null && !plugins.isEmpty()) {
for (final String pluginUrl : plugins) {
final String pluginId = legacyPluginLoader.userPluginIdByPluginUrl.get(pluginUrl);
if (!StringUtil.isEmptyOrSpaces(pluginId)) {
final PluginSettings pluginSettings = new PluginSettings();
pluginSettings.id = pluginId;
pluginSettings.enabled = from.getDisabledUserPluginIds() == null || !from.getDisabledUserPluginIds().contains(pluginId);
pluginSettings.url = pluginUrl;
apply(from.getDetectors(), pluginSettings.detectors, detectorDefaultEnabled.get(pluginId));
to.plugins.add(pluginSettings);
}
}
}
}