Class CheckstyleViolationCheckMojo
- java.lang.Object
-
- org.apache.maven.plugin.AbstractMojo
-
- org.apache.maven.plugins.checkstyle.CheckstyleViolationCheckMojo
-
- All Implemented Interfaces:
org.apache.maven.plugin.ContextEnabled
,org.apache.maven.plugin.Mojo
@Mojo(name="check", defaultPhase=VERIFY, requiresDependencyResolution=NONE, threadSafe=true) public class CheckstyleViolationCheckMojo extends org.apache.maven.plugin.AbstractMojo
Performs Checkstyle analysis and outputs violations or a count of violations to the console, potentially failing the build. It can also be configured to re-use an earlier analysis.
-
-
Field Summary
Fields Modifier and Type Field Description private java.lang.String
cacheFile
Specifies the cache file used to speed up Checkstyle on successive runs.protected CheckstyleExecutor
checkstyleExecutor
private org.codehaus.plexus.configuration.PlexusConfiguration
checkstyleRules
By using this property, you can specify the whole Checkstyle rules inline directly inside this pom.private java.lang.String
checkstyleRulesHeader
The header to use for the inline configuration.private java.lang.String
configLocation
Specifies the location of the XML configuration to use.private boolean
consoleOutput
Output errors to console.private static java.lang.String
DEFAULT_CONFIG_LOCATION
private boolean
excludeGeneratedSources
Specifies whether generated source files should be excluded from Checkstyle.private java.lang.String
excludes
Specifies the names filter of the source files to be excluded for Checkstyle.private boolean
failOnViolation
Fail the build on a violation.private boolean
failsOnError
If this is true, and Checkstyle reported any violations or errors, the build fails immediately after running Checkstyle, before checking the log forlogViolationsToConsole
.private java.lang.String
headerLocation
Specifies the location of the License file (a.k.a.private boolean
includeResources
Whether to apply Checkstyle to resource directories.private java.lang.String
includes
Specifies the names filter of the source files to be used for Checkstyle.private boolean
includeTestResources
Whether to apply Checkstyle to test resource directories.private boolean
includeTestSourceDirectory
Include or not the test source directory to be used for Checkstyle.private java.lang.String
inputEncoding
The file encoding to use when reading the source files.private static java.lang.String
JAVA_FILES
private boolean
logViolationCountToConsole
Output the detected violation count to the console.private boolean
logViolationsToConsole
Output the detected violations to the console.private int
maxAllowedViolations
The maximum number of allowed violations.private boolean
omitIgnoredModules
Specifies whether modules with a configured severity ofignore
should be omitted during Checkstyle invocation.private java.io.File
outputFile
Specifies the path and filename to save the Checkstyle output.private java.lang.String
outputFileFormat
Specifies the format of the output to be used when writing to the output file.private java.io.File
outputXmlFile
private org.apache.maven.plugin.descriptor.PluginDescriptor
plugin
The Plugin Descriptorprotected org.apache.maven.project.MavenProject
project
The Maven Project Object.private java.lang.String
propertiesLocation
Specifies the location of the properties file.private java.lang.String
propertyExpansion
Allows for specifying raw property expansion information.private java.lang.String
resourceExcludes
Specifies the names filter of the files to be excluded for Checkstyle when checking resources.private java.lang.String
resourceIncludes
Specifies the names filter of the files to be used for Checkstyle when checking resources.protected java.util.List<org.apache.maven.model.Resource>
resources
Specifies the location of the resources to be used for Checkstyle.private java.io.File
rulesFiles
Dump file for inlined Checkstyle rules.private boolean
skip
Skip entire check.private boolean
skipExec
Skip Checkstyle execution will only scan the outputFile.private java.util.List<java.lang.String>
sourceDirectories
Specifies the location of the source directories to be used for Checkstyle.private java.io.File
sourceDirectory
Deprecated.instead usesourceDirectories
.private java.io.ByteArrayOutputStream
stringOutputStream
private java.lang.String
suppressionsFileExpression
The key to be used in the properties for the suppressions file.private java.lang.String
suppressionsLocation
Specifies the location of the suppressions XML file to use.protected java.util.List<org.apache.maven.model.Resource>
testResources
Specifies the location of the test resources to be used for Checkstyle.private java.util.List<java.lang.String>
testSourceDirectories
Specifies the location of the test source directories to be used for Checkstyle.private java.io.File
testSourceDirectory
Deprecated.instead usetestSourceDirectories
.private java.io.File
useFile
Ifnull
, the Checkstyle plugin will display violations on stdout.private java.lang.String
violationIgnore
Violations to ignore.private java.lang.String
violationSeverity
The lowest severity level that is considered a violation.
-
Constructor Summary
Constructors Constructor Description CheckstyleViolationCheckMojo()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private void
checkDeprecatedParameterUsage(java.lang.Object parameter, java.lang.String name, java.lang.String replacement)
private java.util.List<org.apache.maven.artifact.Artifact>
collectArtifacts(java.lang.String hint)
private int
countViolations(java.util.List<Violation> violations)
void
execute()
private java.util.List<java.lang.String>
filterBuildTarget(java.util.List<java.lang.String> sourceDirectories)
private java.util.List<org.apache.maven.artifact.Artifact>
getCheckstylePluginDependenciesAsArtifacts(java.util.Map<java.lang.String,org.apache.maven.model.Plugin> plugins, java.lang.String hint)
private com.puppycrawl.tools.checkstyle.DefaultLogger
getConsoleListener()
private com.puppycrawl.tools.checkstyle.api.AuditListener
getListener()
private java.io.OutputStream
getOutputStream(java.io.File file)
private java.util.List<java.io.File>
getSourceDirectories()
private java.util.List<java.io.File>
getTestSourceDirectories()
private java.util.List<Violation>
getViolations(org.codehaus.plexus.util.xml.pull.XmlPullParser xpp)
private boolean
ignore(java.util.List<RuleUtil.Matcher> ignores, java.lang.String source)
private boolean
isViolation(java.lang.String severity)
Checks if the given severity is considered a violation.private void
log(java.lang.String severity, java.lang.String message)
private void
printViolations(java.util.List<Violation> violations)
-
-
-
Field Detail
-
JAVA_FILES
private static final java.lang.String JAVA_FILES
- See Also:
- Constant Field Values
-
DEFAULT_CONFIG_LOCATION
private static final java.lang.String DEFAULT_CONFIG_LOCATION
- See Also:
- Constant Field Values
-
outputFile
@Parameter(property="checkstyle.output.file", defaultValue="${project.build.directory}/checkstyle-result.xml") private java.io.File outputFile
Specifies the path and filename to save the Checkstyle output. The format of the output file is determined by theoutputFileFormat
parameter.
-
outputFileFormat
@Parameter(property="checkstyle.output.format", defaultValue="xml") private java.lang.String outputFileFormat
Specifies the format of the output to be used when writing to the output file. Valid values are "plain
", "sarif
" and "xml
".
-
failOnViolation
@Parameter(property="checkstyle.failOnViolation", defaultValue="true") private boolean failOnViolation
Fail the build on a violation. The goal checks for the violations after logging them (iflogViolationsToConsole
istrue
). Compare this tofailsOnError
which fails the build immediately before examining the output log.
-
maxAllowedViolations
@Parameter(property="checkstyle.maxAllowedViolations", defaultValue="0") private int maxAllowedViolations
The maximum number of allowed violations. The execution fails only if the number of violations is above this limit.- Since:
- 2.3
-
violationSeverity
@Parameter(property="checkstyle.violationSeverity", defaultValue="error") private java.lang.String violationSeverity
The lowest severity level that is considered a violation. Valid values are "error
", "warning
" and "info
".- Since:
- 2.2
-
violationIgnore
@Parameter(property="checkstyle.violation.ignore") private java.lang.String violationIgnore
Violations to ignore. This is a comma-separated list, each value being either a rule name, a rule category or a java package name of rule class.- Since:
- 2.13
-
skip
@Parameter(property="checkstyle.skip", defaultValue="false") private boolean skip
Skip entire check.- Since:
- 2.2
-
skipExec
@Parameter(property="checkstyle.skipExec", defaultValue="false") private boolean skipExec
Skip Checkstyle execution will only scan the outputFile.- Since:
- 2.5
-
logViolationsToConsole
@Parameter(property="checkstyle.console", defaultValue="true") private boolean logViolationsToConsole
Output the detected violations to the console.- Since:
- 2.3
-
logViolationCountToConsole
@Parameter(property="checkstyle.logViolationCount", defaultValue="true") private boolean logViolationCountToConsole
Output the detected violation count to the console.- Since:
- 3.0.1
-
resources
@Parameter(defaultValue="${project.resources}", readonly=true) protected java.util.List<org.apache.maven.model.Resource> resources
Specifies the location of the resources to be used for Checkstyle.- Since:
- 2.11
-
testResources
@Parameter(defaultValue="${project.testResources}", readonly=true) protected java.util.List<org.apache.maven.model.Resource> testResources
Specifies the location of the test resources to be used for Checkstyle.- Since:
- 2.16
-
configLocation
@Parameter(property="checkstyle.config.location", defaultValue="sun_checks.xml") private java.lang.String configLocation
Specifies the location of the XML configuration to use.
Potential values are a filesystem path, a URL, or a classpath resource. This parameter expects that the contents of the location conform to the xml format (Checkstyle Checker module) configuration of rulesets.
This parameter is resolved as resource, URL, then file. If successfully resolved, the contents of the configuration is copied into the
${project.build.directory}/checkstyle-configuration.xml
file before being passed to Checkstyle as a configuration.There are 2 predefined rulesets.
sun_checks.xml
: Sun Checks.google_checks.xml
: Google Checks.
- Since:
- 2.5
-
propertiesLocation
@Parameter(property="checkstyle.properties.location") private java.lang.String propertiesLocation
Specifies the location of the properties file.
This parameter is resolved as URL, File then resource. If successfully resolved, the contents of the properties location is copied into the
${project.build.directory}/checkstyle-checker.properties
file before being passed to Checkstyle for loading.The contents of the
propertiesLocation
will be made available to Checkstyle for specifying values for parameters within the xml configuration (specified in theconfigLocation
parameter).- Since:
- 2.5
-
propertyExpansion
@Parameter private java.lang.String propertyExpansion
Allows for specifying raw property expansion information.
-
headerLocation
@Parameter(property="checkstyle.header.file", defaultValue="LICENSE.txt") private java.lang.String headerLocation
Specifies the location of the License file (a.k.a. the header file) that can be used by Checkstyle to verify that source code has the correct license header.
You need to use
${checkstyle.header.file}
in your Checkstyle xml configuration to reference the name of this header file.For instance:
<module name="RegexpHeader"> <property name="headerFile" value="${checkstyle.header.file}"/> </module>
- Since:
- 2.0-beta-2
-
cacheFile
@Parameter(defaultValue="${project.build.directory}/checkstyle-cachefile") private java.lang.String cacheFile
Specifies the cache file used to speed up Checkstyle on successive runs.
-
suppressionsFileExpression
@Parameter(property="checkstyle.suppression.expression", defaultValue="checkstyle.suppressions.file") private java.lang.String suppressionsFileExpression
The key to be used in the properties for the suppressions file.- Since:
- 2.1
-
suppressionsLocation
@Parameter(property="checkstyle.suppressions.location") private java.lang.String suppressionsLocation
Specifies the location of the suppressions XML file to use.
This parameter is resolved as resource, URL, then file. If successfully resolved, the contents of the suppressions XML is copied into the
${project.build.directory}/checkstyle-suppressions.xml
file before being passed to Checkstyle for loading.See
suppressionsFileExpression
for the property that will be made available to your Checkstyle configuration.- Since:
- 2.0-beta-2
-
inputEncoding
@Parameter(property="encoding", defaultValue="${project.build.sourceEncoding}") private java.lang.String inputEncoding
The file encoding to use when reading the source files. If the propertyproject.build.sourceEncoding
is not set, the platform default encoding is used. Note: This parameter always overrides the propertycharset
from Checkstyle'sTreeWalker
module.- Since:
- 2.2
-
checkstyleExecutor
@Component(role=CheckstyleExecutor.class, hint="default") protected CheckstyleExecutor checkstyleExecutor
- Since:
- 2.5
-
consoleOutput
@Parameter(property="checkstyle.consoleOutput", defaultValue="false") private boolean consoleOutput
Output errors to console.
-
project
@Parameter(defaultValue="${project}", readonly=true, required=true) protected org.apache.maven.project.MavenProject project
The Maven Project Object.
-
plugin
@Parameter(defaultValue="${plugin}", readonly=true, required=true) private org.apache.maven.plugin.descriptor.PluginDescriptor plugin
The Plugin Descriptor
-
useFile
@Parameter private java.io.File useFile
Ifnull
, the Checkstyle plugin will display violations on stdout. Otherwise, a text file will be created with the violations.
-
excludes
@Parameter(property="checkstyle.excludes") private java.lang.String excludes
Specifies the names filter of the source files to be excluded for Checkstyle.
-
includes
@Parameter(property="checkstyle.includes", defaultValue="**\\/*.java", required=true) private java.lang.String includes
Specifies the names filter of the source files to be used for Checkstyle.
-
resourceExcludes
@Parameter(property="checkstyle.resourceExcludes") private java.lang.String resourceExcludes
Specifies the names filter of the files to be excluded for Checkstyle when checking resources.- Since:
- 2.11
-
resourceIncludes
@Parameter(property="checkstyle.resourceIncludes", defaultValue="**/*.properties", required=true) private java.lang.String resourceIncludes
Specifies the names filter of the files to be used for Checkstyle when checking resources.- Since:
- 2.11
-
failsOnError
@Parameter(defaultValue="false") private boolean failsOnError
If this is true, and Checkstyle reported any violations or errors, the build fails immediately after running Checkstyle, before checking the log forlogViolationsToConsole
. If you want to uselogViolationsToConsole
, usefailOnViolation
instead of this.
-
testSourceDirectory
@Deprecated @Parameter private java.io.File testSourceDirectory
Deprecated.instead usetestSourceDirectories
. For version 3.0.0, this parameter is only defined to break the build if you use it!Specifies the location of the test source directory to be used for Checkstyle.- Since:
- 2.2
-
testSourceDirectories
@Parameter private java.util.List<java.lang.String> testSourceDirectories
Specifies the location of the test source directories to be used for Checkstyle. Default value is${project.testCompileSourceRoots}
.- Since:
- 2.13
-
includeTestSourceDirectory
@Parameter(defaultValue="false") private boolean includeTestSourceDirectory
Include or not the test source directory to be used for Checkstyle.- Since:
- 2.2
-
sourceDirectory
@Deprecated @Parameter private java.io.File sourceDirectory
Deprecated.instead usesourceDirectories
. For version 3.0.0, this parameter is only defined to break the build if you use it!Specifies the location of the source directory to be used for Checkstyle.
-
sourceDirectories
@Parameter private java.util.List<java.lang.String> sourceDirectories
Specifies the location of the source directories to be used for Checkstyle. Default value is${project.compileSourceRoots}
.- Since:
- 2.13
-
includeResources
@Parameter(property="checkstyle.includeResources", defaultValue="true", required=true) private boolean includeResources
Whether to apply Checkstyle to resource directories.- Since:
- 2.11
-
includeTestResources
@Parameter(property="checkstyle.includeTestResources", defaultValue="true", required=true) private boolean includeTestResources
Whether to apply Checkstyle to test resource directories.- Since:
- 2.11
-
checkstyleRules
@Parameter private org.codehaus.plexus.configuration.PlexusConfiguration checkstyleRules
By using this property, you can specify the whole Checkstyle rules inline directly inside this pom.<plugin> ... <configuration> <checkstyleRules> <module name="Checker"> <module name="FileTabCharacter"> <property name="eachLine" value="true" /> </module> <module name="TreeWalker"> <module name="EmptyBlock"/> </module> </module> </checkstyleRules> </configuration> ...
- Since:
- 2.12
-
rulesFiles
@Parameter(property="checkstyle.output.rules.file", defaultValue="${project.build.directory}/checkstyle-rules.xml") private java.io.File rulesFiles
Dump file for inlined Checkstyle rules.
-
checkstyleRulesHeader
@Parameter(defaultValue="<?xml version=\"1.0\"?>\n<!DOCTYPE module PUBLIC \"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN\"\n \"https://checkstyle.org/dtds/configuration_1_3.dtd\">\n") private java.lang.String checkstyleRulesHeader
The header to use for the inline configuration. Only used when you specifycheckstyleRules
.
-
omitIgnoredModules
@Parameter(defaultValue="false") private boolean omitIgnoredModules
Specifies whether modules with a configured severity ofignore
should be omitted during Checkstyle invocation.- Since:
- 3.0.0
-
excludeGeneratedSources
@Parameter(property="checkstyle.excludeGeneratedSources", defaultValue="false") private boolean excludeGeneratedSources
Specifies whether generated source files should be excluded from Checkstyle.- Since:
- 3.3.1
-
stringOutputStream
private java.io.ByteArrayOutputStream stringOutputStream
-
outputXmlFile
private java.io.File outputXmlFile
-
-
Method Detail
-
execute
public void execute() throws org.apache.maven.plugin.MojoExecutionException, org.apache.maven.plugin.MojoFailureException
- Throws:
org.apache.maven.plugin.MojoExecutionException
org.apache.maven.plugin.MojoFailureException
-
checkDeprecatedParameterUsage
private void checkDeprecatedParameterUsage(java.lang.Object parameter, java.lang.String name, java.lang.String replacement) throws org.apache.maven.plugin.MojoFailureException
- Throws:
org.apache.maven.plugin.MojoFailureException
-
getViolations
private java.util.List<Violation> getViolations(org.codehaus.plexus.util.xml.pull.XmlPullParser xpp) throws org.codehaus.plexus.util.xml.pull.XmlPullParserException, java.io.IOException
- Throws:
org.codehaus.plexus.util.xml.pull.XmlPullParserException
java.io.IOException
-
countViolations
private int countViolations(java.util.List<Violation> violations)
-
printViolations
private void printViolations(java.util.List<Violation> violations)
-
log
private void log(java.lang.String severity, java.lang.String message)
-
isViolation
private boolean isViolation(java.lang.String severity)
Checks if the given severity is considered a violation.- Parameters:
severity
- The severity to check- Returns:
true
if the given severity is a violation, otherwisefalse
-
ignore
private boolean ignore(java.util.List<RuleUtil.Matcher> ignores, java.lang.String source)
-
getConsoleListener
private com.puppycrawl.tools.checkstyle.DefaultLogger getConsoleListener() throws org.apache.maven.plugin.MojoExecutionException
- Throws:
org.apache.maven.plugin.MojoExecutionException
-
getOutputStream
private java.io.OutputStream getOutputStream(java.io.File file) throws org.apache.maven.plugin.MojoExecutionException
- Throws:
org.apache.maven.plugin.MojoExecutionException
-
getListener
private com.puppycrawl.tools.checkstyle.api.AuditListener getListener() throws org.apache.maven.plugin.MojoFailureException, org.apache.maven.plugin.MojoExecutionException
- Throws:
org.apache.maven.plugin.MojoFailureException
org.apache.maven.plugin.MojoExecutionException
-
collectArtifacts
private java.util.List<org.apache.maven.artifact.Artifact> collectArtifacts(java.lang.String hint)
-
getCheckstylePluginDependenciesAsArtifacts
private java.util.List<org.apache.maven.artifact.Artifact> getCheckstylePluginDependenciesAsArtifacts(java.util.Map<java.lang.String,org.apache.maven.model.Plugin> plugins, java.lang.String hint)
-
getSourceDirectories
private java.util.List<java.io.File> getSourceDirectories()
-
getTestSourceDirectories
private java.util.List<java.io.File> getTestSourceDirectories()
-
filterBuildTarget
private java.util.List<java.lang.String> filterBuildTarget(java.util.List<java.lang.String> sourceDirectories)
-
-