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

<module name="Checker">
  <module name="FileTabCharacter">
    <property name="eachLine" value="true" />
  </module>

  <module name="TreeWalker">
    <module name="LineLength">
      <property name="max" value="1024" />
    </module>
    <module name="RedundantImport" />
    <module name="UnusedImports" />
    <module name="MemberName">
      <property name="format" value="^_?[a-zA-Z0-9]*$" />
    </module>
	<module name="LocalFinalVariableName">
	  <property name="format" value="^[a-zA-Z][a-zA-Z0-9_]*$" />
	</module>
	<module name="StaticVariableName">
	  <property name="format" value="^(s_)?[a-z][a-zA-Z0-9]*$"/>
	</module>
	<module name="ConstantName">
	  <property name="format" value="^[a-zA-Z][a-zA-Z0-9_]*$"/>
	</module>
    <module name="PackageName" />
    <module name="PackageDeclaration"><property name="matchDirectoryStructure" value="true"/></module>
    <module name="ParameterName" />
    <module name="TypeName" />
    <module name="AvoidStarImport" />
  </module>

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

  <!-- some modules that we should soon add <module name="MagicNumber"/> -->

  <!-- some modules that we should soon add -->

</module>
