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. You can either create one and set individual fields, or mimic a CLI run by usingextractParameters
.There are several aspects to the configuration of PMD.
The aspects related to generic PMD behavior:
- Suppress marker is used in source files to suppress a RuleViolation,
defaults to
PMD.SUPPRESS_MARKER
.getSuppressMarker()
- The number of threads to create when invoking on multiple files, defaults
one thread per available processor.
getThreads()
- A ClassLoader to use when loading classes during Rule processing (e.g.
during type resolution), defaults to ClassLoader of the Configuration class.
getClassLoader()
- A means to configure a ClassLoader using a prepended classpath String,
instead of directly setting it programmatically.
prependAuxClasspath(String)
- A LanguageVersionDiscoverer instance, which defaults to using the default
LanguageVersion of each Language. Means are provided to change the
LanguageVersion for each Language.
getLanguageVersionDiscoverer()
The aspects related to Rules and Source files are:
- A comma separated list of RuleSets URIs.
getRuleSets()
- A minimum priority threshold when loading Rules from RuleSets, defaults
to
RulePriority.LOW
.getMinimumPriority()
- The character encoding of source files, defaults to the system default as
returned by
System.getProperty("file.encoding")
.AbstractConfiguration.getSourceEncoding()
- A comma separated list of input paths to process for source files. This
may include files, directories, archives (e.g. ZIP files), etc.
getInputPaths()
- A flag which controls, whether
RuleSetFactoryCompatibility
filter should be used or not: #isRuleSetFactoryCompatibilityEnabled;
- The renderer format to use for Reports.
getReportFormat()
- The file to which the Report should render.
getReportFile()
- Configure the root paths that are used to relativize file names in reports via
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()
The aspects related to special PMD behavior are:
- An indicator of whether PMD should log debug information.
AbstractConfiguration.isDebug()
- An indicator of whether PMD should perform stress testing behaviors, such
as randomizing the order of file processing.
isStressTest()
- An indicator of whether PMD should log benchmarking information.
isBenchmark()
- Suppress marker is used in source files to suppress a RuleViolation,
defaults to
-
-
Field Summary
Fields Modifier and Type Field Description static String
DEFAULT_SUPPRESS_MARKER
The default suppress marker string.
-
Constructor Summary
Constructors Constructor Description PMDConfiguration()
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description void
addInputPath(String inputPath)
Deprecated.void
addInputPath(Path inputPath)
Add an input path.void
addRelativizeRoot(Path path)
Set the path used to shorten paths output in the report.void
addRelativizeRoots(List<Path> paths)
Add several paths to shorten paths that are output in the report.void
addRuleSet(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.List<String>
getAllInputPaths()
Deprecated.AnalysisCache
getAnalysisCache()
Retrieves the currently used analysis cache.ClassLoader
getClassLoader()
Get the ClassLoader being used by PMD when processing Rules.LanguageVersion
getForceLanguageVersion()
Get the LanguageVersion specified by the force-language parameter.Path
getIgnoreFile()
String
getIgnoreFilePath()
Deprecated.UsegetIgnoreFile()
Path
getInputFile()
String
getInputFilePath()
Deprecated.UsegetInputFile()
List<Path>
getInputPathList()
Returns an unmodifiable list.String
getInputPaths()
Deprecated.String
getInputUri()
Deprecated.UsegetUri()
LanguageVersionDiscoverer
getLanguageVersionDiscoverer()
Get the LanguageVersionDiscoverer, used to determine the LanguageVersion of a source file.LanguageVersion
getLanguageVersionOfFile(String fileName)
Get the LanguageVersion of the source file with given name.RulePriority
getMinimumPriority()
Get the minimum priority threshold when loading Rules from RuleSets.List<Path>
getRelativizeRoots()
Returns the paths used to shorten paths output in the report.String
getReportFile()
Deprecated.Path
getReportFilePath()
Get the file to which the report should render.String
getReportFormat()
Get the report format.Properties
getReportProperties()
Get the Report properties.List<String>
getRuleSetPaths()
Returns the list of ruleset URIs.String
getRuleSets()
Deprecated.String
getSuppressMarker()
Get the suppress marker.int
getThreads()
Get the number of threads to use when processing Rules.URI
getUri()
Get the input URI to process for source code objects.boolean
isBenchmark()
Deprecated.This behavior is down to CLI, not part of the core analysis.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
isForceLanguageVersion()
Is the force-language parameter set to anything?boolean
isIgnoreIncrementalAnalysis()
Returns whether incremental analysis was explicitly disabled by the user or not.boolean
isReportShortNames()
Deprecated.boolean
isRuleSetFactoryCompatibilityEnabled()
Checks if the rule set factory compatibility feature is enabled.boolean
isShowSuppressedViolations()
Get whether the report should show suppressed violations.boolean
isStressTest()
Deprecated.For removalvoid
prependAuxClasspath(String classpath)
Prepend the specified classpath like string to the current ClassLoader of the configuration.void
prependClasspath(String classpath)
Deprecated.UseprependAuxClasspath(String)
, which doesn't throw a checkedIOException
void
setAnalysisCache(AnalysisCache cache)
Sets the analysis cache to be used.void
setAnalysisCacheLocation(String cacheLocation)
Sets the location of the analysis cache to be used.void
setBenchmark(boolean benchmark)
Deprecated.This behavior is down to CLI, not part of the core analysis.void
setClassLoader(ClassLoader classLoader)
Set the ClassLoader being used by PMD when processing Rules.void
setDefaultLanguageVersion(LanguageVersion languageVersion)
Set the given LanguageVersion as the current default for it's Language.void
setDefaultLanguageVersions(List<LanguageVersion> languageVersions)
Set the given LanguageVersions as the current default for their Languages.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
setForceLanguageVersion(LanguageVersion forceLanguageVersion)
Set the LanguageVersion specified by the force-language parameter.void
setIgnoreFilePath(String ignoreFilePath)
Deprecated.void
setIgnoreFilePath(Path ignoreFilePath)
The input file path points to a single file, which contains a comma-separated list of source file names to ignore.void
setIgnoreIncrementalAnalysis(boolean noCache)
Sets whether the user has explicitly disabled incremental analysis or not.void
setInputFilePath(String inputFilePath)
Deprecated.void
setInputFilePath(Path inputFilePath)
The input file path points to a single file, which contains a comma-separated list of source file names to process.void
setInputPathList(List<Path> inputPaths)
Set the input paths to the given list of paths.void
setInputPaths(String inputPaths)
Deprecated.void
setInputPaths(List<String> inputPaths)
Deprecated.void
setInputUri(String inputUri)
Deprecated.UsesetInputUri(URI)
void
setInputUri(URI inputUri)
Set the input URI to process for source code objects.void
setMinimumPriority(RulePriority minimumPriority)
Set the minimum priority threshold when loading Rules from RuleSets.void
setReportFile(String reportFile)
Deprecated.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
setReportShortNames(boolean reportShortNames)
Deprecated.for removal.void
setRuleSetFactoryCompatibilityEnabled(boolean ruleSetFactoryCompatibilityEnabled)
Sets the rule set factory compatibility feature enabled/disabled.void
setRuleSets(String ruleSets)
Deprecated.UsesetRuleSets(List)
oraddRuleSet(String)
.void
setRuleSets(List<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
setStressTest(boolean stressTest)
Deprecated.For removal.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
getSourceEncoding, isDebug, setDebug, setSourceEncoding
-
-
-
-
Field Detail
-
DEFAULT_SUPPRESS_MARKER
public static final String DEFAULT_SUPPRESS_MARKER
The default suppress marker string.- See Also:
- Constant Field Values
-
-
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
-
prependClasspath
@Deprecated public void prependClasspath(String classpath) throws IOException
Deprecated.UseprependAuxClasspath(String)
, which doesn't throw a checkedIOException
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.- Parameters:
classpath
- The prepended classpath.- Throws:
IOException
- if the given classpath is invalid (e.g. does not exist)- See Also:
setClassLoader(ClassLoader)
,ClasspathClassLoader
-
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.- Parameters:
classpath
- The prepended classpath.- Throws:
IllegalArgumentException
- if the given classpath is invalid (e.g. does not exist)- See Also:
setClassLoader(ClassLoader)
-
getLanguageVersionDiscoverer
public LanguageVersionDiscoverer getLanguageVersionDiscoverer()
Get the LanguageVersionDiscoverer, used to determine the LanguageVersion of a source file.- Returns:
- The LanguageVersionDiscoverer.
-
getForceLanguageVersion
public LanguageVersion getForceLanguageVersion()
Get the LanguageVersion specified by the force-language parameter. This overrides detection based on file extensions- Returns:
- The LanguageVersion.
-
isForceLanguageVersion
public boolean isForceLanguageVersion()
Is the force-language parameter set to anything?- Returns:
- true if $
getForceLanguageVersion()
is not null
-
setForceLanguageVersion
public void setForceLanguageVersion(LanguageVersion forceLanguageVersion)
Set the LanguageVersion specified by the force-language parameter. This overrides detection based on file extensions- Parameters:
forceLanguageVersion
- the language version
-
setDefaultLanguageVersion
public void setDefaultLanguageVersion(LanguageVersion languageVersion)
Set the given LanguageVersion as the current default for it's Language.- Parameters:
languageVersion
- the LanguageVersion
-
setDefaultLanguageVersions
public void setDefaultLanguageVersions(List<LanguageVersion> languageVersions)
Set the given LanguageVersions as the current default for their Languages.- Parameters:
languageVersions
- The LanguageVersions.
-
getLanguageVersionOfFile
public LanguageVersion getLanguageVersionOfFile(String fileName)
Get the LanguageVersion of the source file with given name. This depends on the fileName extension, and the java version.For compatibility with older code that does not always pass in a correct filename, unrecognized files are assumed to be java files.
- Parameters:
fileName
- Name of the file, can be absolute, or simple.- Returns:
- the LanguageVersion
-
getRuleSets
@Deprecated public String getRuleSets()
Deprecated.Get the comma separated list of RuleSet URIs.- Returns:
- The RuleSet URIs.
-
getRuleSetPaths
public List<String> getRuleSetPaths()
Returns the list of ruleset URIs.- See Also:
RuleSetLoader.loadFromResource(String)
-
setRuleSets
public void setRuleSets(List<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(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
-
setRuleSets
@Deprecated public void setRuleSets(String ruleSets)
Deprecated.UsesetRuleSets(List)
oraddRuleSet(String)
.Set the comma separated list of RuleSet URIs.- Parameters:
ruleSets
- the rulesets to set
-
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.
-
getInputPaths
@Deprecated public String getInputPaths()
Deprecated.Get the comma separated list of input paths to process for source files.- Returns:
- A comma separated list.
-
getAllInputPaths
@Deprecated public List<String> getAllInputPaths()
Deprecated.Returns an unmodifiable list.- Throws:
NullPointerException
- If the parameter is null
-
getInputPathList
public List<Path> getInputPathList()
Returns an unmodifiable list.- Throws:
NullPointerException
- If the parameter is null
-
setInputPaths
@Deprecated public void setInputPaths(String inputPaths)
Deprecated.Set the comma separated list of input paths to process for source files.- Parameters:
inputPaths
- The comma separated list.- Throws:
NullPointerException
- If the parameter is null
-
setInputPaths
@Deprecated public void setInputPaths(List<String> inputPaths)
Deprecated.Set the input paths to the given list of paths.- Throws:
NullPointerException
- If the parameter is null
-
setInputPathList
public void setInputPathList(List<Path> inputPaths)
Set the input paths to the given list of paths.- Throws:
NullPointerException
- If the parameter is null
-
addInputPath
@Deprecated public void addInputPath(String inputPath)
Deprecated.Add an input path. It is not split on commas.- Throws:
NullPointerException
- If the parameter is null
-
addInputPath
public void addInputPath(Path inputPath)
Add an input path. It is not split on commas.- Throws:
NullPointerException
- If the parameter is null
-
getInputFilePath
@Deprecated public String getInputFilePath()
Deprecated.UsegetInputFile()
-
getInputFile
public Path getInputFile()
-
getIgnoreFilePath
@Deprecated public String getIgnoreFilePath()
Deprecated.UsegetIgnoreFile()
-
getIgnoreFile
public Path getIgnoreFile()
-
setInputFilePath
@Deprecated public void setInputFilePath(String inputFilePath)
Deprecated.The input file path points to a single file, which contains a comma-separated list of source file names to process.- Parameters:
inputFilePath
- path to the file
-
setInputFilePath
public void setInputFilePath(Path inputFilePath)
The input file path points to a single file, which contains a comma-separated list of source file names to process.- Parameters:
inputFilePath
- path to the file
-
setIgnoreFilePath
@Deprecated public void setIgnoreFilePath(String ignoreFilePath)
Deprecated.The input file path points to a single file, which contains a comma-separated list of source file names to ignore.- Parameters:
ignoreFilePath
- path to the file
-
setIgnoreFilePath
public void setIgnoreFilePath(Path ignoreFilePath)
The input file path points to a single file, which contains a comma-separated list of source file names to ignore.- Parameters:
ignoreFilePath
- path to the file
-
getInputUri
@Deprecated public String getInputUri()
Deprecated.UsegetUri()
Get the input URI to process for source code objects.- Returns:
- URI
-
getUri
public URI getUri()
Get the input URI to process for source code objects.- Returns:
- URI
-
setInputUri
@Deprecated public void setInputUri(String inputUri)
Deprecated.UsesetInputUri(URI)
Set the input URI to process for source code objects.- Parameters:
inputUri
- a single URI
-
setInputUri
public void setInputUri(URI inputUri)
Set the input URI to process for source code objects.- Parameters:
inputUri
- a single URI
-
isReportShortNames
@Deprecated public boolean isReportShortNames()
Deprecated.Get whether to use File short names in Reports.- Returns:
true
when using short names in reports.
-
setReportShortNames
@Deprecated public void setReportShortNames(boolean reportShortNames)
Deprecated.for removal. UseaddRelativizeRoot(Path)
instead.Set whether to use File short names in Reports.- Parameters:
reportShortNames
-true
when using short names in reports.
-
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
-
getReportFile
@Deprecated public String getReportFile()
Deprecated.Get the file to which the report should render.- Returns:
- The file to which to render.
-
getReportFilePath
public Path getReportFilePath()
Get the file to which the report should render.- Returns:
- The file to which to render.
-
setReportFile
@Deprecated public void setReportFile(String reportFile)
Deprecated.Set the file to which the report should render.- Parameters:
reportFile
- the file to set
-
setReportFile
public void setReportFile(Path reportFile)
Set the file to which the report should render.- Parameters:
reportFile
- the file to set
-
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.
-
isStressTest
@Deprecated public boolean isStressTest()
Deprecated.For removalReturn the stress test indicator. If this value istrue
then PMD will randomize the order of file processing to attempt to shake out bugs.- Returns:
true
if stress test is enbaled,false
otherwise.
-
setStressTest
@Deprecated public void setStressTest(boolean stressTest)
Deprecated.For removal.Set the stress test indicator.- Parameters:
stressTest
- The stree test indicator to set.- See Also:
isStressTest()
-
isBenchmark
@Deprecated public boolean isBenchmark()
Deprecated.This behavior is down to CLI, not part of the core analysis.Return the benchmark indicator. If this value istrue
then PMD will log benchmark information.- Returns:
true
if benchmark logging is enbaled,false
otherwise.
-
setBenchmark
@Deprecated public void setBenchmark(boolean benchmark)
Deprecated.This behavior is down to CLI, not part of the core analysis.Set the benchmark indicator.- Parameters:
benchmark
- The benchmark indicator to set.- See Also:
isBenchmark()
-
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
-
isRuleSetFactoryCompatibilityEnabled
public boolean isRuleSetFactoryCompatibilityEnabled()
Checks if the rule set factory compatibility feature is enabled.- Returns:
- true, if the rule set factory compatibility feature is enabled
- See Also:
RuleSetFactoryCompatibility
-
setRuleSetFactoryCompatibilityEnabled
public void setRuleSetFactoryCompatibilityEnabled(boolean ruleSetFactoryCompatibilityEnabled)
Sets the rule set factory compatibility feature enabled/disabled.- Parameters:
ruleSetFactoryCompatibilityEnabled
-true
if the feature should be enabled- See Also:
RuleSetFactoryCompatibility
-
getAnalysisCache
public AnalysisCache getAnalysisCache()
Retrieves the currently used analysis cache. Will never be null.- Returns:
- The currently used analysis cache. Never null.
-
setAnalysisCache
public void setAnalysisCache(AnalysisCache cache)
Sets the analysis cache to be used. 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:
cache
- The analysis cache to be used.
-
setAnalysisCacheLocation
public void setAnalysisCacheLocation(String cacheLocation)
Sets the location of the analysis cache to be used. This will automatically configure and appropriate AnalysisCache implementation.- Parameters:
cacheLocation
- The location of the analysis cache to be used.
-
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
-
addRelativizeRoot
public void addRelativizeRoot(Path path)
Set the path used to shorten paths output in the report. The path does not need to exist. If it exists, it must point to a directory and not a file. SeegetRelativizeRoots()
for the interpretation.If several paths are added, the shortest paths possible are built.
- Parameters:
path
- A path- Throws:
IllegalArgumentException
- If the path points to a file, and not a directoryNullPointerException
- If the path is null
-
addRelativizeRoots
public void addRelativizeRoots(List<Path> paths)
Add several paths to shorten paths that are output in the report. SeeaddRelativizeRoot(Path)
.- Parameters:
paths
- A list of non-null paths- Throws:
IllegalArgumentException
- If any path points to a file, and not a directoryNullPointerException
- If the list, or any path in the list is null
-
getRelativizeRoots
public List<Path> getRelativizeRoots()
Returns the paths used to shorten paths output in the report.- If the list is empty, then paths are not touched (unless
isReportShortNames()
is true) - If the list is non-empty, then source file paths are relativized with all the items in the list. The shortest of these relative paths is taken as the display name of the file.
- If the list is empty, then paths are not touched (unless
-
-