Using Custom Checkstyle Property Expansion Definitions
Custom property expansion definitions for the Checker can be defined.
Checkstyle uses the property expansion mechanism to allow injection of specific values into a pre-defined Checker configuration. Using property expansion alone is an insufficient means to customize the checks performed by Checkstyle.
Example: checkstyle.xml
- only checks the package name in use to ensure that it conforms to the desired scheme, but allows for users of this Checker to specify their own projectname.
<?xml version="1.0" ?> <!DOCTYPE module PUBLIC "-//Checkstyle//DTD Checkstyle Configuration 1.2//EN" "https://checkstyle.org/dtds/configuration_1_2.dtd"> <module name="Checker"> <module name="TreeWalker"> <module name="PackageName"> <property name="format" value="com\.example\.$\{projectname\}(\.[a-z][a-zA-Z0-9]+)*$"/> </module> </module> </module>
Example: pom.xml
- Specifies the projectname
property expansion that Checkstyle will use when encountering such a variable in the above Checker configuration.
<project> ... <reporting> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-checkstyle-plugin</artifactId> <version>3.4.0</version> <configuration> <configLocation>checkstyle.xml</configLocation> <propertyExpansion> projectname=whizbang anotherProperty=bazinga </propertyExpansion> </configuration> </plugin> </plugins> </reporting> ... </project>
The property expansion information can also come from a location using the propertiesLocation
parameter as shown below. The propertiesLocation
can point to a URL, File or build classpath resource reference.
<project> ... <reporting> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-checkstyle-plugin</artifactId> <version>3.4.0</version> <configuration> <configLocation>checkstyle.xml</configLocation> <propertiesLocation>${basedir}/checkstyle.properties</propertiesLocation> </configuration> </plugin> </plugins> </reporting> ... </project>