Class PluginLoader

java.lang.Object
edu.umd.cs.findbugs.PluginLoader

public class PluginLoader extends Object
Loader for a FindBugs plugin. A plugin is a jar file containing two metadata files, "findbugs.xml" and "messages.xml". Those files specify
  • the bug pattern Detector classes,
  • the bug patterns detected (including all text for displaying detected instances of those patterns), and
  • the "bug codes" which group together related bug instances

The PluginLoader creates a Plugin object to store the Detector factories and metadata.

Author:
David Hovemeyer
See Also:
  • Constructor Details

    • PluginLoader

      @Deprecated public PluginLoader(URL url) throws PluginException
      Deprecated.
      Constructor.
      Parameters:
      url - the URL of the plugin Jar file
      Throws:
      PluginException - if the plugin cannot be fully loaded
    • PluginLoader

      @Deprecated public PluginLoader(URL url, ClassLoader parent) throws PluginException
      Deprecated.
      Use PluginLoader(URL,URI,ClassLoader,boolean,boolean) instead
      Constructor.
      Parameters:
      url - the URL of the plugin Jar file
      parent - the parent classloader
      Throws:
      PluginException
    • PluginLoader

      @Deprecated public PluginLoader() throws PluginException
      Deprecated.
      Constructor. Loads a plugin using the caller's class loader. This constructor should only be used to load the "core" findbugs detectors, which are built into findbugs.jar.
      Throws:
      PluginException
    • PluginLoader

      @Deprecated public PluginLoader(boolean fake, URL url)
      Deprecated.
      Fake plugin.
  • Method Details

    • hasParent

      public boolean hasParent()
    • getURL

      public URL getURL()
    • getURI

      public URI getURI()
    • getClassLoader

      public ClassLoader getClassLoader()
    • loadPlugin

      public Plugin loadPlugin() throws PluginException
      Get the Plugin.
      Throws:
      PluginException - if the plugin cannot be fully loaded
    • getPlugin

      public Plugin getPlugin()
    • getResource

      public URL getResource(String name)
      Get a resource using the URLClassLoader classLoader. We try findResource first because (based on experiment) we can trust it to prefer resources in the jarfile to resources on the filesystem. Simply calling classLoader.getResource() allows the filesystem to override the jarfile, which can mess things up if, for example, there is a findbugs.xml or messages.xml in the current directory.
      Parameters:
      name - resource to get
      Returns:
      URL for the resource, or null if it could not be found
    • loadFromFindBugsEtcDir

      @CheckForNull public static URL loadFromFindBugsEtcDir(String name)
    • loadFromFindBugsPluginDir

      @CheckForNull public static URL loadFromFindBugsPluginDir(String name)
    • getPluginDescriptor

      public org.dom4j.Document getPluginDescriptor() throws PluginException, PluginDoesntContainMetadataException
      Throws:
      PluginException
      PluginDoesntContainMetadataException
    • getPluginLoader

      public static PluginLoader getPluginLoader(URL url, ClassLoader parent, boolean isInitial, boolean optional) throws PluginException
      Throws:
      PluginException
    • getCorePluginLoader

      @Nonnull public static PluginLoader getCorePluginLoader()
    • isCorePlugin

      public boolean isCorePlugin()
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • validate

      public static PluginLoader.Summary validate(File file) throws IllegalArgumentException
      Throws:
      IllegalArgumentException