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


<!--
  
  These checks still need to be Voted on for Validator, but
  at least serve to cut down on some of the noise. 


  A Checkstyle configuration that checks against the recommendations
  in Joshua Bloch, Effective Java (highliy recommended read!)

  This file does NOT duplicate the checks for whitespace settings,
  placement of curly braces, etc.  Only the rules that are explicitly
  mentioned in the book are enforced.

  Currently the amount of rules that can be automatically checked by
  Checkstyle is not very large, but adding more checks of this quality
  is a high priority goal for the development team.

-->

<module name="Checker">

    <module name="TreeWalker">

        <!-- Item 4 - Avoid creating duplicate objects -->
        <module name="IllegalInstantiation">
            <property name="classes"
                      value="java.lang.Boolean, java.lang.String"/>
        </module>

        <!-- Item 6 - Avoid finalizers -->
        <!-- this will not find violations that contain linebreaks -->
        <module name="GenericIllegalRegexp">
            <property name="format"
                      value="((public)|(protected))\s+void\s+finalize\(\s*\)"/>
        </module>

        <!-- Item 8 - Always override hashCode when you override equals -->
        <module name="EqualsHashCode"/>

        <!-- Item 12 - Make all fields private -->
        <module name="VisibilityModifier"/>

        <!-- Item 15 - Design and document for inheritance or else prohibit it -->
        <!-- the module actually implements a very strict rule, it would be
interesting to know whether Joshua meant what checkstyle implements.
We feel this implementation is well suited as a warning,
i.e. if you get error messages from this check you should be
able to name a good reason to implement your code the way you do it,
especially if you are designing a library and not an application. -->
        <module name="DesignForExtension">
            <property name="severity" value="warning"/>
        </module>

        <!-- Item 17 - Use interfaces only to define types -->
        <module name="InterfaceIsType"/>

        <!-- Item 25 - Design method signatures carefully -->
        <!-- Avoid long parameter lists -->
        <module name="ParameterNumber">
            <property name="max" value="3"/>
        </module>

        <!-- Item 26 - Use overloading judiciously -->
        <!-- rfe #659735 -->

        <!-- Item 27 - Return zero-length array, not nulls -->
        <!-- no rfe yet -->

        <!-- Item 28 - Write doc comments for all exposed API elements -->
        <module name="JavadocType">
            <property name="scope" value="protected"/>
        </module>
        <module name="JavadocMethod"> <!-- also covers Item 44 -->
            <property name="scope" value="protected"/>
        </module>
        <module name="JavadocVariable">
            <property name="scope" value="protected"/>
        </module>

        <!-- Item 29 - Minimize the scope of local variables -->
        <!-- no rfe yet -->


        <!-- Item 38 - Adhere to generally accepted naming conventions -->
        <module name="PackageName">
            <!-- no uppercase letters, between 2 and 10 characters -->
            <property name="format" value="^[a-z]+(\.[a-z][a-z0-9]{1,9})*$"/>
        </module>
        <module name="TypeName"/>
        <module name="ConstantName"/>
        <module name="LocalFinalVariableName"/>
        <module name="LocalVariableName"/>
        <module name="MemberName"/>
        <module name="MethodName"/>
        <module name="ParameterName"/>
        <module name="StaticVariableName"/>

        <!-- Item 47 - Don't ignore exceptions -->
        <module name="EmptyBlock">
            <property name="tokens" value="LITERAL_CATCH"/>
            <!-- require a comment, change to stmt to require a statement -->
            <property name="option" value="text"/>
        </module>

        <!-- Item 50 - Never invoke wait outside a loop -->
        <!-- rfe #712798 -->

        <!-- Item 57 - Provide a readResolve method when necessary -->
        <!-- no rfe yet -->

        <!-- don't allow tabs -->
        <module name="TabCharacter"/>

        <!-- enforce License Header using a RegExp file to allow some variations
like the years in copyrights or values of SVN variables. -->
        <module name="RegexpHeader">
            <property name="headerFile" value="LICENSE.CheckStyle"/>
        </module>

    </module>

    <!-- enforce package documentation -->
    <module name="PackageHtml"/>

</module>
