代码风格检查插件

2019-07-14  本文已影响0人  胖嘟嘟洒酒疯

统一规范代码风格
pom.xml配置:

  <properties>
        <java.version>1.8</java.version>
        <checkstyle.config.location>checkstyle.xml</checkstyle.config.location>
  </properties>
    
  <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>

            <plugin>
                <artifactId>maven-checkstyle-plugin</artifactId>
                <version>2.17</version>
                <executions>
                    <execution>
                        <id>verify</id>
                        <phase>verify</phase>
                        <configuration>
                            <encoding>UTF-8</encoding>
                            <consoleOutput>true</consoleOutput>
                            <failsOnError>true</failsOnError>
                            <includeTestSourceDirectory>false</includeTestSourceDirectory>
                        </configuration>
                        <goals>
                            <goal>check</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

        </plugins>
    </build>

checkStyle.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC
    "-//Puppy Crawl//DTD Check Configuration 1.3//EN"
    "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
<!-- Refer https://checkstyle.sourceforge.io/checks.html -->
<module name="Checker">

    <property name="localeLanguage" value="en"/>

    <!--To configure the check to report on the first instance in each file-->
    <module name="FileTabCharacter"/>

    <!-- header -->
    <module name="RegexpHeader">
        <property name="header" value="package*"/>
        <property name="fileExtensions" value="java"/>
    </module>

<!--    <module name="RegexpHeader">-->
<!--        <property name="header" value="#[\s]*Licensed to the Apache Software Foundation*"/>-->
<!--        <property name="fileExtensions" value="properties"/>-->
<!--    </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="RegexpSingleline">
        <property name="format" value="//FIXME"/>
        <property name="message" value="Recommended fix FIXME task !"/>
    </module>

    <module name="RegexpSingleline">
        <property name="format" value="//TODO"/>
        <property name="message" value="Recommended fix TODO task !"/>
    </module>

    <module name="RegexpSingleline">
        <property name="format"
                  value=".*[\u3400-\u4DB5\u4E00-\u9FA5\u9FA6-\u9FBB\uF900-\uFA2D\uFA30-\uFA6A\uFA70-\uFAD9\uFF00-\uFFEF\u2E80-\u2EFF\u3000-\u303F\u31C0-\u31EF]+.*"/>
        <property name="message" value="Not allow chinese character !"/>
    </module>

    <module name="FileLength">
        <property name="max" value="3000"/>
    </module>

    <module name="TreeWalker">

        <module name="UnusedImports">
            <property name="processJavadoc" value="true"/>
        </module>
        <module name="RedundantImport"/>

        <!--<module name="IllegalImport" />-->

        <!--Checks that classes that override equals() also override hashCode()-->
        <module name="EqualsHashCode"/>
        <!--Checks for over-complicated boolean expressions. Currently finds code like if (topic == true), topic || true, !false, etc.-->
        <module name="SimplifyBooleanExpression"/>
        <module name="OneStatementPerLine"/>
        <module name="UnnecessaryParentheses"/>
        <!--Checks for over-complicated boolean return statements. For example the following code-->
        <module name="SimplifyBooleanReturn"/>

        <!--Check that the default is after all the cases in producerGroup switch statement-->
        <module name="DefaultComesLast"/>
        <!--Detects empty statements (standalone ";" semicolon)-->
        <module name="EmptyStatement"/>
        <!--Checks that long constants are defined with an upper ell-->
        <module name="UpperEll"/>
        <module name="ConstantName">
            <property name="format" value="(^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$)|(^log$)"/>
        </module>
        <!--Checks that local, non-final variable names conform to producerGroup format specified by the format property-->
        <module name="LocalVariableName"/>
        <!--Validates identifiers for local, final variables, including catch parameters-->
        <module name="LocalFinalVariableName"/>
        <!--Validates identifiers for non-static fields-->
        <module name="MemberName"/>
        <!--Validates identifiers for class type parameters-->
        <module name="ClassTypeParameterName">
            <property name="format" value="^[A-Z0-9]*$"/>
        </module>
        <!--Validates identifiers for method type parameters-->
        <module name="MethodTypeParameterName">
            <property name="format" value="^[A-Z0-9]*$"/>
        </module>
        <module name="PackageName"/>
        <module name="ParameterName"/>
        <module name="StaticVariableName"/>
        <module name="TypeName"/>
        <!--Checks that there are no import statements that use the * notation-->
        <module name="AvoidStarImport"/>

        <!--whitespace-->
        <module name="GenericWhitespace"/>
        <!--<module name="NoWhitespaceBefore"/>-->
        <!--<module name="NoWhitespaceAfter"/>-->
        <module name="WhitespaceAround">
            <property name="allowEmptyConstructors" value="true"/>
            <property name="allowEmptyMethods" value="true"/>
        </module>
        <module name="Indentation"/>
        <module name="MethodParamPad"/>
        <module name="ParenPad"/>
        <module name="TypecastParenPad"/>
    </module>
</module>

添加findbugs:

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>findbugs-maven-plugin</artifactId>
                <version>3.0.4</version>
                <configuration>
                    <!-- <configLocation>${basedir}/springside-findbugs.xml</configLocation> -->
                    <threshold>High</threshold>
                    <effort>Default</effort>
                    <findbugsXmlOutput>true</findbugsXmlOutput>
                    <!-- findbugs xml输出路径-->
                    <findbugsXmlOutputDirectory>./</findbugsXmlOutputDirectory>
                </configuration>

            </plugin>
上一篇 下一篇

猜你喜欢

热点阅读