<?xml version="1.0"?>
<!--
 Licensed to the Apache Software Foundation (ASF) under one or more
 contributor license agreements.  See the NOTICE file distributed with
 this work for additional information regarding copyright ownership.
 The ASF licenses this file to You under the Apache License, Version 2.0
 (the "License"); you may not use this file except in compliance with
 the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-->
<!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">

    <property name="cacheFile" value="${checkstyle.cache.file}"/>

    <!-- Item 4 - Avoid creating duplicate objects -->
    <module name="IllegalInstantiation">
      <property name="classes" value="java.lang.Boolean, java.lang.String"/>
    </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="4"/>
    </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"/>
      <property name="allowUndeclaredRTE" value="true"/>
    </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 -->

    <module name="MagicNumber"/>

    <!-- This is needed for Suppression Comment Filters -->
    <module name="FileContentsHolder"/>

  </module>

  <!-- enforce package documentation -->
  <module name="JavadocPackage">
    <!-- setting allowLegacy means it will check for package.html instead of just package-info.java -->
    <property name="allowLegacy" value="true"/>
  </module>
  
  <!-- Item 6 - Avoid finalizers -->
  <!-- this will not find violations that contain linebreaks -->
  <module name="RegexpSingleline">
    <property name="format" value="((public)|(protected))\s+void\s+finalize\(\s*\)"/>
     <property name="message" value="Avoid finalizers."/>
  </module>
    
  <!-- don't allow tabs -->
  <module name="FileTabCharacter">
    <property name="fileExtensions" value="java,xml"/>
  </module>

  <module name="SuppressionCommentFilter"/>

  <module name="SuppressionFilter">
    <!-- config_loc is used by Eclipse plugin -->
    <property name="file" value="${config_loc}/checkstyle-suppressions.xml"/>
  </module>

  <!-- 
      Allow comment to suppress checkstyle for a single line
      e.g. // CHECKSTYLE IGNORE MagicNumber
   -->
  <module name="SuppressWithNearbyCommentFilter">
    <property name="commentFormat" value="CHECKSTYLE IGNORE (\w+)"/>
    <property name="checkFormat" value="$1"/>
  </module>

</module>
