update checkstyle (#97)

Co-authored-by: yuanbingze <yuanbingze@yy.com>
Co-authored-by: imbajin <jin@apache.org>
diff --git a/checkstyle.xml b/checkstyle.xml
deleted file mode 100644
index 9373a70..0000000
--- a/checkstyle.xml
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE module PUBLIC
-        "-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
-        "https://checkstyle.org/dtds/configuration_1_3.dtd">
-<!-- 参考:https://checkstyle.sourceforge.io/checks.html -->
-<module name="Checker">
-    <!--检查不通过时被判定的违规级别,必须修复后才能使build通过-->
-    <property name="severity" value="error"/>
-    <!--对java文件做检查-->
-    <property name="fileExtensions" value="java"/>
-    <!--对UTF-8编码的文件做检查-->
-    <property name="charset" value="UTF-8"/>
-    <!--文件中不允许包含制表符-->
-    <module name="FileTabCharacter">
-        <property name="eachLine" value="true"/>
-    </module>
-
-    <!--检查java源文件并定义一些适用于检查此类文件的一些属性-->
-    <module name="TreeWalker">
-        <!--检查行长度-->
-        <module name="LineLength">
-            <property name="max" value="80"/>
-            <!--可以忽略的行-->
-            <property name="ignorePattern"
-                      value="^package.*|^import.*|a href|href|http://|https://|ftp://"/>
-        </module>
-        <!--检查没有import语句使用*号-->
-        <module name="AvoidStarImport"/>
-        <!--检查是否存在多余的import语句,比如重复的,java自带的包,相同包下的其他类-->
-        <module name="RedundantImport"/>
-        <!--检查是否存在没有使用的import语句-->
-        <module name="UnusedImports"/>
-        <!--检查包名称是否遵守命名规约-->
-        <module name="PackageName">
-            <property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$"/>
-        </module>
-        <!--检查局部变量的名称是否遵守命名规约-->
-        <module name="LocalVariableName">
-            <property name="format" value="^[a-z][a-zA-Z0-9_]*$"/>
-        </module>
-        <!--检查成员变量(非静态字段)的名称是否遵守命名规约-->
-        <module name="MemberName">
-            <property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
-        </module>
-        <!--检查方法名称是否遵守命名规约-->
-        <module name="MethodName">
-            <property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
-        </module>
-        <!--检查参数名称是否遵守命名规约-->
-        <module name="ParameterName">
-            <property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
-        </module>
-        <!--检查常量(用static final修饰的字段)的名称是否遵守命名规约-->
-        <module name="ConstantName">
-            <property name="format" value="^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$"/>
-        </module>
-        <!--检查数组是否属于java风格,方括号放在类型后面,而不是变量后面,比如:int[] nums(合法),int nums[](不合法)-->
-        <module name="ArrayTypeStyle">
-            <property name="javaStyle" value="true"/>
-        </module>
-        <!--long类型的字面量如果要以"L"结尾,必须是大写的"L",而非小写的"l"-->
-        <module name="UpperEll"/>
-        <!--代码换行时,运算符必须在当前行的末尾,比如:+、&&、?、: 等-->
-        <module name="OperatorWrap">
-            <property name="option" value="eol"/>
-        </module>
-        <!--检查指定标记的周围是否有空格,比如:if、for、while、synchoronized 等-->
-        <module name="WhitespaceAround"/>
-        <!--左圆括号之后和右圆括号之前是否需要有一个空格,不需要-->
-        <module name="ParenPad"/>
-        <!--检查修饰符是否符合Java建议,顺序是:public、protected、private、abstract、default、static、final、transient、volatile、synchronized、native、strictfp-->
-        <module name="ModifierOrder"/>
-        <!--检查代码块的左花括号的放置位置,必须在当前行的末尾-->
-        <module name="LeftCurly">
-            <property name="option" value="eol"/>
-            <property name="ignoreEnums" value="false"/>
-        </module>
-        <!--代码中不允许有空语句,也就是单独的;符号-->
-        <module name="EmptyStatement"/>
-        <!--覆盖equals()方法的类必须也覆盖了hashCode()方法-->
-        <module name="EqualsHashCode"/>
-        <!--switch语句必须含有default子句-->
-        <module name="MissingSwitchDefault"/>
-        <!--switch语句的default必须放在所有的case分支之后-->
-        <module name="DefaultComesLast"/>
-        <!--覆盖clone()方法时调用了super.clone()方法-->
-        <module name="SuperClone"/>
-    </module>
-</module>
diff --git a/hugegraph-common/pom.xml b/hugegraph-common/pom.xml
index 871b98e..1c3637b 100644
--- a/hugegraph-common/pom.xml
+++ b/hugegraph-common/pom.xml
@@ -209,28 +209,6 @@
             </plugin>
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-checkstyle-plugin</artifactId>
-                <version>3.1.0</version>
-                <configuration>
-                    <configLocation>../checkstyle.xml</configLocation>
-                    <encoding>UTF-8</encoding>
-                    <consoleOutput>true</consoleOutput>
-                    <failsOnError>true</failsOnError>
-                    <linkXRef>false</linkXRef>
-                    <includeTestSourceDirectory>false</includeTestSourceDirectory>
-                </configuration>
-                <executions>
-                    <execution>
-                        <id>validate</id>
-                        <phase>validate</phase>
-                        <goals>
-                            <goal>check</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-jar-plugin</artifactId>
                 <version>2.6</version>
                 <configuration>
diff --git a/hugegraph-rpc/pom.xml b/hugegraph-rpc/pom.xml
index 43fcff4..2c2d1c1 100644
--- a/hugegraph-rpc/pom.xml
+++ b/hugegraph-rpc/pom.xml
@@ -100,30 +100,6 @@
                     </compilerArgs>
                 </configuration>
             </plugin>
-
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-checkstyle-plugin</artifactId>
-                <version>3.1.0</version>
-                <configuration>
-                    <configLocation>../checkstyle.xml</configLocation>
-                    <encoding>UTF-8</encoding>
-                    <consoleOutput>true</consoleOutput>
-                    <failsOnError>true</failsOnError>
-                    <linkXRef>false</linkXRef>
-                    <includeTestSourceDirectory>false</includeTestSourceDirectory>
-                </configuration>
-                <executions>
-                    <execution>
-                        <id>validate</id>
-                        <phase>validate</phase>
-                        <goals>
-                            <goal>check</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-jar-plugin</artifactId>
diff --git a/pom.xml b/pom.xml
index 7bb8fc4..2a5c1e9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -61,6 +61,8 @@
         <mockito.version>4.1.0</mockito.version>
         <jakarta.xml.version>4.0.0-RC2</jakarta.xml.version>
         <sun.xml.version>3.0.2</sun.xml.version>
+        <checkstyle.plugin.version>3.1.2</checkstyle.plugin.version>
+        <checkstyle.version>8.45</checkstyle.version>
         <implementation.version>2.1.2.0</implementation.version>
     </properties>
 
@@ -88,9 +90,16 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-checkstyle-plugin</artifactId>
-                <version>3.1.0</version>
+                <version>${checkstyle.plugin.version}</version>
+                <dependencies>
+                    <dependency>
+                        <groupId>com.puppycrawl.tools</groupId>
+                        <artifactId>checkstyle</artifactId>
+                        <version>${checkstyle.version}</version>
+                    </dependency>
+                </dependencies>
                 <configuration>
-                    <configLocation>checkstyle.xml</configLocation>
+                    <configLocation>style/checkstyle.xml</configLocation>
                     <encoding>UTF-8</encoding>
                     <consoleOutput>true</consoleOutput>
                     <failsOnError>true</failsOnError>
diff --git a/style/checkstyle.xml b/style/checkstyle.xml
new file mode 100644
index 0000000..c242928
--- /dev/null
+++ b/style/checkstyle.xml
@@ -0,0 +1,218 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE module PUBLIC
+        "-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
+        "https://checkstyle.org/dtds/configuration_1_3.dtd">
+<module name="Checker">
+    <property name="charset" value="UTF-8"/>
+    <property name="severity" value="info"/>
+    <property name="fileExtensions" value="java, properties, xml"/>
+
+    <module name="FileTabCharacter">
+        <property name="eachLine" value="true"/>
+    </module>
+    <module name="LineLength">
+        <property name="max" value="100"/>
+        <property name="ignorePattern" value="^package.*|^import.*|a href|href|http://|https://|ftp://|Reflection\.*"/>
+    </module>
+    <module name="RegexpSingleline">
+        <property name="format" value="System\.out\.println"/>
+        <property name="message" value="Prohibit invoking System.out.println in source code !"/>
+    </module>
+
+    <module name="TreeWalker">
+        <module name="PackageName">
+            <property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$"/>
+            <message key="name.invalidPattern"  value="Package name ''{0}'' must match pattern ''{1}''."/>
+        </module>
+        <!--        <module name="ImportOrder">-->
+        <!--            <property name="staticGroups"-->
+        <!--                      value="org.apache,java,javax,org,com,com.baidu.hugegraph"/>-->
+        <!--            <property name="separatedStaticGroups" value="true"/>-->
+        <!--            <property name="groups" value="org.apache,java,javax,org,com,com.baidu.hugegraph"/>-->
+        <!--            <property name="ordered" value="true"/>-->
+        <!--            <property name="separated" value="true"/>-->
+        <!--            <property name="option" value="top"/>-->
+        <!--            <property name="sortStaticImportsAlphabetically" value="true"/>-->
+        <!--        </module>-->
+        <module name="AvoidStarImport"/>
+        <module name="RedundantImport"/>
+        <module name="RedundantModifier"/>
+        <module name="UnusedImports"/>
+        <module name="EmptyLineSeparator">
+            <property name="allowMultipleEmptyLines" value="false"/>
+            <property name="allowMultipleEmptyLinesInsideClassMembers" value="false"/>
+            <property name="tokens" value="PACKAGE_DEF, IMPORT, STATIC_IMPORT, CLASS_DEF,INTERFACE_DEF, ENUM_DEF, STATIC_INIT, INSTANCE_INIT, METHOD_DEF,CTOR_DEF"/>
+        </module>
+        <module name="ModifierOrder"/>
+        <module name="TypeName">
+            <message key="name.invalidPattern" value="Type name ''{0}'' must match pattern ''{1}''."/>
+        </module>
+        <module name="ClassTypeParameterName">
+            <property name="format" value="^[A-Z][a-zA-Z0-9]*$"/>
+            <message key="name.invalidPattern" value="Class type name ''{0}'' must match pattern ''{1}''."/>
+        </module>
+        <module name="ConstantName">
+            <property name="format" value="^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$"/>
+        </module>
+        <module name="LocalVariableName">
+            <property name="tokens" value="VARIABLE_DEF"/>
+            <property name="format" value="^[a-z]([a-zA-Z0-9]*)?$"/>
+            <message key="name.invalidPattern"
+                     value="Local variable name ''{0}'' must match pattern ''{1}''."/>
+        </module>
+        <module name="MemberName">
+            <property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
+            <message key="name.invalidPattern"
+                     value="Member name ''{0}'' must match pattern ''{1}''."/>
+        </module>
+        <module name="ParameterName">
+            <property name="format" value="^[a-z]([a-zA-Z0-9]*)?$"/>
+            <message key="name.invalidPattern"
+                     value="Parameter name ''{0}'' must match pattern ''{1}''."/>
+        </module>
+        <module name="CatchParameterName">
+            <property name="format" value="^[a-z]([a-zA-Z0-9]*)?$"/>
+            <message key="name.invalidPattern"
+                     value="Catch parameter name ''{0}'' must match pattern ''{1}''."/>
+        </module>
+        <module name="ArrayTypeStyle"/>
+        <module name="MethodTypeParameterName">
+            <property name="format" value="^[A-Z][a-zA-Z0-9]*$"/>
+            <message key="name.invalidPattern"
+                     value="Method type name ''{0}'' must match pattern ''{1}''."/>
+        </module>
+        <module name="MethodName">
+            <property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9_]*$"/>
+            <message key="name.invalidPattern"
+                     value="Method name ''{0}'' must match pattern ''{1}''."/>
+        </module>
+        <module name="InterfaceTypeParameterName">
+            <property name="format" value="^[A-Z][a-zA-Z0-9]*$"/>
+            <message key="name.invalidPattern"
+                     value="Interface type name ''{0}'' must match pattern ''{1}''."/>
+        </module>
+        <module name="EqualsHashCode"/>
+        <module name="MissingSwitchDefault"/>
+        <module name="DefaultComesLast"/>
+        <module name="SuperClone"/>
+        <module name="NoFinalizer"/>
+        <module name="GenericWhitespace">
+            <message key="ws.followed"
+                     value="GenericWhitespace ''{0}'' is followed by whitespace."/>
+            <message key="ws.preceded"
+                     value="GenericWhitespace ''{0}'' is preceded with whitespace."/>
+            <message key="ws.illegalFollow"
+                     value="GenericWhitespace ''{0}'' should followed by whitespace."/>
+            <message key="ws.notPreceded"
+                     value="GenericWhitespace ''{0}'' is not preceded with whitespace."/>
+        </module>
+        <module name="Indentation">
+            <property name="basicOffset" value="4"/>
+            <property name="braceAdjustment" value="0"/>
+            <property name="caseIndent" value="4"/>
+            <property name="throwsIndent" value="2"/>
+            <property name="lineWrappingIndentation" value="4"/>
+            <property name="arrayInitIndent" value="4"/>
+        </module>
+        <module name="UpperEll"/>
+        <module name="IllegalImport">
+            <property name="regexp" value="true"/>
+            <property name="illegalPkgs"
+                      value="^com\.google\.api\.client\.repackaged,
+                      ^avro\.shaded, ^org\.apache\.hadoop\.hbase\.shaded,
+                      ^org\.apache\.hadoop\.shaded,
+                      ^javax\.ws\.rs\.ext,
+                      ^cc\.concurrent\.mango\.util\.concurrent,
+                      ^org\.apache\.curator-test\.shaded,
+                      ^com\.sun\.istack,
+                      ^org\.jetbrains\.annotations,
+                      ^jline\.internal,
+                      ^com\.cronutils\.utils,
+                      ^javax\.ws\.rs\.ext,
+                      ^org\.jboss\.netty\.util\.internal,
+                      ^com\.sun\.javafx,
+                      ^io\.reactivex\.annotations,
+                      ^org\.codehaus\.jackson"/>
+            <property name="illegalClasses"
+                      value="^java\.util\.logging\.Logging,
+                      ^sun\.misc\.BASE64Encoder,
+                      ^sun\.misc\.BASE64Decoder,
+                      ^jdk\.internal\.jline\.internal\.Nullable"/>
+        </module>
+        <module name="NoWhitespaceBefore">
+            <property name="tokens" value="COMMA, SEMI, POST_INC, POST_DEC, DOT, ELLIPSIS, METHOD_REF"/>
+            <property name="allowLineBreaks" value="true"/>
+        </module>
+        <module name="ParenPad"/>
+        <module name="OperatorWrap">
+            <property name="option" value="eol"/>
+            <property name="tokens"
+                      value="BAND, BOR, BSR, BXOR, DIV, EQUAL, GE, GT, LAND, LE, LITERAL_INSTANCEOF, LOR, LT, MINUS, MOD, NOT_EQUAL, PLUS, QUESTION, SL, SR, STAR, METHOD_REF "/>
+        </module>
+        <module name="AnnotationLocation">
+            <property name="allowSamelineMultipleAnnotations" value="false"/>
+            <property name="allowSamelineSingleParameterlessAnnotation"
+                      value="false"/>
+            <property name="allowSamelineParameterizedAnnotation" value="true"/>
+            <property name="tokens" value="METHOD_DEF, CTOR_DEF"/>
+        </module>
+        <module name="EmptyCatchBlock">
+            <property name="exceptionVariableName" value="expected"/>
+        </module>
+        <module name="CommentsIndentation"/>
+        <module name="NoLineWrap">
+            <!--            <property name="severity" value="error"/>-->
+        </module>
+        <module name="EmptyStatement">
+            <!--            <property name="severity" value="error"/>-->
+        </module>
+        <module name="NeedBraces">
+            <!--            <property name="severity" value="error"/>-->
+        </module>
+        <module name="LeftCurly">
+            <!--            <property name="severity" value="error"/>-->
+        </module>
+        <module name="WhitespaceAround">
+            <property name="allowEmptyConstructors" value="true"/>
+            <property name="allowEmptyMethods" value="true"/>
+            <property name="allowEmptyTypes" value="true"/>
+            <property name="allowEmptyLoops" value="true"/>
+            <message key="ws.notFollowed"  value="WhitespaceAround: ''{0}'' is not followed by whitespace. Empty blocks may only be represented as '{}' when not part of a multi-block statement (4.1.3)"/>
+            <message key="ws.notPreceded"  value="WhitespaceAround: ''{0}'' is not preceded with whitespace."/>
+        </module>
+        <module name="AvoidNestedBlocks">
+            <property name="allowInSwitchCase" value="true"/>
+        </module>
+        <module name="IllegalTokenText">
+            <property name="tokens" value="STRING_LITERAL, CHAR_LITERAL"/>
+            <property name="format" value="\\u00(09|0(a|A)|0(c|C)|0(d|D)|22|27|5(C|c))|\\(0(10|11|12|14|15|42|47)|134)"/>
+            <property name="message" value="Consider using special escape sequence instead of octal value or Unicode escaped value."/>
+        </module>
+        <module name="AvoidEscapedUnicodeCharacters">
+            <property name="allowEscapesForControlCharacters" value="true"/>
+            <property name="allowByTailComment" value="true"/>
+            <property name="allowNonPrintableEscapes" value="true"/>
+        </module>
+        <module name="EmptyBlock">
+            <property name="option" value="TEXT"/>
+            <property name="tokens" value="LITERAL_TRY, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE, LITERAL_SWITCH"/>
+        </module>
+        <module name="OneStatementPerLine"/>
+        <module name="MultipleVariableDeclarations"/>
+        <module name="MissingSwitchDefault"/>
+        <module name="FallThrough"/>
+        <module name="OuterTypeFilename">
+            <!--            <property name="severity" value="error"/>-->
+        </module>
+        <module name="OneTopLevelClass">
+            <!--            <property name="severity" value="error"/>-->
+        </module>
+        <module name="JavadocStyle">
+            <property name="endOfSentenceFormat" value=""/>
+        </module>
+        <module name="JavadocType">
+            <property name="scope" value="protected"/>
+            <property name="allowMissingParamTags" value="true"/>
+        </module>
+    </module>
+</module>