Add checkstyle plugin
diff --git a/checkstyle.xml b/checkstyle.xml
new file mode 100644
index 0000000..9373a70
--- /dev/null
+++ b/checkstyle.xml
@@ -0,0 +1,89 @@
+<?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/pom.xml b/pom.xml
index 1603590..5fdbbe6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -105,7 +105,28 @@
</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>