Skip to content
Snippets Groups Projects
checkstyle.xml 8.5 KiB
Newer Older
<?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">

<!-- http://checkstyle.sourceforge.net/config.html -->

<module name="Checker">
    <property name="charset" value="UTF-8"/>
    <!-- https://docs.codeclimate.com/docs/checkstyle -->
    <property name="severity" value="warning"/>
    <module name="SuppressionFilter">
        <property name="file" value="backend/checkstyle-suppressions.xml" />
    </module>
	
    <module name="LineLength">
        <property name="max" value="160"/>
		<property name="fileExtensions" value="java"/>
        <property name="ignorePattern" value="^package.*|^import.*|a href|href|http://|https://"/>
    </module>
	<module name="FileTabCharacter">
		<property name="eachLine" value="true"/>
        <property name="fileExtensions" value="java,jst,jsm,css,js,xml"/>
    </module>
    <module name="NewlineAtEndOfFile"/>
	<module name="RegexpSingleline">
        <property name="format" value="((//.*)|(\*.*))FIXME([^(]|$)" />
        <property name="message" value='All FIXME should be named e.g. "FIXME(John): note."' />
    </module>
    <module name="RegexpSingleline">
        <property name="format" value="((//.*)|(\*.*))TODO([^(]|$)" />
        <property name="message" value="All TODO should be named e.g. 'TODO(John): note.'" />
    </module>
	<module name="RegexpSingleline">
        <property name="format" value="@author" />
        <property name="message" value="Don't state the author's name. Use Git history." />
		<property name="fileExtensions" value="java"/>
    </module>
	<module name="RegexpSingleline">
        <property name="format" value="\* Created by " />
        <property name="message" value="Don't state the author's name. Use Git history." />
    </module>
	<module name="RegexpSingleline">
        <property name="format" value="System\.(err|out)\.print"/>
        <property name="message" value="Don't use System.(out|err).print, use a logger."/>
    </module>
    <module name="SuppressWarningsFilter"/>
    <module name="FileLength">
        <property name="max" value="2000" />
        <property name="fileExtensions" value="java" />
    </module>
    <module name="TreeWalker">
        <module name="SuppressionCommentFilter"/>
        <module name="SuppressWarningsHolder" />
		<module name="InterfaceIsType"/>
        <module name="OuterTypeFilename"/>
		<module name="OneTopLevelClass"/>
        <module name="UnusedImports" />
        <module name="RedundantImport"/>
        <module name="AvoidStarImport">
            <property name="allowStaticMemberImports" value="true"/>
        </module>
		<module name="InvalidJavadocPosition"/>
        <module name="JavadocContentLocation"/>
		<module name="JavadocBlockTagLocation"/>
        <module name="JavadocMethod">
			<property name="validateThrows" value="false" />
            <property name="allowMissingReturnTag" value="true" />
            <property name="allowMissingParamTags" value="true" />
        </module>
        <module name="VisibilityModifier">
			<property name="protectedAllowed" value="true"/>
            <property name="packageAllowed" value="true"/>
        </module>
        <module name="ModifierOrder"/>
        <module name="SimplifyBooleanExpression"/>
        <module name="BooleanExpressionComplexity">
            <property name="max" value="4"/>
        </module>
        <module name="HiddenField">
            <property name="tokens" value="VARIABLE_DEF"/>
        </module>
        <module name="MethodParamPad">
            <property name="allowLineBreaks" value="true"/>
        </module>
		<module name="OneStatementPerLine" />
        <module name="MethodName">
            <property name="format" value="^[a-z][a-zA-Z_0-9]*$"/>
        </module>
        <module name="PackageName">
            <property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$"/>
        </module>
		        <module name="DeclarationOrder">
            <property name="ignoreModifiers" value="true"/>
        </module>
        <module name="LocalFinalVariableName"/>
		<module name="LocalVariableName"/>
        <module name="StaticVariableName"/>
		<module name="TypeName"/>
		<module name="MemberName"/>
        <module name="ParameterName"/>
        <module name="CatchParameterName">
            <property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
        </module>
		<!-- we want to allow frequently used name ID -->
        <module name="MethodTypeParameterName">
            <property name="format" value="^[A-Z]|ID$"/>
        </module>
		<!-- we want to allow frequently used name ID -->
        <module name="ClassTypeParameterName">
            <property name="format" value="^[A-Z]|ID$"/>
        </module>
		<!-- we want to allow frequently used name ID -->
        <module name="InterfaceTypeParameterName">
             <property name="format" value="^[A-Z]|ID$"/>
        </module>
        <module name="RecordTypeParameterName"/>
        <module name="NoLineWrap"/>
		<module name="EmptyForIteratorPad"/>
        <module name="EmptyForInitializerPad"/>
        <module name="SeparatorWrap">
            <property name="tokens" value="DOT"/>
            <property name="option" value="nl"/>
        </module>
        <module name="SeparatorWrap">
            <property name="id" value="separator-wrap-dot"/>
			<property name="tokens" value="COMMA"/>
			<property name="option" value="EOL"/>
        </module>
        <module name="CommentsIndentation"/>
        <module name="ParameterAssignment"/>
        <module name="OperatorWrap" />
        <!-- if (condition) { return true; } else { return false; } ... return condition -->
        <module name="SimplifyBooleanReturn"/>
        <module name="MethodLength">
            <property name="id" value="method-length"/>
            <property name="max" value="200" />
            <property name="countEmpty" value="false" />
        </module>
		<module name="MethodLength">
            <property name="id" value="method-length-constructor"/>
            <property name="max" value="60"/>
            <property name="tokens" value="CTOR_DEF"/>
        </module>
        <module name="ThrowsCount"/>
		<!-- method argument count limit -->
        <module name="ParameterNumber">
            <property name="max" value="8"/>
            <property name="tokens" value="METHOD_DEF"/>
			<property name="ignoreOverriddenMethods" value="true"/>
        </module>
        <module name="StringLiteralEquality"/>
        <module name="MutableException"/>
        <module name="NeedBraces"/>
        <module name="UpperEll"/>
		<module name="TrailingComment"/>
        <module name="MissingDeprecated" />
        <module name="IllegalThrows">
                <property name="illegalClassNames"
                          value="Error,
                                 Throwable,
                                 java.lang.Error,
                                 java.lang.Throwable"/>
        </module>
        <module name="MultipleVariableDeclarations"/>
        <module name="EmptyStatement"/>
		<module name="PackageDeclaration"/>
        <!-- only allow empty blocks with a descriptive comment -->
        <module name="EmptyBlock">
            <property name="option" value="text"/>
        </module>
		<module name="AvoidNestedBlocks">
            <property name="allowInSwitchCase" value="true"/>
        </module>
        <module name="EqualsHashCode"/>
        <module name="NoClone"/>
        <module name="IllegalToken"/>
        <module name="NestedForDepth">
            <property name="max" value="2"/>
        </module>
        <module name="NestedTryDepth"/>
        <module name="NestedIfDepth">
            <property name="max" value="2"/>
        </module>
        <module name="RightCurly"/>
        <module name="LeftCurly"/>
        <module name="DefaultComesLast"/>
        <module name="SingleSpaceSeparator"/>
        <module name="ParenPad"/>
		<module name="TypecastParenPad"/>
		<module name="InnerAssignment"/>
        <module name="NoWhitespaceBefore"/>
        <module name="WhitespaceAfter"/>
        <module name="WhitespaceAround">
			<property name="allowEmptyMethods" value="true"/>
            <property name="allowEmptyConstructors" value="true"/>
			<property name="allowEmptyLoops" value="true"/>
            <property name="allowEmptyTypes" value="true"/>
            <property name="allowEmptyLambdas" value="true"/>
        </module>
		<module name="EmptyCatchBlock" />
        <module name="GenericWhitespace"/>
		<module name="HideUtilityClassConstructor"/>
        <module name="SuperFinalize"/>
    </module>
</module>