Class PMDConfiguration

java.lang.Object
net.sourceforge.pmd.AbstractConfiguration
net.sourceforge.pmd.PMDConfiguration

public class PMDConfiguration extends AbstractConfiguration
This class contains the details for the runtime configuration of a PMD run. Once configured, use PmdAnalysis.create(PMDConfiguration) in a try-with-resources to execute the analysis (see PmdAnalysis).

Rulesets

  • You can configure paths to the rulesets to use with addRuleSet(String). These can be file paths or classpath resources.
  • Use setMinimumPriority(RulePriority) to control the minimum priority a rule must have to be included. Defaults to the lowest priority, ie all rules are loaded.

Source files

Rendering

Language configuration

Miscellaneous

  • Field Details

    • DEFAULT_SUPPRESS_MARKER

      public static final String DEFAULT_SUPPRESS_MARKER
      The default suppress marker string.
      See Also:
  • Constructor Details

    • PMDConfiguration

      public PMDConfiguration()
    • PMDConfiguration

      public PMDConfiguration(@NonNull LanguageRegistry languageRegistry)
  • Method Details

    • getSuppressMarker

      public String getSuppressMarker()
      Get the suppress marker. This is the source level marker used to indicate a RuleViolation should be suppressed.
      Returns:
      The suppress marker.
    • setSuppressMarker

      public void setSuppressMarker(String suppressMarker)
      Set the suppress marker.
      Parameters:
      suppressMarker - The suppress marker to use.
    • getThreads

      public int getThreads()
      Get the number of threads to use when processing Rules.
      Returns:
      The number of threads.
    • setThreads

      public void setThreads(int threads)
      Set the number of threads to use when processing Rules.
      Parameters:
      threads - The number of threads.
    • getClassLoader

      @Deprecated public ClassLoader getClassLoader()
      Deprecated.
      Since 7.27.0. Use getAuxClasspath() instead.
      Get the ClassLoader being used by PMD when analyzing code, e.g. Java.

      Since 7.27.0, this method will only return the classloader, that has been set explicitly via setClassLoader(ClassLoader). Instead of setting a classloader, the auxClasspath should be configured via setAuxClasspath(String) or prependAuxClasspath(String).

      See also the notes on setClassLoader(ClassLoader) regarding closing and supported types.

      Returns:
      The ClassLoader being used
    • setClassLoader

      @Deprecated public void setClassLoader(ClassLoader classLoader)
      Deprecated.
      Set the ClassLoader being used by PMD when analyzing code, e.g. Java. Setting a value of null will cause the default ClassLoader to be used.

      Since 7.27.0, a classloader should not be set anymore. Instead, the auxClasspath should be configured via setAuxClasspath(String) or prependAuxClasspath(String). For backwards compatibility, if setting a classloader here, it will still be used.

      Note 1: The classloader might keep open file references to jar files if it is not closed. A URLClassLoader is closeable and any given classloader that is Closeable will be closed, when PMD is called via PmdAnalysis. In other cases, e.g. not using PmdAnalysis, you need to close the classloader yourself.

      Note 2: Only subtypes of URLClassLoader are compatible with PMD, as for the incremental analysis we need to figure out the actual URLs of the classpath to check the validity of our cache.

      Parameters:
      classLoader - The ClassLoader to use
    • prependAuxClasspath

      public void prependAuxClasspath(String classpath)
      Prepend the specified classpath like string to the currently set auxClasspath of the configuration.

      Use setAuxClasspath(String) if you don't want any fallbacks (neither to PMD's runtime classpath nor to the current JVM runtime) and only access classes on the given auxClasspath.

      Specify the JVM's platform classpath yourself explicitly (e.g. adding jrt-fs.jar) in order to not fall back to the current JVM runtime.

      If the classpath String looks like a URL to a file (i.e. starts with file://) the file will be read with each line representing an entry on the classpath.

      You can specify multiple class paths separated by `:` on Unix-systems or `;` under Windows. See File.pathSeparator.

      Parameters:
      classpath - The additional classpath entries to be prepended.
      Throws:
      IllegalArgumentException - if the given classpath is invalid (e.g. does not exist)
      See Also:
    • setAuxClasspath

      public void setAuxClasspath(String classpath)
      Uses the specified classpath like string as the auxClasspath of the configuration.

      If the classpath String looks like a URL to a file (i.e. starts with file://) the file will be read with each line representing an entry on the classpath.

      You can specify multiple class paths separated by `:` on Unix-systems or `;` under Windows. See File.pathSeparator.

      Parameters:
      classpath - The classpath entries to be used.
      Throws:
      IllegalArgumentException - if the given classpath is invalid (e.g. does not exist)
      Since:
      7.27.0
      See Also:
    • getAuxClasspath

      public String getAuxClasspath()
      Gets the currently set auxClasspath.
      Returns:
      the configured auxClasspath. Might be null.
      Since:
      7.27.0
      See Also:
    • getRuleSetPaths

      public @NonNull List<@NonNull String> getRuleSetPaths()
      Returns the list of ruleset URIs.
      See Also:
    • setRuleSets

      public void setRuleSets(@NonNull List<@NonNull String> ruleSetPaths)
      Sets the list of ruleset paths to load when starting the analysis.
      Parameters:
      ruleSetPaths - A list of ruleset paths, understandable by RuleSetLoader.loadFromResource(String).
      Throws:
      NullPointerException - If the parameter is null
    • addRuleSet

      public void addRuleSet(@NonNull String rulesetPath)
      Add a new ruleset paths to load when starting the analysis. This list is initially empty.
      Parameters:
      rulesetPath - A ruleset path, understandable by RuleSetLoader.loadFromResource(String).
      Throws:
      NullPointerException - If the parameter is null
    • getMinimumPriority

      public RulePriority getMinimumPriority()
      Get the minimum priority threshold when loading Rules from RuleSets.
      Returns:
      The minimum priority threshold.
    • setMinimumPriority

      public void setMinimumPriority(RulePriority minimumPriority)
      Set the minimum priority threshold when loading Rules from RuleSets.
      Parameters:
      minimumPriority - The minimum priority.
    • createRenderer

      public Renderer createRenderer()
      Create a Renderer instance based upon the configured reporting options. No writer is created.
      Returns:
      renderer
    • createRenderer

      public Renderer createRenderer(boolean withReportWriter)
      Create a Renderer instance based upon the configured reporting options. If withReportWriter then we'll configure it with a writer for the reportFile specified.
      Parameters:
      withReportWriter - whether to configure a writer or not
      Returns:
      A Renderer instance.
    • getReportFormat

      public String getReportFormat()
      Get the report format.
      Returns:
      The report format.
    • setReportFormat

      public void setReportFormat(String reportFormat)
      Set the report format. This should be a name of a Renderer.
      Parameters:
      reportFormat - The report format.
      See Also:
    • isShowSuppressedViolations

      public boolean isShowSuppressedViolations()
      Get whether the report should show suppressed violations.
      Returns:
      true if showing suppressed violations, false otherwise.
    • setShowSuppressedViolations

      public void setShowSuppressedViolations(boolean showSuppressedViolations)
      Set whether the report should show suppressed violations.
      Parameters:
      showSuppressedViolations - true if showing suppressed violations, false otherwise.
    • getReportProperties

      public Properties getReportProperties()
      Get the Report properties. These are used to create the Renderer.
      Returns:
      The report properties.
    • setReportProperties

      public void setReportProperties(Properties reportProperties)
      Set the Report properties. These are used to create the Renderer.
      Parameters:
      reportProperties - The Report properties to set.
    • setAnalysisCacheLocation

      public void setAnalysisCacheLocation(String cacheLocation)
      Sets the location of the analysis cache to be used. This will automatically configure and appropriate AnalysisCache implementation. Setting a value of null will cause a Noop AnalysisCache to be used. If incremental analysis was explicitly disabled (isIgnoreIncrementalAnalysis()), then this method is a noop.
      Parameters:
      cacheLocation - The location of the analysis cache to be used. Use null to disable the cache.
    • setIgnoreIncrementalAnalysis

      public void setIgnoreIncrementalAnalysis(boolean noCache)
      Sets whether the user has explicitly disabled incremental analysis or not. If so, incremental analysis is not used, and all suggestions to use it are disabled. The analysis cached location is ignored, even if it's specified.
      Parameters:
      noCache - Whether to ignore incremental analysis or not
    • isIgnoreIncrementalAnalysis

      public boolean isIgnoreIncrementalAnalysis()
      Returns whether incremental analysis was explicitly disabled by the user or not.
      Returns:
      true if incremental analysis is explicitly disabled
    • checkLanguageIsAcceptable

      protected void checkLanguageIsAcceptable(Language lang) throws UnsupportedOperationException
      Description copied from class: AbstractConfiguration
      Check that it is correct to use the given language with this configuration.
      Overrides:
      checkLanguageIsAcceptable in class AbstractConfiguration
      Throws:
      UnsupportedOperationException - if the language isn't supported.