<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.1//EN" "http://www.puppycrawl.com/dtds/configuration_1_1.dtd">
<module name="Checker">
    <module name="SuppressionFilter">
        <property name="file" value="/Applications/BlueJ 2.5.1/BlueJ.app/Contents/Resources/Java/suppressions.xml"/>
    </module>
    
    <module name="StrictDuplicateCode">
      <property name="min" value="6"/>
    </module>

    <module name="TreeWalker">
        <!-- misc -->
        <!-- <module name="ArrayTypeStyle" /> -->
	<module name="TodoComment"/>
        <module name="UpperEll"/>

        <!-- blocks -->
        <module name="AvoidNestedBlocks">
		<property name="allowInSwitchCase" value="true"/>
	</module>
        <module name="EmptyBlock">
            <property name="option" value="stmt"/>
        </module>
<!--	<module name="LeftCurly">
            <property name="option" value="nl"/>
            <property name="maxLineLength" value="80"/>
        </module>
-->
	<module name="NeedBraces"/>

        <!-- coding -->
	<module name="DeclarationOrder" />
	<module name="DefaultComesLast" />
        <module name="EmptyStatement" />
	<module name="FallThrough" />
        <module name="HiddenField">
		<property name="tokens" value="VARIABLE_DEF"/>
	</module>
        <module name="IllegalCatch"/>
        <module name="InnerAssignment">
            <property name="tokens" value="ASSIGN, BAND_ASSIGN, BOR_ASSIGN, BSR_ASSIGN, BXOR_ASSIGN, DIV_ASSIGN, MINUS_ASSIGN, MOD_ASSIGN, PLUS_ASSIGN, SL_ASSIGN, SR_ASSIGN, STAR_ASSIGN"/>
        </module>
	<module name="JUnitTestCase"/>
        <module name="MagicNumber" />
        <module name="MissingSwitchDefault" />
	<module name="ModifiedControlVariable" />
	<module name="ParameterAssignment" />
	<module name="RequireThis" />
        <module name="SimplifyBooleanExpression"/>
        <module name="SimplifyBooleanReturn"/>
        <module name="StringLiteralEquality"/>

	<!-- design -->
	<module name="VisibilityModifier"/>

        <!-- imports
        <module name="AvoidStarImport"/>
        -->
        <module name="RedundantImport"/>
        <module name="UnusedImports"/>

        <!-- indentation -->
        <!--
        <module name="Indentation">
            <property name="basicOffset" value="4"/>
        </module>
        <module name="RightCurly">
            <property name="option" value="alone"/>            
        </module>
	-->

        <!-- javadoc
        <module name="JavadocMethod">
            <property name="allowUndeclaredRTE" value="false"/>
            <property name="scope" value="private"/>            
        </module>
        <module name="JavadocStyle"/>
        <module name="JavadocType">
            <property name="scope" value="private"/>
        </module>
	-->
         
	<!-- metrics -->

        <!-- naming -->
        <module name="ConstantName"/>
        <module name="LocalVariableName"/>
   <!-- <module name="LocalFinalVariableName"/> -->
        <module name="MemberName"/>
        <module name="MethodName"/>
        <module name="PackageName"/>
        <module name="ParameterName"/>
        <module name="StaticVariableName"/>
        <module name="TypeName"/>

        <!-- sizes -->
        <module name="FileLength"/> <!-- default 2000 lines -->
        <module name="LineLength">
            <property name="max" value="100"/>            
        </module>
        <module name="ExecutableStatementCount"/> <!-- default 30 per method or constructor -->
        <!--
        <module name="MethodLength">
            <property name="countEmpty" value="false"/>
            <property name="max" value="30"/>            
        </module>
        -->
        <module name="ParameterNumber">
            <property name="max" value="7"/>            
        </module>

        <!-- usage -->
<!--    <module name="usage.OneMethodPrivateField"/>
        <module name="usage.UnusedLocalVariable"/>
        <module name="usage.UnusedPrivateField"/>
        <module name="usage.UnusedPrivateMethod"/>	-->
	  

        <!-- whitespace
        <module name="NoWhitespaceAfter">
            <property name="allowLineBreaks" value="true"/>
            <property name="tokens" value="ARRAY_INIT, BNOT, DEC, DOT, INC, LNOT, UNARY_MINUS, UNARY_PLUS"/>            
        </module>
        <module name="NoWhitespaceBefore">
            <property name="allowLineBreaks" value="true"/>
            <property name="tokens" value="SEMI, POST_DEC, POST_INC"/>
        </module>
        <module name="OperatorWrap">
            <property name="option" value="nl"/>
        </module>
        <module name="ParenPad">
            <property name="option" value="nospace"/>
        </module>
        <module name="TabCharacter"/>
	<module name="TypecastParenPad"/>
        <module name="WhitespaceAfter">
            <property name="tokens" value="COMMA, SEMI"/>
        </module>
        <module name="WhitespaceAround">
            <property name="tokens" value="ASSIGN, BAND, BAND_ASSIGN, BOR, BOR_ASSIGN, BSR, BSR_ASSIGN, BXOR, BXOR_ASSIGN, COLON, DIV, DIV_ASSIGN, EQUAL, GE, GT, LAND, LCURLY, LE, LITERAL_ASSERT, LITERAL_CATCH, LITERAL_DO, LITERAL_ELSE, LITERAL_FINALLY, LITERAL_FOR, LITERAL_IF, LITERAL_RETURN, LITERAL_SYNCHRONIZED, LITERAL_TRY, LITERAL_WHILE, LOR, LT, MINUS, MINUS_ASSIGN, MOD, MOD_ASSIGN, NOT_EQUAL, PLUS, PLUS_ASSIGN, QUESTION, RCURLY, SL, SLIST, SL_ASSIGN, SR, SR_ASSIGN, STAR, STAR_ASSIGN"/>
        </module>
        -->
    </module>
</module>
