<!--
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.3//EN"
    "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
<module name="Checker">

    <!-- Checks for Size Violations.                    -->
    <!-- See http://checkstyle.sf.net/config_sizes.html -->
    <module name="FileLength">
        <property name="max" value="3500"/>
        <property name="fileExtensions" value="java"/>
    </module>

    <!-- Checks for whitespace                               -->
    <!-- See http://checkstyle.sf.net/config_whitespace.html -->
    <module name="FileTabCharacter"/>


    <module name="TreeWalker">
        <module name="SuppressionCommentFilter"/>

        <!-- Checks for Javadoc comments.                     -->
        <!-- See http://checkstyle.sf.net/config_javadoc.html -->
        <!-- module name="JavadocMethod"/ -->
        <module name="JavadocType"/>
        <!-- module name="JavadocVariable"/ -->


        <!-- Checks for Naming Conventions.                  -->
        <!-- See http://checkstyle.sf.net/config_naming.html -->
        <!--
                <module name="MemberName">
                  <property name="format" value="^_[a-z][a-zA-Z0-9]*$" />
                </module>
        -->

        <module name="ConstantName"/>
        <module name="LocalVariableName"/>
        <module name="MethodName"/>
        <module name="PackageName"/>
        <module name="LocalFinalVariableName"/>
        <module name="ParameterName"/>
        <module name="StaticVariableName"/>
        <module name="TypeName"/>

        <!-- Checks for imports                              -->
        <!-- See http://checkstyle.sf.net/config_import.html -->
        <module name="AvoidStarImport">
            <property name="excludes"
                      value="java.io,java.net,java.util"/>
        </module>
        <module name="IllegalImport">
            <property name="illegalClasses" value="junit.framework.TestCase, org.junit.Assert, org.hamcrest.MatcherAssert, org.hamcrest.CoreMatchers, org.hamcrest.Matchers, org.hamcrest.core.Is"/>
            <property name="illegalPkgs" value="junit.framework.TestCase, org.junit.Assert, org.hamcrest.MatcherAssert, org.hamcrest.CoreMatchers, org.hamcrest.Matchers, org.hamcrest.core.Is"/>
        </module>
        <module name="RedundantImport"/>
        <module name="UnusedImports"/>


        <module name="LineLength">
            <property name="max" value="180"/>
            <property name="ignorePattern"
                      value="@version|@see"/>
        </module>
        <module name="MethodLength">
            <property name="max" value="250"/>
        </module>
        <module name="ParameterNumber">
            <property name="max" value="10"/>
        </module>

        <!-- Checks for blocks. You know, those {}'s         -->
        <!-- See http://checkstyle.sf.net/config_blocks.html -->
        <module name="EmptyBlock">
            <property name="option" value="text"/>
        </module>

        <module name="NeedBraces"/>
        <module name="LeftCurly">
            <property name="option" value="EOL"/>
        </module>
        <module name="RightCurly">
            <property name="option" value="SAME"/>
        </module>

        <!-- Checks for common coding problems               -->
        <!-- See http://checkstyle.sf.net/config_coding.html -->
        <module name="EmptyStatement"/>
        <module name="EqualsHashCode"/>
        <module name="DefaultComesLast"/>
        <module name="MissingSwitchDefault"/>
        <module name="FallThrough"/>
        <module name="MultipleVariableDeclarations"/>

        <!-- Checks for class design                         -->
        <!-- See http://checkstyle.sf.net/config_design.html -->
        <!-- module name="DesignForExtension"/ -->
        <module
            name="com.puppycrawl.tools.checkstyle.checks.design.DesignForExtensionCheck">
            <property name="severity" value="ignore"/>
        </module>

        <!-- module name="FinalClass"/ -->

        <module name="HideUtilityClassConstructor"/>

        <!-- module name="InterfaceIsType"/ -->
        <!-- module name="VisibilityModifier"/ -->

        <module
            name="com.puppycrawl.tools.checkstyle.checks.design.VisibilityModifierCheck">
            <property name="packageAllowed" value="false"/>
            <property name="protectedAllowed" value="true"/>
            <property name="publicMemberPattern"
                      value="^serialVersionUID"/>
            <property name="severity" value="warning"/>
        </module>


        <!-- Miscellaneous other checks.                   -->
        <!-- See http://checkstyle.sf.net/config_misc.html -->
        <!-- module name="ArrayTypeStyle"/ -->
        <!-- module name="FinalParameters"/ -->
        <!-- Line with Trailing Spaces (disabled as it's to noisy)
        <module name="GenericIllegalRegexp">
            <property name="format" value="\s+$" />
            <property name="message" value="Line has trailing spaces." />
        </module>
          -->
        <module name="UpperEll"/>

    </module>

</module>
