Class 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 for logViolationsToConsole.
      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 of ignore 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 Descriptor
      protected 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 use sourceDirectories.
      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.
      private java.io.File useFile
      If null, 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.
      • Fields inherited from interface org.apache.maven.plugin.Mojo

        ROLE
    • 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)  
      • Methods inherited from class org.apache.maven.plugin.AbstractMojo

        getLog, getPluginContext, setLog, setPluginContext
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • 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 the outputFileFormat 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 (if logViolationsToConsole is true). Compare this to failsOnError 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 the configLocation 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 property project.build.sourceEncoding is not set, the platform default encoding is used. Note: This parameter always overrides the property charset from Checkstyle's TreeWalker module.
        Since:
        2.2
      • 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
        If null, 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 for logViolationsToConsole. If you want to use logViolationsToConsole, use failOnViolation instead of this.
      • testSourceDirectory

        @Deprecated
        @Parameter
        private java.io.File testSourceDirectory
        Deprecated.
        instead use testSourceDirectories. 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 use sourceDirectories. 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 specify checkstyleRules.
      • omitIgnoredModules

        @Parameter(defaultValue="false")
        private boolean omitIgnoredModules
        Specifies whether modules with a configured severity of ignore 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
    • Constructor Detail

      • CheckstyleViolationCheckMojo

        public CheckstyleViolationCheckMojo()
    • 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, otherwise false
      • 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)