2016-10-13 16:37:47 -04:00
<?xml version="1.0" ?>
<!--
2018-07-11 12:55:18 -04:00
~ Licensed to the Apache Software Foundation (ASF) under one
~ or more contributor license agreements. See the NOTICE file
2016-10-13 16:37:47 -04:00
~ distributed with this work for additional information
2018-07-11 12:55:18 -04:00
~ regarding copyright ownership. The ASF licenses this file
2016-10-13 16:37:47 -04:00
~ to you under the Apache License, Version 2.0 (the
~ "License"); you may not use this file except in compliance
2018-07-11 12:55:18 -04:00
~ with the License. You may obtain a copy of the License at
2016-10-13 16:37:47 -04:00
~
2018-07-11 12:55:18 -04:00
~ http://www.apache.org/licenses/LICENSE-2.0
2016-10-13 16:37:47 -04:00
~
~ 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
2018-07-11 12:55:18 -04:00
~ KIND, either express or implied. See the License for the
2016-10-13 16:37:47 -04:00
~ specific language governing permissions and limitations
~ under the License.
-->
2018-07-11 12:55:18 -04:00
< !DOCTYPE module PUBLIC
"-//Puppy Crawl//DTD Check Configuration 1.2//EN"
"http://www.puppycrawl.com/dtds/configuration_1_2.dtd">
2016-10-13 16:37:47 -04:00
<module name= "Checker" >
2017-01-10 21:13:47 -05:00
<module name= "Header" >
<property name= "headerFile" value= "${checkstyle.header.file}" />
<property name= "fileExtensions" value= "java" />
</module>
2017-06-07 12:54:25 -04:00
<module name= "SuppressionCommentFilter" >
<property name= "offCommentFormat" value= "CHECKSTYLE.OFF\: ([\w\|]+)" />
<property name= "onCommentFormat" value= "CHECKSTYLE.ON\: ([\w\|]+)" />
<property name= "checkFormat" value= "$1" />
</module>
2016-10-13 16:37:47 -04:00
<module name= "NewlineAtEndOfFile" />
2017-03-01 02:52:53 -05:00
<module name= "FileTabCharacter" />
2016-10-13 16:37:47 -04:00
<module name= "TreeWalker" >
2017-06-07 12:54:25 -04:00
<module name= "FileContentsHolder" />
2017-10-13 10:56:19 -04:00
<module name= "RedundantModifier" >
<property name= "tokens" value= "INTERFACE_DEF,ENUM_DEF,METHOD_DEF" />
</module>
2016-10-13 16:37:47 -04:00
<!-- See http://checkstyle.sourceforge.net/checks.html for examples -->
<!-- <module name="LineLength"> -->
<!-- <property name="max" value="120"/> -->
<!-- </module> -->
<module name= "AvoidStarImport" />
2016-11-05 14:34:36 -04:00
<module name= "AvoidStaticImport" />
2016-10-13 16:37:47 -04:00
<module name= "RedundantImport" />
2016-11-05 14:34:36 -04:00
<module name= "UnusedImports" />
2016-10-13 16:37:47 -04:00
<module name= "NeedBraces" />
2017-07-21 11:26:59 -04:00
<module name= "LeftCurly" >
<property name= "option" value= "nl" />
<property name= "tokens" value= "INTERFACE_DEF,CLASS_DEF,ANNOTATION_DEF,ENUM_DEF,CTOR_DEF,METHOD_DEF" />
</module>
<module name= "LeftCurly" >
<property name= "option" value= "eol" />
<property name= "tokens" value= "LITERAL_WHILE,LITERAL_TRY,LITERAL_CATCH,LITERAL_FINALLY,LITERAL_SYNCHRONIZED,LITERAL_SWITCH,LITERAL_DO,LITERAL_IF,LITERAL_ELSE,LITERAL_FOR,STATIC_INIT,LAMBDA,ENUM_CONSTANT_DEF" />
</module>
<module name= "RightCurly" >
<property name= "option" value= "same" />
<property name= "tokens" value= "LITERAL_IF,LITERAL_ELSE,LITERAL_DO" />
</module>
<module name= "RightCurly" >
<property name= "option" value= "alone" />
<property name= "tokens" value= "LITERAL_TRY,LITERAL_CATCH,LITERAL_FINALLY,CLASS_DEF,METHOD_DEF,CTOR_DEF,LITERAL_FOR,LITERAL_WHILE,STATIC_INIT,INSTANCE_INIT" />
</module>
2017-08-05 13:18:25 -04:00
<module name= "WhitespaceAfter" />
<module name= "WhitespaceAround" >
<property name= "allowEmptyConstructors" value= "true" />
<property name= "allowEmptyMethods" value= "true" />
<property name= "allowEmptyLambdas" value= "true" />
<property name= "allowEmptyTypes" value= "true" />
2018-01-22 14:48:51 -05:00
<property name= "ignoreEnhancedForColon" value= "false" />
2017-08-05 13:18:25 -04:00
</module>
<module name= "ParenPad" />
<module name= "SingleSpaceSeparator" />
<module name= "NoWhitespaceBefore" >
<property name= "tokens" value= "COMMA,SEMI,POST_INC,POST_DEC,ELLIPSIS,METHOD_REF" />
</module>
<module name= "NoWhitespaceBefore" >
<property name= "tokens" value= "DOT" />
<property name= "allowLineBreaks" value= "true" />
</module>
<module name= "NoWhitespaceAfter" />
<module name= "NoWhitespaceAfter" >
<property name= "tokens" value= "DOT" />
<property name= "allowLineBreaks" value= "false" />
</module>
2018-04-23 15:39:14 -04:00
<module name= "GenericWhitespace" />
2017-08-05 13:18:25 -04:00
2017-09-21 16:06:48 -04:00
<module name= "Indentation" >
<property name= "basicOffset" value= "2" />
<property name= "caseIndent" value= "2" />
</module>
2018-01-18 14:29:23 -05:00
<module name= "MethodParamPad" >
<property name= "allowLineBreaks" value= "true" />
</module>
<module name= "OneStatementPerLine" />
<module name= "EmptyStatement" />
2018-01-11 03:50:42 -05:00
<module name= "ModifierOrder" />
2017-04-09 20:38:45 -04:00
<module name= "Regexp" >
<property name= "format" value= "com\.google\.common\.io\.Closer" />
<property name= "illegalPattern" value= "true" />
2018-08-30 12:56:26 -04:00
<property name= "message" value= "Use org.apache.druid.java.util.common.io.Closer instead of Guava's Closer" />
2017-04-09 20:38:45 -04:00
</module>
2017-04-27 21:11:25 -04:00
<module name= "Regexp" >
<property name= "format" value= "^// {2}" />
<property name= "illegalPattern" value= "true" />
2017-06-07 12:54:25 -04:00
<property name= "message" value= "Don't commit IntelliJ-style commented code lines" />
2017-04-27 21:11:25 -04:00
</module>
2017-05-04 14:14:41 -04:00
<module name= "Regexp" >
<property name= "format" value= "/\*[^\*].*?\n(\s*\*.*?\n)*\s+\*/[\s\n]*(transient|volatile|strictfp|synchronized|native|abstract|class|interface|enum|static|private|public|protected|default|void|byte|char|short|int|float|long|double|[A-Z])" />
<property name= "illegalPattern" value= "true" />
2017-06-07 12:54:25 -04:00
<property name= "message" value= "Comments to classes and methods must be Javadoc comments" />
</module>
<module name= "Regexp" >
<property name= "format" value= "natural\(\)[\s\n]*\.[\s\n]*nullsFirst\(\)" />
<property name= "illegalPattern" value= "true" />
<property name= "message" value= "Use Comparators.naturalNullsFirst() instead of Ordering.natural().nullsFirst()" />
2017-05-04 14:14:41 -04:00
</module>
2017-08-09 20:20:00 -04:00
<module name= "Regexp" >
<property name= "format" value= "Enums\.getIfPresent\(" />
<property name= "illegalPattern" value= "true" />
<property name= "message" value= "Use GuavaUtils.getEnumIfPresent() instead of Enums.getIfPresent()" />
</module>
2017-07-05 11:54:06 -04:00
<module name= "Regexp" >
<property name= "format" value= "(Byte|Character|Short|Integer|Long|Float|Double)\.TYPE" />
<property name= "illegalPattern" value= "true" />
<property name= "message" value= "Use primitive.class instead. But check twice that you don't actually need BoxedPrimitive.class instead of BoxedPrimitive.TYPE" />
</module>
2017-07-07 11:10:13 -04:00
<module name= "Regexp" >
<property name= "format" value= "Float\.MAX_VALUE" />
<property name= "illegalPattern" value= "true" />
<property name= "message" value= "Use Float.POSITIVE_INFINITY" />
</module>
<module name= "Regexp" >
<property name= "format" value= "Float\.MIN_VALUE" />
<property name= "illegalPattern" value= "true" />
<property name= "message" value= "Use Float.NEGATIVE_INFINITY" />
</module>
<module name= "Regexp" >
<property name= "format" value= "Double\.MAX_VALUE" />
<property name= "illegalPattern" value= "true" />
<property name= "message" value= "Use Double.POSITIVE_INFINITY" />
</module>
<module name= "Regexp" >
<property name= "format" value= "Double\.MIN_VALUE" />
<property name= "illegalPattern" value= "true" />
<property name= "message" value= "Use Double.NEGATIVE_INFINITY" />
</module>
2017-07-13 15:15:32 -04:00
<module name= "Regexp" >
<property name= "format" value= "com\.metamx\.common\.logger" />
<property name= "illegalPattern" value= "true" />
2018-08-30 12:56:26 -04:00
<property name= "message" value= "Use org.apache.druid.java.util.common.logger.Logger instead" />
2017-07-13 15:15:32 -04:00
</module>
2018-02-07 16:24:30 -05:00
<module name= "Regexp" >
<!-- Couldn't check this in forbidden - apis, because javac replaces compile - time constants without refs. -->
<property name= "format" value= "(Shorts|Chars|Ints|Longs|Floats|Doubles)\.BYTES" />
<property name= "illegalPattern" value= "true" />
<property name= "message" value= "Use java.lang.Primitive.BYTES instead." />
</module>
2018-07-27 17:56:49 -04:00
<!-- This regex should be replaced with an IntelliJ inspection when teamcity.jetbrains.com updates to at least IntelliJ 2018.1 (currently it uses 2017.2) -->
<module name= "Regexp" >
<property name= "format" value= '[a-z][a-zA-Z0-9_]*\.equals\((\"|[A-Z_]+\))' />
<property name= "illegalPattern" value= "true" />
<property name= "message" value= 'Use "string".equals(javaVar) and STRING_CONSTANT.equals(javaVar) instead of javaVar.equals("string") and javaVar.equals(STRING_CONSTANT)' />
</module>
<module name= "Regexp" >
<property name= "format" value= "toArray\([\s\n]*new [a-zA-Z0-9_]+\[[^0]" />
<property name= "illegalPattern" value= "true" />
<property name= "message" value= 'Use toArray(new Object[0]) instead' />
</module>
2018-08-02 11:20:25 -04:00
<module name= "Regexp" >
<property name= "format" value= "Strings.emptyToNull" />
<property name= "illegalPattern" value= "true" />
2018-08-30 12:56:26 -04:00
<property name= "message" value= "Use org.apache.druid.common.config.NullHandling.emptyToNullIfNeeded instead" />
2018-08-02 11:20:25 -04:00
</module>
<module name= "Regexp" >
<property name= "format" value= "Strings.nullToEmpty" />
<property name= "illegalPattern" value= "true" />
2018-08-30 12:56:26 -04:00
<property name= "message" value= "Use org.apache.druid.common.config.NullHandling.nullToEmptyIfNeeded instead" />
2018-08-02 11:20:25 -04:00
</module>
2018-09-21 20:58:19 -04:00
<module name= "PackageName" >
<property name= "format" value= "^org.apache.druid.*$" />
</module>
<module name= "PackageDeclaration" />
2016-10-13 16:37:47 -04:00
</module>
</module>