<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC
    "-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
    "https://checkstyle.org/dtds/configuration_1_3.dtd">
<!--
   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

       https://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.
-->

<module name="Checker">
  <!-- required licence file -->
  <module name="Header">
    <property name="headerFile" value="${checkstyle.src.dir}/RequiredHeader.txt"/>
    <property name="ignoreLines" value="2"/>
  </module>

  <!-- size limits -->
  <module name="FileLength"/>
  <module name="FileTabCharacter"/>

  <module name="TreeWalker">
    <!-- Javadoc requirements -->
    <module name="JavadocType">
      <property name="scope" value="protected"/>
    </module>
    <module name="JavadocMethod">
      <property name="scope" value="protected"/>
      <property name="allowUndeclaredRTE" value="true"/>
    </module>
    <module name="JavadocVariable">
       <property name="scope" value="public"/>
    </module>

    <!-- element naming -->
    <module name="PackageName"/>
    <module name="TypeName"/>
    <module name="ConstantName"/>
    <module name="LocalFinalVariableName"/>
    <module name="LocalVariableName"/>
    <module name="MemberName"/>
    <module name="MethodName"/>
    <module name="ParameterName"/>
    <module name="StaticVariableName"/>

    <!-- Import conventions -->
    <module name="AvoidStarImport"/>
    <module name="IllegalImport"/>
    <module name="RedundantImport"/>
    <module name="UnusedImports"/>

    <!-- size limits -->
    <module name="LineLength">
      <property name="max" value="100"/>
      <property name="ignorePattern" value="^ *\* *[^ ]+$"/>
      <property name="tabWidth" value="4"/>
    </module>
    <module name="MethodLength"/>
    <module name="ParameterNumber"/>

    <!-- whitespace checks -->
    <module name="EmptyForIteratorPad"/>
    <module name="NoWhitespaceAfter"/>
    <module name="NoWhitespaceBefore"/>
    <module name="OperatorWrap"/>
    <module name="ParenPad"/>
    <module name="WhitespaceAfter"/>
    <module name="WhitespaceAround"/>

    <!-- Modifier Checks -->
    <module name="ModifierOrder"/>
    <module name="RedundantModifier"/>

    <!-- Checks for blocks -->
    <module name="AvoidNestedBlocks"/>
    <module name="EmptyBlock">
      <property name="option" value="text"/>
    </module>
    <module name="LeftCurly"/>
    <module name="NeedBraces"/>
    <module name="RightCurly"/>

    <!-- Checks for common coding problems -->
    <!-- <module name="AvoidInlineConditionals"/> -->
    <module name="EmptyStatement"/>
    <module name="EqualsHashCode"/>
    <module name="IllegalInstantiation">
      <property name="classes" value="java.lang.Boolean"/>
    </module>
    <!-- <module name="InnerAssignment"/> -->
    <!-- <module name="MagicNumber"/> -->
    <module name="MissingSwitchDefault"/>
    <!-- Allow redundant throw declarations for doc purposes
    <module name="RedundantThrows">
      <property name="allowUnchecked" value="true"/>
    </module>
    -->
    <module name="SimplifyBooleanExpression"/>
    <module name="SimplifyBooleanReturn"/>

    <!-- Checks for class design -->
    <!-- <module name="DesignForExtension"/> -->
    <module name="FinalClass"/>
    <module name="HideUtilityClassConstructor"/>
    <module name="InterfaceIsType"/>
    <module name="VisibilityModifier"/>

    <!-- Miscellaneous other checks. -->
    <module name="ArrayTypeStyle"/>
    <!-- <module name="TodoComment"/> -->
    <module name="UpperEll"/>
    <!-- allow comment suppression of checks -->
    <module name="FileContentsHolder"/>
  </module>

  <module name="RegexpSingleline">
    <!-- \s matches whitespace character, $ matches end of line. -->
    <property name="format" value="\s+$"/>
  </module>

  <!-- <module name="au.com.redhillconsulting.simian.SimianCheck"/> -->
  <module name="SuppressionCommentFilter">
    <property name="offCommentFormat" value="CheckStyle\:([\w\|]+) *OFF"/>
    <property name="onCommentFormat" value="CheckStyle\:([\w\|]+) *ON"/>
    <property name="checkFormat" value="$1"/>
  </module>

</module>
