<?xml version="1.0"?>
<!--
  ~ Copyright 2014 Open Networking Laboratory
  ~
  ~ Licensed 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">


<!--

  Checkstyle configuration that checks the sun coding conventions from:

    - the Java Language Specification at
      http://java.sun.com/docs/books/jls/second_edition/html/index.html

    - the Sun Code Conventions at http://java.sun.com/docs/codeconv/

    - the Javadoc guidelines at
      http://java.sun.com/j2se/javadoc/writingdoccomments/index.html

    - the JDK Api documentation http://java.sun.com/j2se/docs/api/index.html

    - some best practices

  Checkstyle is very configurable. Be sure to read the documentation at
  http://checkstyle.sf.net (or in your downloaded distribution).

  Most Checks are configurable, be sure to consult the documentation.

  To completely disable a check, just comment it out or delete it from the file.

  Finally, it is worth reading the documentation.

-->


<!--
   The default severity setting in checkstyle is 'error', so some
   of the rules below are configured to change the severity to
   'warning'.  Over time, these 'warning' settings should be 
   removed as more of the ONOS source code is modified to
   follow the recommended rules.
-->


<module name="Checker">
    <!--
        If you set the basedir property below, then all reported file
        names will be relative to the specified directory. See
        http://checkstyle.sourceforge.net/5.x/config.html#Checker

        <property name="basedir" value="${basedir}"/>
    -->
    <!-- Checks that a package-info.java file exists for each package.     -->
    <!-- See http://checkstyle.sf.net/config_javadoc.html#JavadocPackage -->
    <module name="JavadocPackage"/>

    <!-- Checks whether files end with a new line.                        -->
    <!-- See http://checkstyle.sf.net/config_misc.html#NewlineAtEndOfFile -->
    <module name="NewlineAtEndOfFile"/>

    <!-- Checks that property files contain the same keys.         -->
    <!-- See http://checkstyle.sf.net/config_misc.html#Translation -->
    <module name="Translation"/>

    <!-- Checks for Size Violations.                    -->
    <!-- See http://checkstyle.sf.net/config_sizes.html -->
    <module name="FileLength"/>

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

    <!-- Miscellaneous other checks.                   -->
    <!-- See http://checkstyle.sf.net/config_misc.html -->
    <module name="RegexpSingleline">
        <property name="format" value="\s+$"/>
        <property name="minimum" value="0"/>
        <property name="maximum" value="0"/>
        <property name="message" value="Line has trailing spaces."/>
    </module>

    <module name="RegexpMultiline">
        <property name="format" value="\r\n"/>
        <property name="maximum" value="0"/>
        <property name="message" value="Line has windows line endings."/>
    </module>

    <!-- Checks for Headers                                -->
    <!-- See http://checkstyle.sf.net/config_header.html   -->
    <!-- <module name="Header"> -->
    <!--   <property name="headerFile" value="${checkstyle.header.file}"/> -->
    <!--   <property name="fileExtensions" value="java"/> -->
    <!-- </module> -->

    <module name="SuppressionCommentFilter">
        <property name="offCommentFormat"
                  value="(CHECKSTYLE\:OFF|Generated by the protocol buffer compiler.)"/>
        <property name="onCommentFormat" value="CHECKSTYLE:ON"/>
    </module>

    <module name="SuppressWithNearbyCommentFilter">
        <property name="commentFormat" value="CHECKSTYLE IGNORE THIS LINE"/>
        <property name="checkFormat" value=".*"/>
        <property name="influenceFormat" value="0"/>
    </module>

    <!-- Example: // CHECKSTYLE IGNORE FinalClass FOR NEXT 1 LINES  -->
    <module name="SuppressWithNearbyCommentFilter">
        <property name="commentFormat"
                  value="CHECKSTYLE IGNORE (\w+) FOR NEXT (\d+) LINES"/>
        <property name="checkFormat" value="$1"/>
        <property name="influenceFormat" value="$2"/>
    </module>

    <module name="TreeWalker">

        <module name="FileContentsHolder"/>
        <!-- Checks for Javadoc comments.                     -->
        <!-- See http://checkstyle.sf.net/config_javadoc.html -->
        <module name="JavadocMethod">
            <property name="severity" value="warning"/>
            <property name="allowUndeclaredRTE" value="true"/>
        </module>
        <module name="JavadocType">
            <property name="severity" value="warning"/>
        </module>
        <module name="JavadocVariable">
            <!-- Suppress check for private member Javadocs.
             Possibly revist fixing these. -->
            <property name="scope" value="public"/>
            <property name="severity" value="warning"/>
        </module>
        <module name="JavadocStyle"/>
        <!-- @author tag should not be used -->
        <module name="WriteTag">
            <property name="tag" value="@author"/>
            <property name="tagFormat" value="\S"/>
            <property name="severity" value="ignore"/>
            <property name="tagSeverity" value="error"/>
        </module>

        <module name="AbbreviationAsWordInName">
            <property name="allowedAbbreviationLength" value="2"/>
        </module>

        <!-- Checks for Naming Conventions.                  -->
        <!-- See http://checkstyle.sf.net/config_naming.html -->
        <module name="ConstantName">
            <!--  ONOS allows the name "log" for static final Loggers -->
            <property name="format"
                      value="^log$|^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$"/>
        </module>
        <module name="LocalFinalVariableName"/>

        <module name="LocalVariableName"/>

        <module name="MemberName"/>
        <module name="MethodName"/>
        <module name="PackageName">
            <property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$"/>
        </module>
        <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="allowStaticMemberImports" value="true"/>
        </module>
        <module name="IllegalImport"/>
        <!-- defaults to sun.* packages -->
        <module name="RedundantImport"/>
        <module name="UnusedImports"/>


        <!-- Checks for Size Violations.                    -->
        <!-- See http://checkstyle.sf.net/config_sizes.html -->
        <module name="LineLength">
            <!-- ONOS standard usage is 80 columns, but we allow up
             to 120 to not break the build. -->
            <property name="max" value="120"/>
            <property name="ignorePattern" value="^import"/>
        </module>
        <module name="MethodLength">
            <property name="max" value="200"/>
        </module>

        <module name="ParameterNumber">
            <property name="max" value="15"/>
            <property name="tokens" value="CTOR_DEF"/>
        </module>
        <!-- Checks for whitespace                               -->
        <!-- See http://checkstyle.sf.net/config_whitespace.html -->
        <module name="EmptyForIteratorPad"/>
        <module name="GenericWhitespace"/>
        <module name="MethodParamPad"/>
        <module name="NoWhitespaceAfter"/>
        <module name="NoWhitespaceBefore"/>

        <!-- Disabled for ONOS.  Default rules specify undesired behavior for the '?' operator -->
        <!-- <module name="OperatorWrap"/> -->
        <module name="ParenPad"/>
        <module name="TypecastParenPad"/>
        <module name="WhitespaceAfter"/>
        <module name="WhitespaceAround">
            <property name="allowEmptyConstructors" value="true"/>
            <property name="allowEmptyMethods" value="true"/>
        </module>


        <!-- Modifier Checks                                    -->
        <!-- See http://checkstyle.sf.net/config_modifiers.html -->
        <module name="ModifierOrder"/>

        <!--  Disabled for ONOS to allow use of public          -->
        <!--  modifiers in interfaces.                          -->
        <!-- <module name="RedundantModifier"/>                 -->


        <!-- Checks for blocks. You know, those {}'s         -->
        <!-- See http://checkstyle.sf.net/config_blocks.html -->
        <module name="AvoidNestedBlocks">
            <!-- ONOS alows declarations inside of switch case blocks -->
            <property name="allowInSwitchCase" value="true"/>
        </module>
        <module name="EmptyBlock">
            <!-- allow empty block, as long as there's some comment -->
            <property name="option" value="text"/>
        </module>
        <module name="LeftCurly"/>
        <module name="NeedBraces"/>
        <module name="RightCurly"/>

        <!-- Checks for common coding problems               -->
        <!-- See http://checkstyle.sf.net/config_coding.html -->
        <!-- ONOS allows conditional operators -->
        <!-- <module name="AvoidInlineConditionals"/> -->
        <module name="EmptyStatement"/>
        <module name="EqualsHashCode"/>

        <module name="HiddenField">
            <property name="ignoreSetter" value="true"/>
            <property name="ignoreConstructorParameter" value="true"/>
        </module>

        <module name="IllegalInstantiation"/>
        <module name="InnerAssignment"/>

        <!-- Many violations of this rule present, revist in a
        subsequent round of cleanups -->
        <!-- <module name="MagicNumber"/> -->
        <module name="MissingSwitchDefault"/>

        <module name="SimplifyBooleanExpression"/>
        <module name="SimplifyBooleanReturn"/>

        <!-- Checks for class design                         -->
        <!-- See http://checkstyle.sf.net/config_design.html -->
        <!-- ONOS produces many warnings of this type.
        Fixing all of these is outside the scope of the current cleanup. -->
        <!-- <module name="DesignForExtension"/> -->
        <module name="FinalClass"/>

        <module name="HideUtilityClassConstructor"/>

        <module name="InterfaceIsType"/>

        <module name="VisibilityModifier">
            <property name="severity" value="warning"/>
        </module>


        <!-- Miscellaneous other checks.                   -->
        <!-- See http://checkstyle.sf.net/config_misc.html -->
        <module name="ArrayTypeStyle"/>

        <!--  Many violations of this rule currently, too many to fix
        in the current cleanup. -->
        <!-- <module name="FinalParameters"/> -->
        <!-- ONOS allows TODO markers in checked in source code -->
        <!-- <module name="TodoComment"/> -->
        <module name="UpperEll"/>
    </module>

</module>
