<?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
        "-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
        "https://checkstyle.org/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.

-->

<module name="Checker">

    <!-- Checks that a package.html file exists for each package.     -->
    <!-- See http://checkstyle.sf.net/config_javadoc.html#PackageHtml -->

    <!-- 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"/>

    <module name="FileLength"/>

    <!-- 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="FileTabCharacter">
        <property name="eachLine" value="true"/>
    </module>

    <module name="RegexpMultiline">
        <property name="format" value="((public)|(protected))\s+void\s+finalize\(\s*\)"/>
        <property name="message" value="Avoid finalizers"/>
    </module>

    <!-- No direct printing to System.out or System.err -->
    <module name="RegexpMultiline">
        <property name="format" value="System\.(out|err)\."/>
        <property name="message" value="Don't write directly to System.out our System.err"/>
    </module>
    <!-- No @author tags -->
    <module name="RegexpMultiline">
        <property name="format" value="@author"/>
        <property name="message" value="No @author tag allowed"/>
    </module>

    <module name="RegexpMultiline">
        <property name="format" value="strÃ¤hlekreuzen"/>
        <property name="message" value="No strÃ¤hlekreuzen allowed"/>
    </module>

    <module name="TreeWalker">

        <property name="tabWidth" value="2"/>

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

        <!-- Checks for Naming Conventions.                  -->
        <!-- See http://checkstyle.sf.net/config_naming.html -->
        <module name="ConstantName"/>
        <module name="LocalFinalVariableName"/>
        <module name="LocalVariableName"/>
        <module name="MemberName"/>
        <module name="MethodName"/>
        <module name="PackageName"/>
        <module name="ParameterName"/>
        <module name="StaticVariableName"/>
        <module name="TypeName"/>

        <!-- Checks for imports                              -->
        <!-- See http://checkstyle.sf.net/config_import.html -->
        <module name="AvoidStarImport"/>
        <module name="IllegalImport"/>
        <module name="RedundantImport"/>
        <module name="UnusedImports"/>
        <!--module name="AvoidStaticImport"/-->

        <module name="ParameterNumber">
            <property name="max" value="15"/>
        </module>

        <!-- Checks for whitespace                               -->
        <!-- See http://checkstyle.sf.net/config_whitespace.html -->
        <module name="EmptyForIteratorPad"/>
        <module name="MethodParamPad"/>
        <module name="NoWhitespaceAfter"/>
        <module name="NoWhitespaceBefore"/>
        <module name="OperatorWrap"/>
        <module name="ParenPad"/>
        <module name="TypecastParenPad"/>
        <module name="WhitespaceAfter"/>
        <!--<module name="WhitespaceAround"/>-->

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


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


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

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

        <module name="IllegalInstantiation">
           <property name="classes" value="java.lang.Boolean, java.lang.String"/>
        </module>
        <module name="InnerAssignment"/>
       <!-- <module name="MagicNumber">
          &lt;!&ndash; some numbers are really not that magic &ndash;&gt;
          <property name="ignoreNumbers" value="-4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 32, 64, 100, 128, 256, 512, 1000, 1024"/>
        </module>-->
        <module name="MissingSwitchDefault"/>
        <module name="StringLiteralEquality"/>
        <module name="SimplifyBooleanExpression"/>
        <module name="SimplifyBooleanReturn"/>
        <module name="SuperClone"/>
        <module name="SuperFinalize"/>
        <module name="IllegalThrows"/>
        <module name="PackageDeclaration"/>
<!-- TODO
        <module name="DeclarationOrder"/>
-->
        <module name="ParameterAssignment"/>
        <module name="MultipleVariableDeclarations"/>
        <module name="UnnecessaryParentheses"/>

        <!-- Checks for class design                         -->
        <!-- See http://checkstyle.sf.net/config_design.html -->
        <!-- module name="DesignForExtension"/ -->
        <!-- module name="FinalClass"/ -->
        <!-- module name="HideUtilityClassConstructor"/ -->

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

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

        <!-- Let todo plugin handle this.
        <module name="TodoComment"/>
        -->

        <module name="UpperEll"/>

    </module>

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

    <module name="RegexpSingleline">
        <property name="format" value="\s+$"/>
        <property name="message" value="Line has trailing spaces."/>
    </module>

</module>
