<?xml version="1.0" encoding="UTF-8"?>
<!-- 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 Apache Drill -->

<module name="Checker">

  <module name="TreeWalker">

    <module name="IllegalImport">
      <!-- For "org.apache.commons.lang.*" classes use the corresponding class from "org.apache.commons.lang3.*" -->
      <property name="illegalPkgs" value="com.google.hive12,com.beust.jcommander.internal,jersey.repackaged,org.apache.commons.lang"/>
    </module>

    <module name="AvoidStarImport">
      <property name="allowStaticMemberImports" value="true"/>
    </module>

    <module name="NeedBraces"/>

  </module>

  <module name="FileTabCharacter"/>

  <module name="RegexpSingleline">
    <property name="format" value="\s+$"/>
    <property name="message" value="A line of code cannot contain any trailing whitespace"/>
  </module>

</module>
