<?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">

<!-- 
  Commons Statitics customization of default Checkstyle behavior:
  https://github.com/checkstyle/checkstyle/blob/master/src/main/resources/sun_checks.xml
-->
<module name="Checker">
  <module name="SuppressionFilter">
    <!-- Default property set by maven-checkstyle-plugin -->
    <property name="file" value="${checkstyle.suppressions.file}"/>
    <property name="optional" value="false"/>
  </module>

  <property name="localeLanguage" value="en"/>

  <property name="fileExtensions" value="java, properties, xml" />

  <!-- Excludes all 'module-info.java' files -->
  <!-- See https://checkstyle.org/config_filefilters.html -->
  <module name="BeforeExecutionExclusionFileFilter">
    <property name="fileNamePattern" value="module\-info\.java$" />
  </module>

  <!-- Checks that a package-info.java file exists for each package. -->
  <!-- See http://checkstyle.sourceforge.net/config_javadoc.html#JavadocPackage -->
  <module name="JavadocPackage" />

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

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

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

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

  <!-- Miscellaneous other checks. -->
  <!-- See http://checkstyle.sourceforge.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>

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

  <module name="TreeWalker">

    <!-- Checks for Javadoc comments. -->
    <!-- See http://checkstyle.sourceforge.net/config_javadoc.html -->
    <!-- Require method javadocs, allow undeclared RTE -->
    <module name="JavadocMethod">
      <property name="allowUndeclaredRTE" value="true"/>
      <property name="allowThrowsTagsForSubclasses" value="true"/>
      <property name="validateThrows" value="false"/>
    </module>
    <module name="JavadocType" />
    <module name="JavadocVariable" />
    <module name="JavadocStyle" />
    <!-- <module name="MissingJavadocType"/> -->

    <!-- Checks for Naming Conventions. -->
    <!-- See http://checkstyle.sourceforge.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.sourceforge.net/config_import.html -->
    <module name="AvoidStarImport" />
    <module name="IllegalImport" /> <!-- defaults to sun.* packages -->
    <module name="RedundantImport" />
    <module name="UnusedImports">
      <property name="processJavadoc" value="false" />
    </module>

    <!-- Checks for Size Violations. -->
    <!-- See http://checkstyle.sourceforge.net/config_sizes.html -->
    <module name="LineLength">
      <!-- Ignore lines that begin with " * ", such as within a Javadoc comment. -->
      <property name="ignorePattern" value="^ *\* *[^ ]"/>
      <property name="max" value="120"/>
    </module>
    <module name="MethodLength" />
    <module name="ParameterNumber" />

    <!-- Checks for whitespace -->
    <!-- See http://checkstyle.sourceforge.net/config_whitespace.html -->
    <module name="EmptyForIteratorPad" />
    <module name="GenericWhitespace" />
    <module name="MethodParamPad" />
    <module name="NoWhitespaceAfter" />
    <module name="NoWhitespaceBefore" />
    <!-- Operator must be at end of wrapped line -->
    <module name="OperatorWrap">
      <property name="option" value="eol"/>
    </module>
    <module name="ParenPad" />
    <module name="TypecastParenPad" />
    <module name="WhitespaceAfter">
      <property name="tokens" value="COMMA, SEMI, LITERAL_IF, LITERAL_ELSE, LITERAL_WHILE, LITERAL_DO, LITERAL_FOR, DO_WHILE"/>
    </module>
    <module name="WhitespaceAround">
      <property name="allowEmptyConstructors" value="true"/>
      <property name="allowEmptyTypes" value="true"/>
    </module>

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

    <!-- Checks for blocks. You know, those {}'s -->
    <!-- See http://checkstyle.sourceforge.net/config_blocks.html -->
    <module name="AvoidNestedBlocks" />
    <module name="EmptyBlock" />
    <module name="LeftCurly" />
    <module name="NeedBraces" />
    <module name="RightCurly" />

    <!-- Checks for common coding problems -->
    <!-- See http://checkstyle.sourceforge.net/config_coding.html -->
    <module name="EmptyStatement" />
    <module name="EqualsHashCode" />
    <!-- Method parameters and local variables should not hide fields, except in constructors and setters -->
    <module name="HiddenField">
        <property name="ignoreConstructorParameter" value="true" />
        <property name="ignoreSetter" value="true" />
    </module>
    <!-- Disallow unnecessary instantiation of Boolean, String -->
    <module name="IllegalInstantiation">
      <property name="classes" value="java.lang.Boolean, java.lang.String"/>
    </module>
    <!-- Allowed for algorithm implementations. -->
    <!-- <module name="InnerAssignment" /> -->
    <!-- <module name="MagicNumber" /> -->
    <module name="MissingSwitchDefault" />
    <module name="MultipleVariableDeclarations" />
    <module name="SimplifyBooleanExpression" />
    <module name="SimplifyBooleanReturn" />

    <!-- Checks for class design -->
    <!-- See http://checkstyle.sourceforge.net/config_design.html -->
    <module name="DesignForExtension" />
    <module name="FinalClass" />
    <module name="HideUtilityClassConstructor" />
    <module name="InterfaceIsType" />
    <!-- No public fields -->
    <module name="VisibilityModifier">
       <property name="protectedAllowed" value="true"/>
    </module>

    <!-- Miscellaneous other checks. -->
    <!-- See http://checkstyle.sourceforge.net/config_misc.html -->
    <module name="ArrayTypeStyle" />
    <!-- <module name="FinalParameters" />  -->
    <module name="TodoComment">
      <property name="severity" value="warning"/>
    </module>
    <module name="UpperEll" />

    <!-- Addition to Checkstyle sun_checks.xml  -->

    <!-- Indentation of 4 spaces. -->
    <module name="Indentation">
      <!-- Indentation style recommended by Oracle -->
      <property name="caseIndent" value="0"/>
    </module>

    <!-- Switch statements should have independent cases -->
    <module name="FallThrough" />

    <!-- No System.out.println() statements -->
    <module name="Regexp">
      <!-- no sysouts -->
      <property name="format" value="System\.(out|err)\."/>
      <property name="illegalPattern" value="true"/>
    </module>

    <!-- Authors should be in pom.xml file -->
    <module name="Regexp">
      <property name="format" value="@author"/>
      <property name="illegalPattern" value="true"/>
      <property name="message" value="Developers names should be in pom file"/>
    </module>

    <!-- Use a consistent way to put declarations -->
    <module name="DeclarationOrder" />

    <!-- Don't add up parentheses when they are not required -->
    <module name="UnnecessaryParentheses" />

    <!--  Don't use too widespread catch (Exception, Throwable, RuntimeException)  -->
    <module name="IllegalCatch" />

    <!-- Don't use = or != for string comparisons -->
    <module name="StringLiteralEquality" />

    <!-- String literals more than one character long should not be repeated several times -->
    <!-- the "unchecked" string is also accepted to allow @SuppressWarnings("unchecked") -->
    <module name="MultipleStringLiterals" >
      <property name="ignoreStringsRegexp" value='^(("")|(".")|("unchecked"))$'/>
    </module>

    <!-- Check if @Override tags are present  -->
    <module name="MissingOverride" />

    <!-- Setup special comments to suppress specific checks from source files -->
    <module name="SuppressionCommentFilter">
      <property name="offCommentFormat" value="CHECKSTYLE\: stop ([\w\|]+)"/>
      <property name="onCommentFormat"  value="CHECKSTYLE\: resume ([\w\|]+)"/>
      <property name="checkFormat"      value="$1"/>
    </module>
    <module name="SuppressionCommentFilter">
      <property name="offCommentFormat" value="CHECKSTYLE\: stop all"/>
      <property name="onCommentFormat"  value="CHECKSTYLE\: resume all"/>
    </module>

  </module>

</module>
