public void load()

in src/main/java/org/jetbrains/plugins/spotbugs/plugins/AbstractPluginLoader.java [60:157]


	public void load(@NotNull final Set<PluginSettings> settings) {

		PluginLoader.invalidate();

		// 1. unload plugins
		for (final Plugin plugin : Plugin.getAllPlugins()) {
			if (plugin.isCorePlugin()) {
				seenCorePlugin(plugin);
			} else {
				FindBugsCustomPluginUtil.unload(plugin);
			}
		}


		// 2. load bundled plugins and unload
		final IdeaPluginDescriptor ideaPluginDescriptor = FindBugsPluginUtil.getIdeaPluginDescriptor();
		Plugins.deploy(ideaPluginDescriptor);
		final File[] bundledPlugins = Plugins.getDirectory(ideaPluginDescriptor).listFiles();
    final Set<String> enabledBundledPluginUrls = new HashSet<>();
		if (bundledPlugins != null) {
			for (final File pluginFile : bundledPlugins) {
				if (!pluginFile.getName().endsWith(".jar")) {
					continue;
				}
				if (!pluginFile.isFile()) {
					continue;
				}
				if (!pluginFile.canRead()) {
					continue;
				}
				try {
					Plugin plugin = FindBugsCustomPluginUtil.loadTemporary(pluginFile);
					PluginSettings pluginSettings = PluginSettings.findBundledById(settings, plugin.getPluginId());
					if (pluginSettings == null) {
						pluginSettings = new PluginSettings();
						pluginSettings.id = plugin.getPluginId();
						pluginSettings.bundled = true;
						pluginSettings.enabled = false;
						seenBundledPlugin(PluginInfo.create(pluginSettings, plugin));
					} else {
						seenConfiguredPlugin(PluginInfo.create(pluginSettings, plugin));
					}
					if (pluginSettings.enabled) {
						enabledBundledPluginUrls.add(FindBugsCustomPluginUtil.getAsString(plugin));
					}
					FindBugsCustomPluginUtil.unload(plugin);
				} catch (final Exception e) {
					LOGGER.warn("Could not load plugin: " + pluginFile, e);
				}
			}
		}


		// 3. load user plugins and unload
		final Set<String> enabledUserPluginUrls = new HashSet<String>();
		for (final PluginSettings pluginSettings : settings) {
			if (pluginSettings.bundled) {
				continue;
			}
			final String pluginUrl = pluginSettings.url;
			try {
				final File pluginFile = FindBugsCustomPluginUtil.getAsFile(pluginUrl);
				if (!pluginFile.exists()) {
					final String error = ResourcesLoader.getString("error.path.exists", pluginFile.getPath());
					seenConfiguredPlugin(PluginInfo.create(pluginSettings, error));
					handleError(error);
					continue;
				}
				if (!pluginFile.isFile()) {
					final String error = ResourcesLoader.getString("error.file.type", pluginFile.getPath());
					seenConfiguredPlugin(PluginInfo.create(pluginSettings, error));
					handleError(error);
					continue;
				}
				if (!pluginFile.canRead()) {
					final String error = ResourcesLoader.getString("error.file.readable", pluginFile.getPath());
					seenConfiguredPlugin(PluginInfo.create(pluginSettings, error));
					handleError(error);
					continue;
				}
				final Plugin plugin = FindBugsCustomPluginUtil.loadTemporary(pluginUrl);
				seenConfiguredPlugin(PluginInfo.create(pluginSettings, plugin));
				if (pluginSettings.enabled) {
					enabledUserPluginUrls.add(pluginUrl);
				}
				FindBugsCustomPluginUtil.unload(plugin);
			} catch (final Exception e) {
				final String error = ResourcesLoader.getString("plugins.load.error.text.path", pluginUrl);
				seenConfiguredPlugin(PluginInfo.create(pluginSettings, error));
				handleFatalError(error, e);
			}
		}


		// 4. load enabled plugins
		loadPluginsPermanently(enabledBundledPluginUrls, false);
		loadPluginsPermanently(enabledUserPluginUrls, true);
	}