定义自己的代码风格CheckStyle简单使用


<?xml version="1.0" encoding="UTF-8"?>
DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.2//EN" "http://www.puppycrawl.com/dtds/configuration_1_2.dtd">



<module name="Checker">    
  
  <property name="charset" value="UTF-8"/>   
  <property name="severity" value="warning"/>
  
   
   
  <module name="FileLength">         
     <property name="max" value="2500"/>        
  module>  
  
   
   
  
  <module name="TreeWalker">
    
                   
      
    <module name="AvoidStarImport"/>  
    
      
    <module name="IllegalImport"/>   
    
      
    <module name="RedundantImport"/>  
    
      
    <module name="UnusedImports"/>
    
    
    
    
    <module name="JavadocType">  
        <property name="authorFormat" value="\S"/>
        <property name="scope" value="protected"/>        
        <property name="tokens" value="CLASS_DEF,INTERFACE_DEF"/>  
    module>
    
    
      <module name="JavadocMethod">  
        <property name="scope" value="private"/>  
      <property name="allowMissingParamTags" value="true"/>  
      <property name="allowMissingThrowsTags" value="true"/>  
      <property name="allowMissingReturnTag" value="true"/>  
      <property name="tokens" value="METHOD_DEF"/>  
      <property name="allowUndeclaredRTE" value="true"/>  
      <property name="allowThrowsTagsForSubclasses" value="true"/>  
      
       <property name="allowMissingPropertyJavadoc" value="true"/>
    module>  
        
        
    
        
      
    <module name="LeftCurly"> 
        <property name="option" value="eol"/>
    module>
     
      
    <module name="NeedBraces"/>  
    
      
    <module name="RightCurly">    
        <property name="option" value="alone"/>     
    module>
        
     
    <module name="EqualsHashCode"/>
        
      
    <module name="IllegalInstantiation">  
        <property name="classes" value="java.lang.Boolean"/>  
    module>
    
    
    
    <module name="LocalFinalVariableName"/>
    
     
    <module name="LocalVariableName"/>
    
    
    <module name="StaticVariableName">
        <property name="format" value="(^[A-Z0-9_]{0,19}$)"/>    
    module>  
    
    
    <module name="PackageName" >
        <property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$"/>
    module> 
     
    
    <module name="TypeName">  
        <property name="format" value="(^[A-Z][a-zA-Z0-9]{0,19}$)"/>     
    module>
    
      
    <module name="MethodName">          
      <property name="format" value="(^[a-z][a-zA-Z0-9]{0,19}$)"/>         
    module> 
    
    
    <module name="MemberName">  
        <property name="format" value="(^[a-z][a-z0-9][a-zA-Z0-9]{0,19}$)"/>         
    module>
    
    
    <module name="ParameterName">
        <property name="format" value="(^[a-z][a-zA-Z0-9_]{0,19}$)"/>         
    module>
    
    
    <module name="ConstantName"> 
        <property name="format" value="(^[A-Z0-9_]{0,19}$)"/>      
    module>
    
    
    <module name="Indentation">        
    module>
    
     
    
       
    <module name="SimplifyBooleanExpression"/>
    
      
    <module name="SimplifyBooleanReturn"/>  
    
      
    <module name="FinalClass"/>
    
      
    
      
    <module name="VisibilityModifier"/> 
    
    
    <module name="MultipleVariableDeclarations">       
    module>
    
       
    <module name="ArrayTypeStyle"> 
    module>
    
      
    
      
    <module name="TodoComment"/>  
    
      
    <module name="UpperEll"/>
    
     
    <module name="MissingSwitchDefault"/> 
    
    
    <module name="FallThrough"/>  
    
        
    <module name="ParameterNumber">      
      <property name="max" value="5"/>              
    module>
    
        
    <module name="LineLength">  
      <property name="max" value="200"/>       
    module>  
    
     
    <module name="MethodLength">  
      <property name="max" value="200"/>                 
    module>        
    
      
    <module name="ModifierOrder">          
    module>      
    
    
    <module name="RedundantModifier">       
    module>
    
       
    <module name="StringLiteralEquality">          
    module> 
    
    
    <module name="NestedIfDepth">        
      <property name="max" value="3"/>         
    module>  
    
    
    <module name="NestedTryDepth">  
      <property name="max" value="2"/>         
    module>  
        
       
    <module name="ReturnCount">        
      <property name="max" value="5"/>  
      <property name="format" value="^$"/>          
    module>                  
  
  module>
  
module>

将上面的文件放到对应的目录下,然后在pom.xml里面配置一下内容,就能够实现maven每次打包的时候校验代码风格

 <plugins>
            <plugin>
                <groupId>org.apache.maven.pluginsgroupId>
                <artifactId>maven-checkstyle-pluginartifactId>
                <version>3.0.0version>
                <executions>
                    <execution>
                        <id>checkstyle-validationid>
                        <phase>validatephase>
                        <configuration>
                            <configLocation>checkstyle/checkStyle.xmlconfigLocation>
                            <headerLocation>checkstyle/checkstyle-header.txtheaderLocation>
                            <encoding>UTF-8encoding>
                            <consoleOutput>trueconsoleOutput>
                            <failOnViolation>truefailOnViolation>
                            <includeTestSourceDirectory>trueincludeTestSourceDirectory>
                        configuration>
                        <goals>
                            <goal>checkgoal>
                        goals>
                    execution>
                executions>
                <dependencies>
                    <dependency>
                        <groupId>com.puppycrawl.toolsgroupId>
                        <artifactId>checkstyleartifactId>
                        <version>8.8version>
                    dependency>
                dependencies>
            plugin>
        plugins>

checkstyle可以根据自己公司的具体情况修改,当然也可以参考阿里的checkstyle约束