Package net.sourceforge.pmd
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, usePmdAnalysis.create(PMDConfiguration)
in a try-with-resources to execute the analysis (seePmdAnalysis
).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
- The default encoding of source files is the system default as
returned by
System.getProperty("file.encoding")
. You can set it withAbstractConfiguration.setSourceEncoding(Charset)
. - The source files to analyze can be given in many ways. See
AbstractConfiguration.addInputPath(Path)
AbstractConfiguration.setInputFilePath(Path)
,AbstractConfiguration.setInputUri(URI)
. - Files are assigned a language based on their name. The language
version of languages can be given with
AbstractConfiguration.setDefaultLanguageVersion(LanguageVersion)
. The default language assignment can be overridden withAbstractConfiguration.setForceLanguageVersion(LanguageVersion)
.
Rendering
- The renderer format to use for Reports.
getReportFormat()
- The file to which the Report should render.
getReportFilePath()
- Configure the root paths that are used to relativize file names in reports via
AbstractConfiguration.addRelativizeRoot(Path)
. This enables to get short names in reports. - The initialization properties to use when creating a Renderer instance.
getReportProperties()
- An indicator of whether to show suppressed Rule violations in Reports.
isShowSuppressedViolations()
Language configuration
- Use
setSuppressMarker(String)
to change the comment marker for suppression comments. Defaults to "NOPMD". - See
setClassLoader(ClassLoader)
andprependAuxClasspath(String)
for information for how to configure classpath for Java analysis. - You can set additional language properties with
AbstractConfiguration.getLanguageProperties(Language)
Miscellaneous
- Use
setThreads(int)
to control the parallelism of the analysis. Defaults one thread per available processor.getThreads()
- You can configure paths to the rulesets to use with
-
-
Field Summary
Fields Modifier and Type Field Description static String
DEFAULT_SUPPRESS_MARKER
The default suppress marker string.
-
Constructor Summary
Constructors Constructor Description PMDConfiguration()
PMDConfiguration(@NonNull LanguageRegistry languageRegistry)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addRuleSet(@NonNull String rulesetPath)
Add a new ruleset paths to load when starting the analysis.Renderer
createRenderer()
Create a Renderer instance based upon the configured reporting options.Renderer
createRenderer(boolean withReportWriter)
Create a Renderer instance based upon the configured reporting options.ClassLoader
getClassLoader()
Get the ClassLoader being used by PMD when processing Rules.RulePriority
getMinimumPriority()
Get the minimum priority threshold when loading Rules from RuleSets.Path
getReportFilePath()
Get the file to which the report should render.String
getReportFormat()
Get the report format.Properties
getReportProperties()
Get the Report properties.@NonNull List<@NonNull String>
getRuleSetPaths()
Returns the list of ruleset URIs.String
getSuppressMarker()
Get the suppress marker.int
getThreads()
Get the number of threads to use when processing Rules.boolean
isFailOnViolation()
Whether PMD should exit with status 4 (the default behavior, true) if violations are found or just with 0 (to not break the build, e.g.).boolean
isIgnoreIncrementalAnalysis()
Returns whether incremental analysis was explicitly disabled by the user or not.boolean
isShowSuppressedViolations()
Get whether the report should show suppressed violations.void
prependAuxClasspath(String classpath)
Prepend the specified classpath like string to the current ClassLoader of the configuration.void
setAnalysisCacheLocation(String cacheLocation)
Sets the location of the analysis cache to be used.void
setClassLoader(ClassLoader classLoader)
Set the ClassLoader being used by PMD when processing Rules.void
setFailOnViolation(boolean failOnViolation)
Sets whether PMD should exit with status 4 (the default behavior, true) if violations are found or just with 0 (to not break the build, e.g.).void
setIgnoreIncrementalAnalysis(boolean noCache)
Sets whether the user has explicitly disabled incremental analysis or not.void
setMinimumPriority(RulePriority minimumPriority)
Set the minimum priority threshold when loading Rules from RuleSets.void
setReportFile(Path reportFile)
Set the file to which the report should render.void
setReportFormat(String reportFormat)
Set the report format.void
setReportProperties(Properties reportProperties)
Set the Report properties.void
setRuleSets(@NonNull List<@NonNull String> ruleSetPaths)
Sets the list of ruleset paths to load when starting the analysis.void
setShowSuppressedViolations(boolean showSuppressedViolations)
Set whether the report should show suppressed violations.void
setSuppressMarker(String suppressMarker)
Set the suppress marker.void
setThreads(int threads)
Set the number of threads to use when processing Rules.-
Methods inherited from class net.sourceforge.pmd.AbstractConfiguration
addInputPath, addRelativizeRoot, addRelativizeRoots, collectFilesRecursively, collectFilesRecursively, getExcludes, getForceLanguageVersion, getIgnoreFile, getInputFile, getInputPathList, getLanguageProperties, getLanguageRegistry, getLanguageVersionDiscoverer, getLanguageVersionOfFile, getRelativizeRoots, getReporter, getSourceEncoding, getUri, isForceLanguageVersion, setDefaultLanguageVersion, setDefaultLanguageVersions, setExcludes, setForceLanguageVersion, setIgnoreFilePath, setInputFilePath, setInputPathList, setInputUri, setOnlyRecognizeLanguage, setReporter, setSourceEncoding
-
-
-
-
Field Detail
-
DEFAULT_SUPPRESS_MARKER
public static final String DEFAULT_SUPPRESS_MARKER
The default suppress marker string.- See Also:
- Constant Field Values
-
-
Constructor Detail
-
PMDConfiguration
public PMDConfiguration()
-
PMDConfiguration
public PMDConfiguration(@NonNull LanguageRegistry languageRegistry)
-
-
Method Detail
-
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
public ClassLoader getClassLoader()
Get the ClassLoader being used by PMD when processing Rules.- Returns:
- The ClassLoader being used
-
setClassLoader
public void setClassLoader(ClassLoader classLoader)
Set the ClassLoader being used by PMD when processing Rules. Setting a value ofnull
will cause the default ClassLoader to be used.- Parameters:
classLoader
- The ClassLoader to use
-
prependAuxClasspath
public void prependAuxClasspath(String classpath)
Prepend the specified classpath like string to the current ClassLoader of the configuration. If no ClassLoader is currently configured, the ClassLoader used to load thePMDConfiguration
class will be used as the parent ClassLoader of the created ClassLoader.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 prepended classpath.- Throws:
IllegalArgumentException
- if the given classpath is invalid (e.g. does not exist)- See Also:
setClassLoader(ClassLoader)
-
getRuleSetPaths
public @NonNull List<@NonNull String> getRuleSetPaths()
Returns the list of ruleset URIs.- See Also:
RuleSetLoader.loadFromResource(String)
-
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 byRuleSetLoader.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 byRuleSetLoader.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:
Renderer
-
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.
-
isFailOnViolation
public boolean isFailOnViolation()
Whether PMD should exit with status 4 (the default behavior, true) if violations are found or just with 0 (to not break the build, e.g.).- Returns:
- failOnViolation
-
setFailOnViolation
public void setFailOnViolation(boolean failOnViolation)
Sets whether PMD should exit with status 4 (the default behavior, true) if violations are found or just with 0 (to not break the build, e.g.).- Parameters:
failOnViolation
- failOnViolation
-
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 ofnull
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. Usenull
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
-
getReportFilePath
public Path getReportFilePath()
Get the file to which the report should render.- Returns:
- The file to which to render.
-
setReportFile
public void setReportFile(Path reportFile)
Set the file to which the report should render.- Parameters:
reportFile
- the file to set
-
-