This is an automated email from the ASF dual-hosted git repository. madhan pushed a commit to branch atlas-2.5 in repository https://gitbox.apache.org/repos/asf/atlas.git
commit 4e10950f0b83082cfd16b80b5af7e08fb9e10445 Author: Madhan Neethiraj <mad...@apache.org> AuthorDate: Thu Jan 23 20:56:08 2025 -0800 ATLAS-4937: update checkstyle to improve code readability (#269) (cherry picked from commit e25a32d045b8689174efb8f3046ba19a5c56dfb6) --- build-tools/src/main/resources/checkstyle.xml | 240 ---------- dev-support/AtlasCodeScheme-IntelliJ.xml | 501 +++++++++++++++++++++ .../checkstyle-suppressions.xml | 6 +- dev-support/checkstyle.xml | 272 +++++++++++ pom.xml | 22 +- 5 files changed, 790 insertions(+), 251 deletions(-) diff --git a/build-tools/src/main/resources/checkstyle.xml b/build-tools/src/main/resources/checkstyle.xml deleted file mode 100755 index 54423176f..000000000 --- a/build-tools/src/main/resources/checkstyle.xml +++ /dev/null @@ -1,240 +0,0 @@ -<?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 Metadata 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"> - - <!-- Checks that a package.html file exists for each package. --> - <!-- See http://checkstyle.sf.net/config_javadoc.html#PackageHtml --> - <!-- module name="PackageHtml"/ --> - - <!-- Checks whether files end with a new line. --> - <!-- See http://checkstyle.sf.net/config_misc.html#NewlineAtEndOfFile --> - <module name="NewlineAtEndOfFile"/> - - <!-- Checks for Headers --> - <!-- See http://checkstyle.sf.net/config_header.html --> - <module name="Header"> - <property name="headerFile" value="${checkstyle.header.file}"/> - <property name="fileExtensions" value="java"/> - </module> - - <module name="FileLength"/> - <module name="FileTabCharacter"/> - - <module name="TreeWalker"> - <!-- 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"/> - - <module name="SuperClone"/> - <module name="SuperFinalize"/> - - <!-- Checks for Naming Conventions. --> - <!-- See http://checkstyle.sf.net/config_naming.html --> - <module name="ConstantName"/> - <module name="ClassTypeParameterName"> - <property name="format" value="^[A-Z]+$"/> - </module> - <module name="LocalFinalVariableName"> - <!--<property name="format" value="^[A-Z][_A-Z0-9]*$"/>--> - </module> - <module name="LocalVariableName"/> - <module name="MemberName"/> - <module name="MethodName"/> - <module name="MethodTypeParameterName"> - <property name="format" value="^[A-Z]+$"/> - </module> - <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"/> - - - <!-- Checks for Size Violations. --> - <!-- See http://checkstyle.sf.net/config_sizes.html --> - <module name="LineLength"> - <property name="max" value="120"/> - </module> - <module name="MethodLength"/> - <module name="ParameterNumber"> - <property name="tokens" value="METHOD_DEF"/> - </module> - <module name="OuterTypeNumber"/> - - <!-- Checks for whitespace --> - <!-- See http://checkstyle.sf.net/config_whitespace.html --> - <module name="GenericWhitespace"/> - <module name="EmptyForIteratorPad"/> - <module name="MethodParamPad"/> - <module name="WhitespaceAround"> - <property name="tokens" value="LITERAL_IF"/> - </module> - <module name="NoWhitespaceAfter"> - <property name="tokens" - value="BNOT, DEC, DOT, INC, LNOT, UNARY_MINUS, UNARY_PLUS"/> - </module> - <module name="NoWhitespaceBefore"/> - <module name="OperatorWrap"/> - <module name="ParenPad"/> - <module name="TypecastParenPad"/> - <module name="WhitespaceAfter"> - <property name="tokens" value="COMMA, SEMI"/> - </module> - - <module name="Regexp"> - <property name="format" value="[ \t]+$"/> - <property name="illegalPattern" value="true"/> - <property name="message" value="Trailing whitespace"/> - </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"> - <!-- catch blocks need a statement or a comment. --> - <property name="option" value="text"/> - <property name="tokens" value="LITERAL_CATCH"/> - </module> - <module name="EmptyBlock"> - <!-- all other blocks need a real statement. --> - <property name="option" value="stmt"/> - <property name="tokens" value="LITERAL_DO, LITERAL_ELSE, LITERAL_FINALLY, - LITERAL_IF, LITERAL_FOR, LITERAL_TRY, LITERAL_WHILE, INSTANCE_INIT, - STATIC_INIT"/> - </module> - <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"/--> - <!-- DoubleCheckedLocking check is no longer required. See http://checkstyle.sourceforge.net/releasenotes.html --> - <!-- module name="DoubleCheckedLocking"/--> - <module name="EmptyStatement"/> - <module name="EqualsHashCode"/> - <module name="StringLiteralEquality"/> - <module name="HiddenField"> - <property name="ignoreConstructorParameter" value="true"/> - <property name="ignoreAbstractMethods" value="true"/> - <property name="ignoreSetter" value="true"/> - </module> - <module name="IllegalInstantiation"/> - <module name="InnerAssignment"/> - <module name="MissingSwitchDefault"/> - <module name="RedundantThrows"/> - <module name="SimplifyBooleanExpression"/> - <module name="SimplifyBooleanReturn"/> - <module name="DefaultComesLast"/> - - <!-- 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="protectedAllowed" value="true"/> - </module> - <module name="MissingOverride"/> - - - <!-- Miscellaneous other checks. --> - <!-- See http://checkstyle.sf.net/config_misc.html --> - <module name="ArrayTypeStyle"/> - <module name="ArrayTrailingComma"/> - <!-- - This generates too many false-positives on wrapped 'throws' clauses - to be really useful. Disabled for now. - - Metadata style is: - * Spaces, not tabs. - * Indent by four spaces. - * Indent by four spaces when wrapping a line. - --> - <module name="Indentation"> - <property name="basicOffset" value="4"/> - <property name="caseIndent" value="0"/> - </module> - <module name="TodoComment"/> - <module name="UpperEll"/> - - <module name="FileContentsHolder"/> - </module> - - <!-- allow warnings to be suppressed --> - <module name="SuppressionCommentFilter"> - <property name="offCommentFormat" value="SUSPEND CHECKSTYLE CHECK ParameterNumberCheck|VisibilityModifierCheck|HiddenFieldCheck|MethodName"/> - <property name="onCommentFormat" value="RESUME CHECKSTYLE CHECK ParameterNumberCheck|VisibilityModifierCheck|HiddenFieldCheck|MethodName"/> - <property name="checkFormat" value="ParameterNumberCheck|VisibilityModifierCheck|HiddenFieldCheck|MethodName"/> - </module> - - <module name="SuppressionFilter"> - <property name="file" value="${checkstyle.suppressions.file}"/> - </module> -</module> diff --git a/dev-support/AtlasCodeScheme-IntelliJ.xml b/dev-support/AtlasCodeScheme-IntelliJ.xml new file mode 100644 index 000000000..f3edfb2a0 --- /dev/null +++ b/dev-support/AtlasCodeScheme-IntelliJ.xml @@ -0,0 +1,501 @@ +<?xml version="1.0" encoding="UTF-8"?> +<code_scheme name="ApacheAtlas"> + <option name="CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND" value="9999" /> + <option name="NAMES_COUNT_TO_USE_IMPORT_ON_DEMAND" value="9999" /> + <option name="PACKAGES_TO_USE_IMPORT_ON_DEMAND"> + <value /> + </option> + <option name="IMPORT_LAYOUT_TABLE"> + <value> + <package name="" withSubpackages="true" static="false" /> + <emptyLine /> + <package name="javax" withSubpackages="true" static="false" /> + <emptyLine /> + <package name="java" withSubpackages="true" static="false" /> + <emptyLine /> + <package name="" withSubpackages="true" static="true" /> + </value> + </option> + <option name="RIGHT_MARGIN" value="512" /> + <option name="JD_ALIGN_PARAM_COMMENTS" value="false" /> + <option name="JD_ALIGN_EXCEPTION_COMMENTS" value="false" /> + <option name="JD_PRESERVE_LINE_FEEDS" value="true" /> + <option name="HTML_DO_NOT_INDENT_CHILDREN_OF" value="html,body,thead,tbody,tfoot,script" /> + <option name="KEEP_CONTROL_STATEMENT_IN_ONE_LINE" value="false" /> + <option name="KEEP_BLANK_LINES_IN_DECLARATIONS" value="1" /> + <option name="KEEP_BLANK_LINES_IN_CODE" value="1" /> + <option name="KEEP_BLANK_LINES_BEFORE_RBRACE" value="0" /> + <option name="CLASS_BRACE_STYLE" value="1" /> + <option name="METHOD_BRACE_STYLE" value="1" /> + <option name="ELSE_ON_NEW_LINE" value="false" /> + <option name="WHILE_ON_NEW_LINE" value="true" /> + <option name="CATCH_ON_NEW_LINE" value="false" /> + <option name="FINALLY_ON_NEW_LINE" value="false" /> + <option name="ALIGN_MULTILINE_PARAMETERS" value="false" /> + <option name="ALIGN_MULTILINE_ASSIGNMENT" value="true" /> + <option name="ALIGN_MULTILINE_ARRAY_INITIALIZER_EXPRESSION" value="true" /> + <option name="SPACE_WITHIN_ARRAY_INITIALIZER_BRACES" value="true" /> + <option name="SPACE_BEFORE_ARRAY_INITIALIZER_LBRACE" value="true" /> + <option name="SPACE_WITHIN_BRACES" value="true" /> + <option name="CALL_PARAMETERS_WRAP" value="5" /> + <option name="EXTENDS_LIST_WRAP" value="1" /> + <option name="THROWS_LIST_WRAP" value="1" /> + <option name="EXTENDS_KEYWORD_WRAP" value="1" /> + <option name="THROWS_KEYWORD_WRAP" value="1" /> + <option name="METHOD_CALL_CHAIN_WRAP" value="5" /> + <option name="TERNARY_OPERATION_WRAP" value="5" /> + <option name="KEEP_SIMPLE_CLASSES_IN_ONE_LINE" value="true" /> + <option name="FOR_STATEMENT_WRAP" value="5" /> + <option name="ARRAY_INITIALIZER_WRAP" value="1" /> + <option name="ASSERT_STATEMENT_WRAP" value="5" /> + <option name="IF_BRACE_FORCE" value="3" /> + <option name="DOWHILE_BRACE_FORCE" value="3" /> + <option name="WHILE_BRACE_FORCE" value="3" /> + <option name="FOR_BRACE_FORCE" value="3" /> + <JavaCodeStyleSettings> + <option name="CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND" value="9999" /> + <option name="NAMES_COUNT_TO_USE_IMPORT_ON_DEMAND" value="9999" /> + <option name="PACKAGES_TO_USE_IMPORT_ON_DEMAND"> + <value /> + </option> + <option name="IMPORT_LAYOUT_TABLE"> + <value> + <package name="" withSubpackages="true" static="false" /> + <emptyLine /> + <package name="javax" withSubpackages="true" static="false" /> + <emptyLine /> + <package name="java" withSubpackages="true" static="false" /> + <emptyLine /> + <package name="" withSubpackages="true" static="true" /> + </value> + </option> + <option name="JD_ALIGN_PARAM_COMMENTS" value="false" /> + <option name="JD_ALIGN_EXCEPTION_COMMENTS" value="false" /> + </JavaCodeStyleSettings> + <XML> + <option name="XML_ATTRIBUTE_WRAP" value="0" /> + <option name="XML_TEXT_WRAP" value="0" /> + <option name="XML_KEEP_BLANK_LINES" value="1" /> + <option name="XML_SPACE_INSIDE_EMPTY_TAG" value="true" /> + <option name="XML_LEGACY_SETTINGS_IMPORTED" value="true" /> + </XML> + <ADDITIONAL_INDENT_OPTIONS fileType="clj"> + <option name="INDENT_SIZE" value="2" /> + <option name="TAB_SIZE" value="2" /> + </ADDITIONAL_INDENT_OPTIONS> + <ADDITIONAL_INDENT_OPTIONS fileType="gsp"> + <option name="INDENT_SIZE" value="2" /> + </ADDITIONAL_INDENT_OPTIONS> + <ADDITIONAL_INDENT_OPTIONS fileType="scala"> + <option name="INDENT_SIZE" value="2" /> + <option name="TAB_SIZE" value="2" /> + </ADDITIONAL_INDENT_OPTIONS> + <codeStyleSettings language="CoffeeScript"> + <indentOptions> + <option name="CONTINUATION_INDENT_SIZE" value="4" /> + <option name="USE_RELATIVE_INDENTS" value="true" /> + </indentOptions> + </codeStyleSettings> + <codeStyleSettings language="Groovy"> + <option name="KEEP_CONTROL_STATEMENT_IN_ONE_LINE" value="false" /> + <option name="KEEP_BLANK_LINES_IN_DECLARATIONS" value="1" /> + <option name="KEEP_BLANK_LINES_IN_CODE" value="1" /> + <option name="KEEP_BLANK_LINES_BEFORE_RBRACE" value="0" /> + <option name="CLASS_BRACE_STYLE" value="2" /> + <option name="METHOD_BRACE_STYLE" value="2" /> + <option name="ELSE_ON_NEW_LINE" value="true" /> + <option name="CATCH_ON_NEW_LINE" value="true" /> + <option name="FINALLY_ON_NEW_LINE" value="true" /> + <option name="ALIGN_MULTILINE_PARAMETERS" value="false" /> + <option name="ALIGN_MULTILINE_ASSIGNMENT" value="true" /> + <option name="CALL_PARAMETERS_WRAP" value="5" /> + <option name="EXTENDS_LIST_WRAP" value="1" /> + <option name="THROWS_LIST_WRAP" value="1" /> + <option name="EXTENDS_KEYWORD_WRAP" value="2" /> + <option name="THROWS_KEYWORD_WRAP" value="2" /> + <option name="METHOD_CALL_CHAIN_WRAP" value="5" /> + <option name="TERNARY_OPERATION_WRAP" value="5" /> + <option name="FOR_STATEMENT_WRAP" value="5" /> + <option name="ASSERT_STATEMENT_WRAP" value="5" /> + <option name="IF_BRACE_FORCE" value="3" /> + <option name="WHILE_BRACE_FORCE" value="3" /> + <option name="FOR_BRACE_FORCE" value="3" /> + <option name="PARENT_SETTINGS_INSTALLED" value="true" /> + <indentOptions> + <option name="INDENT_SIZE" value="2" /> + </indentOptions> + </codeStyleSettings> + <codeStyleSettings language="JAVA"> + <option name="ALIGN_GROUP_FIELD_DECLARATIONS" value="true" /> + <option name="ALIGN_CONSECUTIVE_VARIABLE_DECLARATIONS" value="true" /> + <option name="ALIGN_CONSECUTIVE_ASSIGNMENTS" value="true" /> + <option name="ALIGN_SUBSEQUENT_SIMPLE_METHODS" value="true" /> + <option name="KEEP_CONTROL_STATEMENT_IN_ONE_LINE" value="false" /> + <option name="KEEP_BLANK_LINES_IN_DECLARATIONS" value="1" /> + <option name="KEEP_BLANK_LINES_IN_CODE" value="1" /> + <option name="KEEP_BLANK_LINES_BEFORE_RBRACE" value="0" /> + <option name="CLASS_BRACE_STYLE" value="1" /> + <option name="METHOD_BRACE_STYLE" value="1" /> + <option name="ELSE_ON_NEW_LINE" value="false" /> + <option name="WHILE_ON_NEW_LINE" value="true" /> + <option name="CATCH_ON_NEW_LINE" value="false" /> + <option name="FINALLY_ON_NEW_LINE" value="false" /> + <option name="ALIGN_MULTILINE_PARAMETERS" value="false" /> + <option name="ALIGN_MULTILINE_RESOURCES" value="false" /> + <option name="ALIGN_MULTILINE_FOR" value="false" /> + <option name="ALIGN_MULTILINE_ASSIGNMENT" value="true" /> + <option name="SPACE_BEFORE_ARRAY_INITIALIZER_LBRACE" value="true" /> + <option name="EXTENDS_LIST_WRAP" value="1" /> + <option name="THROWS_LIST_WRAP" value="1" /> + <option name="EXTENDS_KEYWORD_WRAP" value="1" /> + <option name="THROWS_KEYWORD_WRAP" value="1" /> + <option name="KEEP_SIMPLE_BLOCKS_IN_ONE_LINE" value="false" /> + <option name="KEEP_SIMPLE_METHODS_IN_ONE_LINE" value="true" /> + <option name="KEEP_SIMPLE_LAMBDAS_IN_ONE_LINE" value="true" /> + <option name="KEEP_SIMPLE_CLASSES_IN_ONE_LINE" value="true" /> + <option name="ARRAY_INITIALIZER_WRAP" value="1" /> + <option name="ASSERT_STATEMENT_WRAP" value="5" /> + <option name="IF_BRACE_FORCE" value="3" /> + <option name="DOWHILE_BRACE_FORCE" value="3" /> + <option name="WHILE_BRACE_FORCE" value="3" /> + <option name="FOR_BRACE_FORCE" value="3" /> + <option name="FIELD_ANNOTATION_WRAP" value="0" /> + <option name="PARENT_SETTINGS_INSTALLED" value="true" /> + <arrangement> + <groups> + <group> + <type>GETTERS_AND_SETTERS</type> + <order>KEEP</order> + </group> + <group> + <type>OVERRIDDEN_METHODS</type> + <order>KEEP</order> + </group> + </groups> + <rules> + <rule> + <match> + <AND> + <FIELD /> + <FINAL /> + <PUBLIC /> + <STATIC /> + </AND> + </match> + </rule> + <rule> + <match> + <AND> + <FIELD /> + <FINAL /> + <PROTECTED /> + <STATIC /> + </AND> + </match> + </rule> + <rule> + <match> + <AND> + <FIELD /> + <FINAL /> + <PACKAGE_PRIVATE /> + <STATIC /> + </AND> + </match> + </rule> + <rule> + <match> + <AND> + <FIELD /> + <FINAL /> + <PRIVATE /> + <STATIC /> + </AND> + </match> + </rule> + <rule> + <match> + <AND> + <FIELD /> + <PUBLIC /> + <STATIC /> + </AND> + </match> + </rule> + <rule> + <match> + <AND> + <FIELD /> + <PROTECTED /> + <STATIC /> + </AND> + </match> + </rule> + <rule> + <match> + <AND> + <FIELD /> + <PACKAGE_PRIVATE /> + <STATIC /> + </AND> + </match> + </rule> + <rule> + <match> + <AND> + <FIELD /> + <PRIVATE /> + <STATIC /> + </AND> + </match> + </rule> + <rule> + <match> + <AND> + <FIELD /> + <FINAL /> + <PUBLIC /> + </AND> + </match> + </rule> + <rule> + <match> + <AND> + <FIELD /> + <FINAL /> + <PROTECTED /> + </AND> + </match> + </rule> + <rule> + <match> + <AND> + <FIELD /> + <FINAL /> + <PACKAGE_PRIVATE /> + </AND> + </match> + </rule> + <rule> + <match> + <AND> + <FIELD /> + <FINAL /> + <PRIVATE /> + </AND> + </match> + </rule> + <rule> + <match> + <AND> + <FIELD /> + <PUBLIC /> + </AND> + </match> + </rule> + <rule> + <match> + <AND> + <FIELD /> + <PROTECTED /> + </AND> + </match> + </rule> + <rule> + <match> + <AND> + <FIELD /> + <PACKAGE_PRIVATE /> + </AND> + </match> + </rule> + <rule> + <match> + <AND> + <FIELD /> + <PRIVATE /> + </AND> + </match> + </rule> + <rule> + <match> + <FIELD /> + </match> + </rule> + <rule> + <match> + <CONSTRUCTOR /> + </match> + </rule> + <rule> + <match> + <AND> + <METHOD /> + <STATIC /> + <PUBLIC /> + </AND> + </match> + </rule> + <rule> + <match> + <AND> + <METHOD /> + <STATIC /> + <PROTECTED /> + </AND> + </match> + </rule> + <rule> + <match> + <AND> + <METHOD /> + <STATIC /> + <PACKAGE_PRIVATE /> + </AND> + </match> + </rule> + <rule> + <match> + <AND> + <METHOD /> + <PUBLIC /> + </AND> + </match> + </rule> + <rule> + <match> + <AND> + <METHOD /> + <PROTECTED /> + </AND> + </match> + </rule> + <rule> + <match> + <AND> + <METHOD /> + <PACKAGE_PRIVATE /> + </AND> + </match> + </rule> + <rule> + <match> + <METHOD /> + </match> + </rule> + <rule> + <match> + <ENUM /> + </match> + </rule> + <rule> + <match> + <INTERFACE /> + </match> + </rule> + <rule> + <match> + <AND> + <CLASS /> + <STATIC /> + </AND> + </match> + </rule> + <rule> + <match> + <CLASS /> + </match> + </rule> + </rules> + </arrangement> + </codeStyleSettings> + <codeStyleSettings language="JavaScript"> + <option name="ELSE_ON_NEW_LINE" value="true" /> + <option name="WHILE_ON_NEW_LINE" value="true" /> + <option name="CATCH_ON_NEW_LINE" value="true" /> + <option name="FINALLY_ON_NEW_LINE" value="true" /> + <option name="ALIGN_MULTILINE_PARAMETERS" value="false" /> + <option name="ALIGN_MULTILINE_FOR" value="false" /> + <option name="ALIGN_MULTILINE_ARRAY_INITIALIZER_EXPRESSION" value="true" /> + <option name="KEEP_SIMPLE_BLOCKS_IN_ONE_LINE" value="true" /> + <option name="KEEP_SIMPLE_METHODS_IN_ONE_LINE" value="true" /> + <option name="ARRAY_INITIALIZER_WRAP" value="1" /> + <option name="IF_BRACE_FORCE" value="3" /> + <option name="DOWHILE_BRACE_FORCE" value="3" /> + <option name="WHILE_BRACE_FORCE" value="3" /> + <option name="FOR_BRACE_FORCE" value="3" /> + <option name="PARENT_SETTINGS_INSTALLED" value="true" /> + </codeStyleSettings> + <codeStyleSettings language="PHP"> + <option name="KEEP_CONTROL_STATEMENT_IN_ONE_LINE" value="false" /> + <option name="KEEP_BLANK_LINES_IN_DECLARATIONS" value="1" /> + <option name="KEEP_BLANK_LINES_IN_CODE" value="1" /> + <option name="KEEP_BLANK_LINES_BEFORE_RBRACE" value="0" /> + <option name="ELSE_ON_NEW_LINE" value="true" /> + <option name="WHILE_ON_NEW_LINE" value="true" /> + <option name="CATCH_ON_NEW_LINE" value="true" /> + <option name="ALIGN_MULTILINE_PARAMETERS" value="false" /> + <option name="ALIGN_MULTILINE_ARRAY_INITIALIZER_EXPRESSION" value="true" /> + <option name="SPACE_WITHIN_ARRAY_INITIALIZER_BRACES" value="true" /> + <option name="SPACE_BEFORE_ARRAY_INITIALIZER_LBRACE" value="true" /> + <option name="CALL_PARAMETERS_WRAP" value="5" /> + <option name="EXTENDS_LIST_WRAP" value="1" /> + <option name="EXTENDS_KEYWORD_WRAP" value="2" /> + <option name="METHOD_CALL_CHAIN_WRAP" value="5" /> + <option name="TERNARY_OPERATION_WRAP" value="5" /> + <option name="FOR_STATEMENT_WRAP" value="5" /> + <option name="ARRAY_INITIALIZER_WRAP" value="1" /> + <option name="IF_BRACE_FORCE" value="3" /> + <option name="DOWHILE_BRACE_FORCE" value="3" /> + <option name="WHILE_BRACE_FORCE" value="3" /> + <option name="FOR_BRACE_FORCE" value="3" /> + <option name="PARENT_SETTINGS_INSTALLED" value="true" /> + </codeStyleSettings> + <codeStyleSettings language="Python"> + <option name="KEEP_BLANK_LINES_IN_DECLARATIONS" value="1" /> + <option name="KEEP_BLANK_LINES_IN_CODE" value="1" /> + <option name="ALIGN_MULTILINE_PARAMETERS" value="false" /> + <option name="PARENT_SETTINGS_INSTALLED" value="true" /> + </codeStyleSettings> + <codeStyleSettings language="SQL"> + <indentOptions> + <option name="CONTINUATION_INDENT_SIZE" value="2" /> + </indentOptions> + </codeStyleSettings> + <codeStyleSettings language="Shell Script"> + <indentOptions> + <option name="INDENT_SIZE" value="4" /> + </indentOptions> + </codeStyleSettings> + <codeStyleSettings language="TypeScript"> + <option name="KEEP_BLANK_LINES_IN_CODE" value="1" /> + <option name="CLASS_BRACE_STYLE" value="2" /> + <option name="METHOD_BRACE_STYLE" value="2" /> + <option name="ELSE_ON_NEW_LINE" value="true" /> + <option name="WHILE_ON_NEW_LINE" value="true" /> + <option name="CATCH_ON_NEW_LINE" value="true" /> + <option name="FINALLY_ON_NEW_LINE" value="true" /> + <option name="ALIGN_MULTILINE_PARAMETERS" value="false" /> + <option name="ALIGN_MULTILINE_ARRAY_INITIALIZER_EXPRESSION" value="true" /> + <option name="CALL_PARAMETERS_WRAP" value="5" /> + <option name="EXTENDS_LIST_WRAP" value="1" /> + <option name="EXTENDS_KEYWORD_WRAP" value="2" /> + <option name="TERNARY_OPERATION_WRAP" value="5" /> + <option name="FOR_STATEMENT_WRAP" value="5" /> + <option name="ARRAY_INITIALIZER_WRAP" value="1" /> + <option name="IF_BRACE_FORCE" value="3" /> + <option name="DOWHILE_BRACE_FORCE" value="3" /> + <option name="WHILE_BRACE_FORCE" value="3" /> + <option name="FOR_BRACE_FORCE" value="3" /> + <option name="PARENT_SETTINGS_INSTALLED" value="true" /> + </codeStyleSettings> + <codeStyleSettings language="jet"> + <option name="ALIGN_MULTILINE_PARAMETERS" value="false" /> + <option name="PARENT_SETTINGS_INSTALLED" value="true" /> + </codeStyleSettings> + <codeStyleSettings language="ruby"> + <option name="KEEP_BLANK_LINES_IN_DECLARATIONS" value="1" /> + <option name="ALIGN_MULTILINE_PARAMETERS" value="false" /> + <option name="PARENT_SETTINGS_INSTALLED" value="true" /> + </codeStyleSettings> +</code_scheme> diff --git a/build-tools/src/main/resources/checkstyle-suppressions.xml b/dev-support/checkstyle-suppressions.xml similarity index 79% rename from build-tools/src/main/resources/checkstyle-suppressions.xml rename to dev-support/checkstyle-suppressions.xml index 759a52ec7..d56f4a143 100644 --- a/build-tools/src/main/resources/checkstyle-suppressions.xml +++ b/dev-support/checkstyle-suppressions.xml @@ -24,6 +24,8 @@ <suppressions> <suppress checks="JavadocType" files="[/\\]src[/\\]test[/\\]java[/\\]"/> - <!-- skip checks on customized titan 0.5.4 files --> - <suppress checks="[a-zA-Z0-9]*" files="[/\\]com[/\\]thinkaurelius[/\\]titan[/\\]"/> + <suppress files="[*]*.properties" checks="[a-zA-Z0-9]*"/> + <suppress files="[\\/]target[\\/]" checks="[a-zA-Z0-9]*"/> + <suppress files="[\\/]generated-sources[\\/]" checks="[a-zA-Z0-9]*"/> + <suppress files="[\\/]surefire-reports[\\/]" checks="[a-zA-Z0-9]*"/> </suppressions> diff --git a/dev-support/checkstyle.xml b/dev-support/checkstyle.xml new file mode 100755 index 000000000..349971428 --- /dev/null +++ b/dev-support/checkstyle.xml @@ -0,0 +1,272 @@ +<?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.3//EN" + "http://checkstyle.sourceforge.net/dtds/configuration_1_3.dtd"> +<module name="Checker"> + <module name="SuppressWithPlainTextCommentFilter"> + <property name="offCommentFormat" value='"""'/> + <property name="onCommentFormat" value='"""'/> + </module> + + <module name="FileTabCharacter" /> + <module name="NewlineAtEndOfFile"> + <property name="lineSeparator" value="lf" /> + </module> + <module name="RegexpMultiline"> + <property name="format" value="\r" /> + <property name="message" value="Line contains carriage return" /> + </module> + <module name="RegexpMultiline"> + <property name="format" value=" \n" /> + <property name="message" value="Line has trailing whitespace" /> + </module> + <module name="RegexpMultiline"> + <property name="format" value="\n\n\n" /> + <property name="message" value="Multiple consecutive blank lines" /> + </module> + <module name="RegexpMultiline"> + <property name="format" value="\n\n\Z" /> + <property name="message" value="Blank line before end of file" /> + </module> + + <module name="RegexpMultiline"> + <property name="format" value="\{\n\n" /> + <property name="message" value="Blank line after opening brace" /> + </module> + <module name="RegexpMultiline"> + <property name="format" value="\n\n\s*\}" /> + <property name="message" value="Blank line before closing brace" /> + </module> + <module name="RegexpMultiline"> + <property name="format" value="[^;]\s\)+\s*[\{;,]?\s*\n" /> + <property name="message" value="Whitespace character before closing parenthesis" /> + </module> + <module name="RegexpMultiline"> + <property name="format" value="->\s*\{\s+\}" /> + <property name="message" value="Whitespace inside empty lambda body" /> + </module> + <module name="RegexpMultiline"> + <property name="format" value="->(\s*+(//.*+)?\n)++\s*+\{" /> + <property name="message" value="Lambda opening brace should be on the same line as ->" /> + </module> + + <module name="RegexpSingleline"> + <property name="format" value="^import static .*\.(of|copyOf|valueOf|builder);$" /> + <property name="message" value="The following methods may not be statically imported: of, copyOf, valueOf, builder" /> + </module> + <module name="RegexpSingleline"> + <property name="format" value="^import static (?!java\.lang\.String\.format;).*\.format;" /> + <property name="message" value="Only 'format' from java.lang.String may be statically imported" /> + </module> + <module name="RegexpSingleline"> + <property name="format" value="^import static java\.util\.Optional\." /> + <property name="message" value="Members of Optional may not be statically imported" /> + </module> + + <module name="RegexpSingleline"> + <property name="format" value="^(?!import ).*Objects\.requireNonNull" /> + <property name="message" value="Objects.requireNonNull should only be used with static imports" /> + </module> + <module name="RegexpSingleline"> + <property name="format" value="^(?!import ).*Math\.toIntExact" /> + <property name="message" value="Math.toIntExact should only be used with static imports" /> + </module> + <module name="RegexpSingleline"> + <property name="format" value="^(?!import ).*ImmutableMap\.toImmutableMap" /> + <property name="message" value="ImmutableMap.toImmutableMap should only be used with static imports" /> + </module> + <module name="RegexpSingleline"> + <property name="format" value="^(?!import ).*ImmutableList\.toImmutableList" /> + <property name="message" value="ImmutableList.toImmutableList should only be used with static imports" /> + </module> + <module name="RegexpSingleline"> + <property name="format" value="^(?!import ).*ImmutableSet\.toImmutableSet" /> + <property name="message" value="ImmutableSet.toImmutableSet should only be used with static imports" /> + </module> + <module name="RegexpMultiline"> + <property name="format" value="^[ \t]*import org\.testng\.Assert;$" /> + <property name="message" value="org.testng.Assert should only be used with static imports" /> + </module> + <module name="RegexpMultiline"> + <property name="format" value="^[ \t]*import com\.google\.common\.base\.MoreObjects;$" /> + <property name="message" value="com.google.common.base.MoreObjects should only be used with static imports" /> + </module> + <module name="RegexpMultiline"> + <property name="format" value="^[ \t]*import com\.google\.common\.base\.Preconditions;$" /> + <property name="message" value="com.google.common.base.Preconditions should only be used with static imports" /> + </module> + <module name="RegexpMultiline"> + <property name="format" value="^[ \t]*import com\.google\.common\.base\.Verify;$" /> + <property name="message" value="com.google.common.base.Verify should only be used with static imports" /> + </module> + + <module name="SuppressWarningsFilter" /> + + <module name="TreeWalker"> + <module name="SuppressWarningsHolder" /> + + <module name="SuppressionXpathSingleFilter"> + <property name="checks" value="RedundantModifier"/> + <property name="query" value="//(CLASS_DEF)/OBJBLOCK/*/MODIFIERS/*"/> + </module> + <module name="RedundantModifier" /> + + <module name="EmptyBlock"> + <property name="option" value="text" /> + <property name="tokens" value=" + LITERAL_DO, LITERAL_ELSE, LITERAL_FINALLY, LITERAL_IF, + LITERAL_FOR, LITERAL_TRY, LITERAL_WHILE, INSTANCE_INIT, STATIC_INIT" /> + </module> + <module name="EmptyStatement" /> + <module name="EmptyForInitializerPad" /> + <module name="EmptyForIteratorPad"> + <property name="option" value="space" /> + </module> + <module name="MethodParamPad"> + <property name="allowLineBreaks" value="true" /> + <property name="option" value="nospace" /> + </module> + <module name="ParenPad" /> + <module name="TypecastParenPad" /> + <module name="NeedBraces" /> + <module name="LeftCurly"> + <property name="option" value="eol" /> + <property name="tokens" value=" + CLASS_DEF, CTOR_DEF, INTERFACE_DEF, METHOD_DEF, + LITERAL_CATCH, LITERAL_DO, LITERAL_ELSE, LITERAL_FINALLY, LITERAL_FOR, + LITERAL_IF, LITERAL_SWITCH, LITERAL_SYNCHRONIZED, LITERAL_TRY, LITERAL_WHILE" /> + </module> + <module name="RightCurly"> + <property name="option" value="alone" /> + <property name="tokens" value="LITERAL_ELSE" /> + </module> + <module name="EmptyLineSeparator"> + <property name="allowNoEmptyLineBetweenFields" value="true" /> + <property name="tokens" value=" + IMPORT, STATIC_IMPORT, CLASS_DEF, INTERFACE_DEF, ENUM_DEF, + STATIC_INIT, INSTANCE_INIT, METHOD_DEF, CTOR_DEF, VARIABLE_DEF" /> + </module> + <module name="GenericWhitespace" /> + <module name="WhitespaceAfter" /> + <module name="NoWhitespaceAfter" /> + <module name="NoWhitespaceBefore" /> + <!-- module name="SingleSpaceSeparator" /--> + <module name="Indentation"> + <property name="throwsIndent" value="8" /> + <property name="lineWrappingIndentation" value="8" /> + </module> + + <module name="UpperEll" /> + <module name="DefaultComesLast" /> + <module name="ArrayTypeStyle" /> + <module name="MultipleVariableDeclarations" /> + <module name="ModifierOrder" /> + <module name="OneStatementPerLine" /> + <module name="StringLiteralEquality" /> + <module name="MutableException" /> + <module name="EqualsHashCode" /> + <module name="InnerAssignment" /> + <module name="HideUtilityClassConstructor" /> + <module name="ExplicitInitialization" /> + <module name="OneTopLevelClass" /> + + <module name="MemberName" /> + <module name="LocalVariableName"> + <property name="format" value="^([a-z][a-zA-Z0-9]*|_)$" /> + </module> + <module name="LocalFinalVariableName"> + <property name="format" value="^([a-z][a-zA-Z0-9]*|_)$" /> + </module> + <module name="TypeName" /> + <module name="PackageName"> + <property name="format" value="^[a-z][a-z0-9]*(\.[a-z][a-z0-9]*)*$" /> + </module> + <module name="PackageDeclaration" /> + <module name="ParameterName" /> + <module name="StaticVariableName" /> + <module name="ClassTypeParameterName"> + <property name="format" value="^[A-Z][A-Za-z0-9]*$" /> + </module> + <module name="MethodTypeParameterName"> + <property name="format" value="^[A-Z][A-Za-z0-9]*$" /> + </module> + + <module name="AnnotationUseStyle"> + <property name="trailingArrayComma" value="ignore" /> + </module> + + <module name="AvoidStarImport" /> + <module name="RedundantImport" /> + <module name="UnusedImports" /> + <module name="ImportOrder"> + <property name="groups" value="*,javax,java" /> + <property name="separated" value="true" /> + <property name="option" value="bottom" /> + <property name="sortStaticImportsAlphabetically" value="true" /> + </module> + + <module name="SuppressionXpathSingleFilter"> + <property name="checks" value="WhitespaceAround"/> + <property name="query" value="//LITERAL_SWITCH//SLIST"/> + </module> + <module name="SuppressionXpathSingleFilter"> + <property name="checks" value="WhitespaceAround"/> + <property name="query" value="//LITERAL_SWITCH//RCURLY"/> + </module> + <module name="WhitespaceAround"> + <property name="allowEmptyConstructors" value="true" /> + <property name="allowEmptyMethods" value="true" /> + <property name="allowEmptyLambdas" value="true" /> + <property name="allowEmptyTypes" value="true" /> + <property name="ignoreEnhancedForColon" value="false" /> + <property name="tokens" value=" + ASSIGN, BAND, BAND_ASSIGN, BOR, BOR_ASSIGN, BSR, BSR_ASSIGN, + BXOR, BXOR_ASSIGN, COLON, DIV, DIV_ASSIGN, DO_WHILE, EQUAL, GE, GT, + LAMBDA, LAND, LCURLY, LE, LITERAL_ASSERT, LITERAL_CATCH, LITERAL_DO, LITERAL_ELSE, + LITERAL_FINALLY, LITERAL_FOR, LITERAL_IF, LITERAL_RETURN, + LITERAL_SYNCHRONIZED, LITERAL_TRY, LITERAL_WHILE, + LOR, LT, MINUS, MINUS_ASSIGN, MOD, MOD_ASSIGN, NOT_EQUAL, + PLUS, PLUS_ASSIGN, QUESTION, SL, SLIST, SL_ASSIGN, SR, SR_ASSIGN, + STAR, STAR_ASSIGN, TYPE_EXTENSION_AND" /> + </module> + + <module name="WhitespaceAfter" /> + + <module name="NoWhitespaceAfter"> + <property name="tokens" value="DOT" /> + <property name="allowLineBreaks" value="false" /> + </module> + + <module name="IllegalToken"> + <property name="tokens" value="LITERAL_ASSERT" /> + </module> + + <module name="MethodName"> + <property name="format" value="^[a-z][a-zA-Z0-9_]*$"/> + </module> + + <module name="RegexpSinglelineJava"> + <!-- Forbid "new Type[]{", IntelliJ would reformat adding a space --> + <!-- Forbid "new Type[] {", IntelliJ would reformat removing a space --> + <property name="format" value="new\s++\w++(<\?>)?(\[\])++(\s{2,})?\{" /> + <property name="message" value="Incorrect whitespace before array initializer" /> + <property name="ignoreComments" value="true" /> + </module> + </module> +</module> diff --git a/pom.xml b/pom.xml index f8d8a7472..a578cacef 100644 --- a/pom.xml +++ b/pom.xml @@ -88,6 +88,9 @@ <avro.version>1.7.5</avro.version> <calcite.version>1.16.0</calcite.version> <checkstyle.failOnViolation>false</checkstyle.failOnViolation> + <checkstyle.plugin.version>3.1.0</checkstyle.plugin.version> + <checkstyle.skip>true</checkstyle.skip> + <checkstyle.version>8.29</checkstyle.version> <codehaus.woodstox.stax2-api.version>3.1.4</codehaus.woodstox.stax2-api.version> <commons-cli.version>1.4</commons-cli.version> <commons-codec.version>1.14</commons-codec.version> @@ -1162,12 +1165,6 @@ <version>0.13</version> </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-checkstyle-plugin</artifactId> - <version>2.9.1</version> - </plugin> - <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-site-plugin</artifactId> @@ -1504,7 +1501,13 @@ <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-checkstyle-plugin</artifactId> + <version>${checkstyle.plugin.version}</version> <dependencies> + <dependency> + <groupId>com.puppycrawl.tools</groupId> + <artifactId>checkstyle</artifactId> + <version>${checkstyle.version}</version> + </dependency> <dependency> <groupId>org.apache.atlas</groupId> <artifactId>atlas-buildtools</artifactId> @@ -1519,10 +1522,11 @@ </goals> <phase>verify</phase> <configuration> - <skip>${skipCheck}</skip> - <consoleOutput>false</consoleOutput> + <consoleOutput>true</consoleOutput> <includeTestSourceDirectory>true</includeTestSourceDirectory> - <suppressionsFileExpression>checkstyle.suppressions.file</suppressionsFileExpression> + <configLocation>./dev-support/checkstyle.xml</configLocation> + <suppressionsLocation>./dev-support/checkstyle-suppressions.xml</suppressionsLocation> + <skip>${checkstyle.skip}</skip> <failOnViolation>${checkstyle.failOnViolation}</failOnViolation> </configuration> </execution>