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

<!--
  This version of checkstyle is based on the Hadoop and common-math
  checkstyle configurations.  It is a best effort attempt to try to match
  the CODE_CONVENTIONS and Oracle "Code Conventions for the Java
  Programming Language".  See the following link:
  
  http://www.oracle.com/technetwork/java/codeconvtoc-136057.html

  The documentation for checkstyle is available at 

  http://checkstyle.sourceforge.net 
-->

<!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.1//EN" "http://www.puppycrawl.com/dtds/configuration_1_1.dtd">

<!-- Apache giraph customization of default Checkstyle behavior -->
<module name="Checker">
  <property name="localeLanguage" value="en"/>

  <!-- Checks for headers -->
  <!-- See http://checkstyle.sf.net/config_header.html -->
    <!-- Verify that EVERY source file has the appropriate license -->
  <module name="Header">
    <property name="headerFile" value="${checkstyle.header.file}"/>
    <property name="fileExtensions" value="java"/>	  
  </module>

  <!-- Checks for Javadoc comments (checker).           -->
  <!-- See http://checkstyle.sf.net/config_javadoc.html -->
    <!-- Require package javadoc -->
  <module name="JavadocPackage"/>

  <!-- Miscellaneous other checks (checker).         -->
  <!-- See http://checkstyle.sf.net/config_misc.html -->
    <!-- Require files to end with newline characters -->
  <module name="NewlineAtEndOfFile"/>

  <!-- Checks for whitespace (tree walker)                 -->
  <!-- See http://checkstyle.sf.net/config_whitespace.html -->
    <!-- No tabs allowed! -->
  <module name="FileTabCharacter"/>

  <module name="TreeWalker">
    <property name="cacheFile" value="target/checkstyle-cachefile"/>

    <!-- Checks for blocks. You know, those {}'s         -->
    <!-- See http://checkstyle.sf.net/config_blocks.html -->
      <!-- No empty blocks (i.e. catch) -->
    <module name="EmptyBlock"/>
    <module name="AvoidNestedBlocks"/>
      <!-- No if/else/do/for/while without braces -->
    <module name="NeedBraces"/>
    <module name="LeftCurly"/>
    <module name="RightCurly"/>

    <!-- Checks for class design                         -->
    <!-- See http://checkstyle.sf.net/config_design.html -->
      <!-- Utility class should not be instantiated, they must have a
	   private constructor -->
    <module name="HideUtilityClassConstructor"/>
      <!-- Interfaces must be types (not just constants) -->
    <module name="InterfaceIsType"/>
      <!-- No public fields -->
    <module name="VisibilityModifier">
       <property name="protectedAllowed" value="true"/>
       <property name="publicMemberPattern" value="^$"/>
    </module>

    <!-- Checks for common coding problems               -->
    <!-- See http://checkstyle.sf.net/config_coding.html -->
    <module name="EmptyStatement"/>
      <!-- Require hash code override when equals is -->
    <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" />
      <property name="tokens" value="VARIABLE_DEF"/>
    </module>
      <!-- Disallow unnecessary instantiation of Boolean, String -->
    <module name="IllegalInstantiation">
      <property name="classes" value="java.lang.Boolean, java.lang.String"/>
    </module>
    <module name="InnerAssignment"/>
      <!-- Switch statements should be complete and with independent cases -->
    <module name="FallThrough" />
    <module name="MissingSwitchDefault" />
    <module name="SimplifyBooleanExpression"/>
    <module name="SimplifyBooleanReturn"/>
      <!-- Only one statment per line allowed -->
    <module name="OneStatementPerLine"/>
      <!-- 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" />
      <!-- Don't declare multiple variables in the same statement -->
    <module name="MultipleVariableDeclarations" />
      <!-- String literals more than one character long should not be 
	   repeated several times -->
      <!-- the "unchecked" string is also accepted to allow
	   @SuppressWarnings("unchecked") -->
      <!-- Disabling for now until we have a better ignoreStringsRegexp -->
      <!--
    <module name="MultipleStringLiterals" >
      <property name="ignoreStringsRegexp" value='^(("")|(".")|("unchecked"))$'/>
    </module>
      -->

    <!-- Checks for imports                              -->
    <!-- See http://checkstyle.sf.net/config_import.html -->
    <module name="RedundantImport"/>
      <!-- Import should be explicit, really needed and only from pure
	   java packages --> 
    <module name="AvoidStarImport" />
    <module name="UnusedImports" />
    <module name="IllegalImport" />

    <!-- Checks for Javadoc comments (tree walker).       -->
    <!-- See http://checkstyle.sf.net/config_javadoc.html -->
      <!-- Javadoc must be formatted correctly -->
    <module name="JavadocStyle">
      <property name="checkFirstSentence" value="false"/>
    </module>
      <!-- Must have class / interface header comments -->
    <module name="JavadocType"/>
      <!-- Require method javadocs, allow undeclared RTE, allow missing 
	   javadoc on getters and setters  -->
    <module name="JavadocMethod">
      <property name="allowMissingJavadoc" value="true"/>
      <property name="allowUndeclaredRTE" value="true"/>
      <property name="allowMissingThrowsTags" value="true"/> 
      <property name="allowMissingPropertyJavadoc" value="true"/>
      <property name="allowMissingParamTags" value="true"/>
      <property name="allowMissingReturnTag" value="true"/> 
    </module>

    <!-- Miscellaneous other checks (tree walker).     -->
    <!-- See http://checkstyle.sf.net/config_misc.html -->
      <!-- Java style arrays -->
    <module name="ArrayTypeStyle"/>

      <!-- Indentation --> 
<!-- Ignore indentation before https://github.com/checkstyle/checkstyle/issues/281 is fixed
    <module name="Indentation">
      <property name="basicOffset" value="2"/>
      <property name="braceAdjustment" value="0"/>
      <property name="caseIndent" value="0"/>
      <property name="throwsIndent" value="2"/>
      <property name="lineWrappingIndentation" value="0"/>
      <property name="arrayInitIndent" value="2"/>     
    </module>
-->
      <!-- Turn this on to see what needs to be done
    <module name="TodoComment"/>
       -->
    <module name="UpperEll"/>

    <!-- Modifier Checks                                    -->
    <!-- See http://checkstyle.sf.net/config_modifiers.html -->
      <!-- Use a consistent way to put modifiers -->
    <module name="ModifierOrder"/>
    <module name="RedundantModifier"/>

    <!-- Checks for Naming Conventions.                  -->
    <!-- See http://checkstyle.sf.net/config_naming.html -->
      <!-- Constant names should obey the traditional all uppercase 
	   naming convention -->
    <module name="ConstantName"/>
    <module name="LocalFinalVariableName"/>
    <module name="LocalVariableName"/>
    <module name="MemberName"/>
    <module name="MethodName"/>
    <module name="PackageName"/>
    <module name="ParameterName"/>
    <module name="StaticVariableName">
      <property name="format" value="^[A-Z0-9_]*$"/>
    </module>
    <module name="TypeName"/>

    <!-- Checks for regexp expressions.                  -->
    <!-- See http://checkstyle.sf.net/config_regexp.html -->    
      <!-- No trailing whitespace -->
    <module name="Regexp">
      <property name="format" value="[ \t]+$"/>
      <property name="illegalPattern" value="true"/>
      <property name="message" value="Trailing whitespace"/>
    </module> 
      <!-- No System.out.println() statements -->
    <module name="Regexp">
      <!-- No sysouts -->
      <property name="format" value="System\.out\.println"/>
      <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>

    <!-- Checks for Size Violations.                    -->
    <!-- See http://checkstyle.sf.net/config_sizes.html -->
      <!-- Lines cannot exceed 80 chars -->
    <module name="LineLength">
      <property name="max" value="80"/>
      <property name="ignorePattern" value="^import"/>
    </module>
      <!-- Over time, we will revised this down -->
    <module name="MethodLength">
      <property name="max" value="200"/>
    </module>
    <module name="ParameterNumber">
      <property name="max" value="8"/>
    </module>

    <!-- Checks for whitespace (tree walker)                 -->
    <!-- See http://checkstyle.sf.net/config_whitespace.html -->
    <module name="EmptyForIteratorPad"/>
      <!-- Spacing around methods -->
    <module name="MethodParamPad">
      <property name="option" value="nospace"/>
      <property name="allowLineBreaks" value="true"/>
     </module>
      <!-- No whitespace before a token -->
    <module name="NoWhitespaceBefore"/>
      <!-- Whitespace after tokens is required -->
    <module name="WhitespaceAfter"/>
      <!-- Whitespace around tokens is required -->
    <module name="WhitespaceAround"/>
    <module name="ParenPad"/>
    <module name="TypecastParenPad"/>
      <!-- No extra whitespace around types -->
    <module name="GenericWhitespace"/>
    <!-- Operator must be at end of wrapped line -->
    <module name="OperatorWrap">
      <property name="option" value="eol"/>
    </module>

    <!-- Required for SuppressionCommentFilter below -->
    <module name="FileContentsHolder"/>
  </module>
  
  <!-- 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>

