Checkstyle


Checkstyle configuration

Execution is via
mvn checkstyle:checkstyle to only have the report
mvn checkstyle:checkfor failing if errors exist

The plugin to add to the pom

	<build>
		<plugins>
			[...]
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-checkstyle-plugin</artifactId>
				<version>3.5.0</version>
				<configuration>
					<configLocation>checkstyle.xml</configLocation>
				</configuration>
				<dependencies>
					<dependency>
						<groupId>com.puppycrawl.tools</groupId>
						<artifactId>checkstyle</artifactId>
						<version>10.9.3</version>
					</dependency>
				</dependencies>
			</plugin>
			[...]
		</plugins>
	</build>

Example Checkstyle Configuration, needs to be at the root of the project

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC "-//Checkstyle//DTD Checkstyle Configuration 1.3//EN" "https://checkstyle.org/dtds/configuration_1_3.dtd">

<!--
    This configuration file was written by the eclipse-cs plugin configuration editor
-->
<!--
    Checkstyle-Configuration: metavonics
    Description: none
-->
<module name="Checker">
  <property name="severity" value="warning"/>
  <module name="TreeWalker">
    <module name="RegexpSinglelineJava">
      <property name="severity" value="error"/>
      <property name="format" value="^\t* "/>
      <property name="message" value="Indent must use tab characters"/>
      <property name="ignoreComments" value="true"/>
    </module>
    <module name="SuppressWarningsHolder"/>
    <module name="MissingOverride">
      <property name="severity" value="error"/>
    </module>
    <module name="Indentation">
      <property name="severity" value="error"/>
      <property name="basicOffset" value="8"/>
      <property name="caseIndent" value="0"/>
      <property name="throwsIndent" value="8"/>
      <property name="arrayInitIndent" value="8"/>
      <property name="lineWrappingIndentation" value="8"/>
    </module>
    <module name="MissingJavadocType">
      <property name="severity" value="error"/>
    </module>
    <module name="ConstantName">
      <property name="severity" value="error"/>
    </module>
    <module name="MemberName"/>
    <module name="MethodName">
      <property name="severity" value="error"/>
    </module>
    <module name="MethodTypeParameterName">
      <property name="severity" value="error"/>
    </module>
    <module name="ParameterName">
      <property name="severity" value="error"/>
      <property name="ignoreOverridden" value="true"/>
    </module>
    <module name="MethodLength">
      <property name="severity" value="error"/>
    </module>
    <module name="ParameterNumber">
      <property name="severity" value="error"/>
      <property name="max" value="4"/>
    </module>
    <module name="RecordComponentNumber"/>
    <module name="WhitespaceAround">
      <property name="severity" value="error"/>
    </module>
    <module name="NeedBraces">
      <property name="severity" value="error"/>
    </module>
    <module name="ArrayTypeStyle"/>
    <module name="MethodParamPad"/>
    <module name="VisibilityModifier">
      <property name="protectedAllowed" value="true"/>
    </module>
    <module name="MultipleVariableDeclarations">
      <property name="severity" value="error"/>
    </module>
    <module name="MissingSwitchDefault">
      <property name="severity" value="error"/>
    </module>
    <module name="DefaultComesLast">
      <property name="severity" value="error"/>
    </module>
    <module name="InnerAssignment">
      <property name="severity" value="error"/>
    </module>
    <module name="MagicNumber"/>
    <module name="SimplifyBooleanReturn"/>
    <module name="SimplifyBooleanExpression"/>
    <module name="FinalClass">
      <property name="severity" value="error"/>
    </module>
    <module name="StringLiteralEquality">
      <property name="severity" value="error"/>
    </module>
    <module name="HideUtilityClassConstructor"/>
    <module name="FinalLocalVariable">
      <property name="severity" value="error"/>
    </module>
    <module name="ParameterAssignment">
      <property name="severity" value="error"/>
    </module>
    <module name="LocalVariableName"/>
    <module name="StaticVariableName"/>
    <module name="LocalFinalVariableName"/>
    <module name="ModifiedControlVariable">
      <property name="severity" value="error"/>
    </module>
    <module name="EmptyCatchBlock">
      <property name="severity" value="error"/>
    </module>
    <module name="IllegalCatch"/>
    <module name="OneStatementPerLine"/>
    <module name="EmptyBlock"/>
    <module name="NestedForDepth">
      <property name="max" value="2"/>
    </module>
    <module name="NestedIfDepth">
      <property name="severity" value="error"/>
      <property name="max" value="3"/>
    </module>
    <module name="NestedTryDepth">
      <property name="max" value="3"/>
    </module>
    <module name="CyclomaticComplexity"/>
    <module name="NestedForDepth">
      <property name="severity" value="error"/>
      <property name="max" value="3"/>
    </module>
    <module name="AnnotationLocation"/>
    <module name="SuppressionCommentFilter"/>
    <module name="MissingDeprecated"/>
    <module name="AvoidDoubleBraceInitialization"/>
    <module name="EmptyStatement"/>
    <module name="EqualsAvoidNull"/>
    <module name="FinalLocalVariable"/>
    <module name="FinalLocalVariable">
      <property name="tokens" value="VARIABLE_DEF,PARAMETER_DEF"/>
    </module>
    <module name="IllegalCatch"/>
    <module name="MultipleStringLiterals">
      <property name="allowedDuplicates" value="2"/>
    </module>
    <module name="NestedForDepth"/>
    <module name="PackageDeclaration"/>
    <module name="Indentation">
      <property name="basicOffset" value="8"/>
      <property name="caseIndent" value="0"/>
      <property name="throwsIndent" value="8"/>
      <property name="arrayInitIndent" value="8"/>
      <property name="lineWrappingIndentation" value="8"/>
    </module>
  </module>
  <module name="FileLength">
    <property name="severity" value="error"/>
  </module>
  <module name="LineLength">
    <property name="max" value="160"/>
  </module>
  <module name="FileTabCharacter">
    <property name="severity" value="ignore"/>
    <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="error"/>
  </module>
  <module name="SuppressWarningsFilter"/>
</module>