<?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
    "-//Puppy Crawl//DTD Check Configuration 1.2//EN"
    "http://www.puppycrawl.com/dtds/configuration_1_2.dtd">

<!--

  Checkstyle configuration for Hive that is based on the sun_checks.xml file
  that is bundled with Checkstyle and includes checks for:

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

  <!-- setting the default severity to warning -->
  <property name="severity" value="warning"/>

  <!-- 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="Header">
    <property name="headerFile" value="${config_loc}/asf.header"/>
  </module>

  <!-- Maximum file line length -->
  <module name="FileLength">
    <property name="max" value="2000"/>
  </module>

  <!-- No TAB characters -->
  <module name="FileTabCharacter"/>

  <!-- Enable @SuppressWarnings processing -->
  <module name="SuppressWarningsFilter" />

  <!-- List of files to ignore -->
  <module name="SuppressionFilter">
    <property name="file" value="${config_loc}/suppressions.xml"/>
  </module>

  <!-- Ignore JavaCC/JJTree files -->
  <module name="SuppressWithNearbyCommentFilter">
    <property name="commentFormat"
              value=".*Generated By:(JJTree|JavaCC).*"/>
    <property name="checkFormat" value=".*"/>
    <property name="influenceFormat" value="100000"/>
  </module>

  <!-- Ignore generated vectorized files -->
  <module name="SuppressWithNearbyCommentFilter">
    <property name="commentFormat"
              value=".*Generated from template.*"/>
    <property name="checkFormat" value=".*"/>
    <property name="influenceFormat" value="100000"/>
  </module>

  <!-- Ignore Thrift files -->
  <module name="SuppressWithNearbyCommentFilter">
    <property name="commentFormat"
              value=".*Autogenerated by Thrift.*"/>
    <property name="checkFormat" value=".*"/>
    <property name="influenceFormat" value="100000"/>
  </module>

  <!-- Ignore Hadoop record compiler files -->
  <module name="SuppressWithNearbyCommentFilter">
    <property name="commentFormat"
              value="File generated by hadoop record compiler. Do not edit."/>
    <property name="checkFormat" value=".*"/>
    <property name="influenceFormat" value="100000"/>
  </module>

  <!-- honor on/off tags -->
  <module name="SuppressionCommentFilter">
    <property name="offCommentFormat" value="@formatter:off"/>
    <property name="onCommentFormat" value="@formatter:on"/>
  </module>
  
  <module name="TreeWalker">

    <!-- required for @SuppressWarnings -->
    <module name="SuppressWarningsHolder" />

    <!-- Required for SuppressWithNearbyCommentFilter -->
    <module name="FileContentsHolder"/>
    
    <!-- Checks for Javadoc comments.                     -->
    <!-- See http://checkstyle.sf.net/config_javadoc.html -->
    <module name="JavadocType">
      <property name="scope" value="public"/>
      <property name="allowMissingParamTags" value="true"/>
    </module>
    <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="IllegalImport"/> <!-- defaults to sun.* packages -->
    <module name="RedundantImport"/>
    <module name="UnusedImports"/>
    <module name="AvoidStarImport"/>

    <!-- Checks for Size Violations.                    -->
    <!-- See http://checkstyle.sf.net/config_sizes.html -->
    <module name="LineLength">
      <property name="max" value="120"/>
      <property name="ignorePattern" value="^ *\* *[^ ]+$"/>
    </module>
    <module name="ParameterNumber">
      <property name="id" value="maxParameterNumber"/>
      <property name="max" value="20"/>
      <property name="tokens" value="METHOD_DEF"/>
    </module>
    <module name="MethodLength"/>
    
    
    <!-- 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="ParenPad"/>
    <module name="TypecastParenPad"/>
    <module name="WhitespaceAfter">
      <property name="tokens" value="COMMA, SEMI"/>
    </module>
    
    
    <!-- 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"/>
    <module name="EmptyBlock"/>
    <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="EmptyStatement"/>
    <module name="EqualsAvoidNull"/>
    <module name="EqualsHashCode"/>
    <module name="HiddenField">
      <!-- Check local variables. Ignore parameters -->
      <property name="tokens" value="VARIABLE_DEF"/>
    </module>
    <module name="IllegalInstantiation"/>
    <module name="IllegalType">
      <property name="tokens" value="PARAMETER_DEF, METHOD_DEF, VARIABLE_DEF"/>
    </module>
    <module name="InnerAssignment"/>
    <module name="MissingSwitchDefault"/>
    <module name="MissingOverride"/>
    <module name="SimplifyBooleanExpression"/>
    <module name="SimplifyBooleanReturn"/>
    <module name="StringLiteralEquality"/>
    
    <!-- Checks for class design                         -->
    <!-- See http://checkstyle.sf.net/config_design.html -->
    <module name="FinalClass"/>
    <module name="HideUtilityClassConstructor"/>
    <module name="InterfaceIsType"/>
    <module name="VisibilityModifier">
      <property name="packageAllowed" value="true"/>
      <property name="protectedAllowed" value="true"/>
    </module>
    
    
    <!-- Miscellaneous other checks.                   -->
    <!-- See http://checkstyle.sf.net/config_misc.html -->
    <module name="ArrayTypeStyle"/>
    <module name="Indentation">
      <property name="basicOffset" value="2" />
      <property name="caseIndent" value="0" />
      <property name="throwsIndent" value="4" />
    </module>
    <module name="TodoComment"/>
    <module name="UpperEll"/>
    
  </module>
  
</module>
