<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
    "-//Puppy Crawl//DTD Check Configuration 1.2//EN"
    "http://www.puppycrawl.com/dtds/configuration_1_2.dtd">

<module name="Checker">

    <metadata name="com.atlas-sw.eclipse" value="I like Sydney"/>

    <property name="severity" value="error"/>

    <module name="SuppressionFilter">
        <property name="file" value="${checkstyle.suppressions.file}"/>
    </module>

    <module name="PackageHtml"/>

    <module name="Translation">
        <property name="severity" value="${translation.severity}"/>
    </module>

    <module name="TreeWalker">

        <property name="tabWidth" value="4" />

        <module name="GenericIllegalRegexp">
            <property name="format" value="\s$"/>
        </module>

        <module name="AvoidStarImport"/>
        <module name="ConstantName"/>
        <module name="EmptyBlock"/>
        <module name="EmptyForIteratorPad"/>
        <module name="EqualsHashCode"/>
        <module name="FileLength" />
        <module name="Header">
          <property name="headerFile" value="${checkstyle.header.file}"/>
        </module>

        <module name="IllegalImport"/>
        <module name="IllegalInstantiation"/>
        <module name="InnerAssignment"/>
        <module name="JavadocType">
            <property name="authorFormat" value="\S"/>
        </module>
        <module name="JavadocMethod">
            <property name="allowUndeclaredRTE" value="true"/>
            <property name="allowThrowsTagsForSubclasses" value="true"/>
        </module>
        <module name="JavadocVariable"/>
        <module name="JavadocStyle">
            <property name="scope" value="public"/>
        </module>

        <module name="LeftCurly">
            <property name="tokens" value="CLASS_DEF,INTERFACE_DEF,METHOD_DEF,CTOR_DEF"/>
            <property name="option" value="nl"/>
        </module>
        <module name="LeftCurly">
            <property name="tokens" value="LITERAL_CATCH,LITERAL_DO,LITERAL_ELSE,LITERAL_FINALLY,LITERAL_FOR,LITERAL_IF,LITERAL_SWITCH,LITERAL_SYNCHRONIZED,LITERAL_TRY,LITERAL_WHILE"/>
            <property name="option" value="nlow"/>
        </module>

        <module name="LineLength">
            <property name="ignorePattern" value="^ *\* *[^ ]+$"/>
        </module>

        <module name="LocalFinalVariableName"/>
        <module name="LocalVariableName"/>
        <module name="MemberName">
            <property name="format" value="^m[A-Z][a-zA-Z0-9]*$"/>
        </module>
        <module name="MethodLength"/>
        <module name="MethodName"/>
        <module name="MethodParamPad"/>
        <module name="ModifierOrder"/>
        <module name="NeedBraces"/>
        <module name="NoWhitespaceAfter"/>

        <module name="NoWhitespaceBefore"/>
        <module name="NoWhitespaceBefore">
            <property name="tokens" value="DOT"/>
            <property name="allowLineBreaks" value="true"/>
        </module>

        <module name="OperatorWrap"/>
        <module name="OperatorWrap">
            <property name="tokens" value="ASSIGN, DIV_ASSIGN, PLUS_ASSIGN, MINUS_ASSIGN, STAR_ASSIGN, MOD_ASSIGN, SR_ASSIGN, BSR_ASSIGN, SL_ASSIGN, BXOR_ASSIGN, BOR_ASSIGN, BAND_ASSIGN"/>
            <property name="option" value="eol"/>
        </module>
        <module name="PackageName"/>
        <module name="ParameterName">
            <property name="format" value="^a[A-Z][a-zA-Z0-9]*$"/>
        </module>
        <module name="ParameterNumber"/>
        <module name="ParenPad"/>
        <module name="TypecastParenPad"/>
        <module name="RedundantImport"/>
        <module name="RedundantModifier"/>
        <module name="RightCurly">
            <property name="option" value="alone"/>
        </module>
        <module name="SimplifyBooleanExpression"/>
        <module name="SimplifyBooleanReturn"/>
        <module name="StaticVariableName">
            <property name="format" value="^s[A-Z][a-zA-Z0-9]*$"/>
        </module>
        <module name="TabCharacter"/>
        <module name="TypeName"/>
        <module name="UnusedImports"/>
        <module name="UpperEll"/>
        <module name="VisibilityModifier"/>
        <module name="WhitespaceAfter"/>
        <module name="WhitespaceAround"/>
        <module name="FinalClass"/>
        <module name="MissingSwitchDefault"/>
        <module name="MagicNumber"/>
        <module name="Indentation">
            <property name="basicOffset" value="4"/>
            <property name="braceAdjustment" value="0"/>
            <property name="caseIndent" value="0"/>
        </module>
        <module name="ArrayTrailingComma"/>

        <!-- Generates quite a few errors -->
        <module name="CyclomaticComplexity">
            <property name="severity" value="ignore"/>
        </module>

        <module name="NestedIfDepth">
            <property name="max" value="3"/>
        </module>
        <module name="NestedTryDepth"/>
        <module name="ExplicitInitialization"/>
    </module>
</module>
