<?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">

  <module name="TreeWalker">
    
    <!-- Sun -->
    <module name="PackageName"/>
    <module name="OuterTypeNumber"/>
    <module name="DeclarationOrder"/>
    <module name="LineLength">
      <property name="max" value="100"/> <!-- Android ups this to 100 from 80. -->
    </module>
    <!-- line break after a comma -->
    <module name="OperatorWrap"/>
    <module name="JavadocType">
      <property name="scope" value="public"/>
      <property name="allowMissingParamTags" value="true"/> <!-- alljoyn_java -->
    </module>
    <module name="JavadocMethod">
      <property name="scope" value="public"/>
      <property name="allowMissingPropertyJavadoc" value="true"/> <!-- Android -->
      <property name="allowMissingThrowsTags" value="true"/> <!-- alljoyn_java -->
      <property name="allowMissingParamTags" value="true"/> <!-- alljoyn_java -->
    </module>
    <module name="JavadocVariable">
      <property name="scope" value="public"/>
    </module>
    <module name="JavadocStyle">
      <property name="scope" value="public"/>
    </module>
    <module name="MultipleVariableDeclarations"/>
    <!-- local vars initialized where declared -->
    <!-- local vars don't hide other declarations -->
    <module name="MethodParamPad"/>
    <module name="LeftCurly"/>
    <module name="RightCurly"/>
    <!-- at most one statement per line -->
    <module name="NeedBraces"/>
    <!-- return statement shouldn't use parens -->
    <module name="FallThrough"/>
    <module name="MissingSwitchDefault"/>
    <module name="DefaultComesLast"/>
    <!-- one blank line between methods, local vars and first statement, before comment -->
    <module name="WhitespaceAfter"/>
    <module name="WhitespaceAround">
      <property name="allowEmptyConstructors" value="true"/>
    </module>
    <module name="TypeName"/>
    <module name="MethodName"/>
    <module name="LocalFinalVariableName"/>
    <module name="LocalVariableName"/>
    <module name="StaticVariableName"/>
    <module name="ParameterName"/>
    <module name="MemberName"/>
    <module name="ConstantName"/>
    <!-- avoid referring to static methods through an object -->
    <module name="MagicNumber"/>
    <!-- avoid assigning several variables at once -->

    <!-- Android -->
    <module name="EmptyBlock"/>
    <module name="IllegalCatch"/>
    <module name="AvoidStarImport"/>
    <module name="MethodLength">
      <property name="max" value="40"/>
    </module>
    <module name="ImportOrder">
      <property name="groups" value="android,com,junit,net,org,java,javax"/>
      <property name="separated" value="true"/>
    </module>
    <!-- 8 space indents for line wraps -->
    <module name="MemberName">
      <property name="format" value="^m[A-Z][a-zA-Z0-9]*$"/>
    </module>
    <module name="StaticVariableName">
      <property name="format" value="^s[A-Z][a-zA-Z0-9]*$"/>
    </module>
    <module name="TodoComment"/>

    <!-- Miscellaneous - these are not specified by Sun or Android, but useful nonetheless -->
    <module name="AnnotationUseStyle"/>
    <module name="MissingDeprecated"/>
    <module name="MissingOverride"/>
    <module name="FinalClass"/>
    <module name="InterfaceIsType"/>
    <module name="HideUtilityClassConstructor"/>
    <!-- <module name="DesignForExtension"/> -->
    <module name="MutableException"/>
    <module name="CovariantEquals"/>
    <module name="EmptyStatement"/>
    <module name="EqualsAvoidNull"/>
    <module name="EqualsHashCode"/>
    <module name="InnerAssignment"/>
    <module name="ModifiedControlVariable"/>
    <module name="RedundantThrows"/>
    <module name="SimplifyBooleanExpression"/>
    <module name="SimplifyBooleanReturn"/>
    <module name="StringLiteralEquality"/>
    <module name="IllegalCatch"/>
    <module name="IllegalThrows"/>
    <module name="PackageDeclaration"/>
    <module name="ParameterAssignment"/>
    <module name="ExplicitInitialization"/>
    <!-- <module name="MultipleStringLiterals"/> -->
    <module name="UnnecessaryParentheses"/>
    <module name="RedundantImport"/>
    <module name="UnusedImports"/>
    <module name="UpperEll"/>
    <module name="ArrayTypeStyle"/>
    <module name="Indentation">
      <property name="caseIndent" value="0"/>
    </module>
    <module name="ModifierOrder"/>
    <module name="RedundantModifier"/>
    <module name="ExecutableStatementCount"/>
    <module name="AnonInnerLength"/>
    <!-- <module name="ParameterNumber"/> -->
    <module name="GenericWhitespace"/>
    <module name="EmptyForInitializerPad"/>
    <module name="EmptyForIteratorPad"/>
    <module name="NoWhitespaceAfter">
      <property name="tokens" value="BNOT, DEC, DOT, INC, LNOT, UNARY_MINUS, UNARY_PLUS"/>
    </module>
    <module name="NoWhitespaceBefore"/>
    <module name="ParenPad"/>
    <module name="TypecastParenPad"/>

  </module>

  <!-- Sun -->
  <module name="FileLength"/>
  <module name="RegexpHeader">
    <property name="headerFile" value="cs.header"/> 
    <property name="multiLines" value="8"/>
  </module>
  <module name="FileTabCharacter"/>
  <module name="JavadocPackage">
    <property name="allowLegacy" value="true"/>
  </module>

  <!-- alljoyn_java -->
  <module name="SuppressionFilter">
    <property name="file" value="cs_suppressions.xml"/>
  </module>

  <!-- Miscellaneous - these are not specified by Sun or Android, but useful nonetheless -->
  <module name="StrictDuplicateCode"/>

</module>
    
