maven javadoc中文乱码问题和CheckStyle编码规范检测

介绍 
CheckStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发人员遵守某些编码规范的工具。它能够自动化代码规范检查过程,从 而使得开发人员从这项重要,但是枯燥的任务中解脱出来。 
CheckStyle默认提供一下主要检查内容: 
  •Javadoc注释 
  •命名约定 
  •标题 
  •Import语句 
  •体积大小 
  •空白 
  •修饰符 
   •块 
  •代码问题 
  •类设计 
  •混合检查(包活一些有用的比如非必须的 System.out和printstackTrace) 
  从上面可以看出,CheckStyle提供了大部分功能都是对于代码规范 的检查,而没有提供象PMD和Jalopy那么多的增强代码质量和修改代码的功能。但是,对于团队开发,尤其是强调代码规范的公司来说,它的功能已经足够强大。 
Eclipse插件安装和使用 
步骤一:http://sourceforge.net/projects/checkclipse/下载checkstyle的eclipse插件checkclipse。下载后,将包放入eclipse的plugins文件夹下,然后重启eclipse。在Windows—>preferences下找到checkclipse。如下图: 
 
勾选Set Project Dir as Checkjstyle Basedir 
步骤二:右键选中你要进行checkstyle的项目文件,选择“properties”。如下图: 
 
勾选Enable Checkstyle和Set Project ClassLoader. 
然后再Checkstyle Configuraion File中选择项目中checkstyle的配置文件。这里我把配置文件时放置在项目根目录下,所以点击右侧“Browse”按钮,在项目根目录下选择该文件。按“OK”按钮。 
这样整个项目的代码将根据配置文件中设置的原则进行出错提示.结果如下图: 
 
由图可知对不符合代码规范的代码会有错误提示,并且有提示信息。 
Maven插件安装和使用 
首先,修改要检查代码库top级的pom.xml文件,在build部分配置CheckStyle的Maven插件,以便于下载安装对应版本的插件(Maven会自动从其镜像库中下载),方法如下: 

Java代码 
  1.   
  2.   ...  
  3.     
  4.       
  5.         
  6.         org.apache.maven.plugins  
  7.         maven-checkstyle-plugin  
  8.         2.3  
  9.         
  10.       
  11.     
  12.   ...  
  13.   

maven-checkstyle-plugin的最新版本为2.5,其对应的CheckStyle核心版本为5.0;maven-checkstyle-plugin 2.3对应的CheckStyle核心版本为4.4。查看插件的pom文件,可看到如下内容,其中的版本号就为对应的CheckStyle的版本号。 
Java代码 
  1.   
  2.   checkstyle   
  3.   checkstyle   
  4.   4.4   
  5.     

接下来,将自定义的规则配置文件拷贝到top级目录,在reporting部分的CheckStyle插件配置中引用配置。 
Java代码 
  1.   
  2.       
  3.           
  4.             org.apache.maven.plugins  
  5.             maven-checkstyle-plugin  
  6.               
  7.               my_checks.xml  
  8.               
  9.           
  10.       
  11.   

也可以将配置文件放在子文件夹下,配置中带上相对路径即可。 
Java代码 
  1.   
  2.       
  3.           
  4.             org.apache.maven.plugins  
  5.             maven-checkstyle-plugin  
  6.               
  7.               build-tools/src/main/resources/xx/my_checks.xml  
  8.               
  9.           
  10.       
  11.   

如果使用插件自带的规则文件,可以作如下配置。maven-checkstyle-plugin插件自带的规则有sun_checks.xml、maven_checks.xml等,可查看插件包。 
Java代码 
  1.   
  2.       
  3.                  
  4.                  org.apache.maven.plugins  
  5.                  maven-checkstyle-plugin  
  6.                    
  7.                             config/maven_checks.xml  
  8.                   
  9.                  2.3         
  10.                  
  11.       
  12.   

在reporting部分增加jxr插件,生成代码报告,这样在CheckStyle报告 中点击问题对应的链接就可以直接看到出错的代码。 
     
Java代码 
  1.   
  2.             
  3.               
  4.               org.apache.maven.plugins  
  5.               maven-checkstyle-plugin  
  6.                 
  7.                          my_checks.xml                              
  8.             
  9.               2.3         
  10.               
  11.               
  12.                    org.apache.maven.plugins  
  13.                  maven-jxr-plugin  
  14.                             
  15.             
  16.        
           
在build和reporting部分增加javadoc插件,如果pom文件中已经配置,则只需作相应修改。charset、encoding、docencoding配置用于解决生成的javadoc文件中文乱码问题;aggregate配置为true则javadoc报告会集中显示所有子模块的javadoc。 
       
Java代码 
  1.   
  2.               
  3.                 
  4.                           org.apache.maven.plugins  
  5.                           maven-javadoc-plugin  
  6.                           2.4  
  7.                             
  8.                              true  
  9.                         UTF-8  
  10.                                       UTF-8  
  11.                                       UTF-8  
  12.                           
  13.                             
  14.                 
  15.                 org.apache.maven.plugins  
  16.                 maven-checkstyle-plugin  
  17.                   
  18.                            my_checks.xml                              
  19.               
  20.                 2.3         
  21.                 
  22.                 
  23.                      org.apache.maven.plugins  
  24.                    maven-jxr-plugin  
  25.                               
  26.               
  27.         

在maven插件中使用 install命令将pom文件中配置的插件下载安装到本地,然后使用checkstyle:checkstyle命令进行检查并生成报告,运行完毕,各项目目录下会生成target目录,target/site/checkstyle.html即为该项目的问题报告。 
需要注意的是checkstyle:checkstyle仅生成CheckStyle相关报告,因此不能从报告中直接链接到错误代码;需要同时生成jxr源代码,使用site。 
如果运行checkstyle:checkstyle或site过程中出现如下错误,则应该修改CheckStyle规 则配置文件,去除其中的中文字符。 
Java代码 
  1. “[ERROR] BUILD ERROR  
  2. [INFO] ------------------------------------------------------------------------  
  3. [INFO] An error has occurred in Checkstyle report generation.  
  4.    
  5. Embedded error: Failed during checkstyle configuration  
  6. Invalid byte 1 of 1-byte UTF-8 sequence.  
  7. ”  

最佳实践 
自定义的checkstyle配置文件 
  以下代码是自定义的checkstyle配置文件内容,相关说明都已经用注释形式写在文件中。代码如下: 
Java代码 
  1.     "-//Puppy Crawl//DTD Check Configuration 1.2//EN"  
  2.     "http://www.puppycrawl.com/dtds/configuration_1_2.dtd">  
  3. "Checker">  
  4.   
  5.       
  6.     "StrictDuplicateCode">  
  7.         "min" value="8" />  
  8.         "charset" value="UTF-8" />  
  9.       
  10.   
  11.     "TreeWalker">  
  12.   
  13.           
  14.           
  15.         "JavadocType" />  
  16.   
  17.           
  18.           
  19.         "LocalFinalVariableName" />  
  20.           
  21.         "LocalVariableName" />  
  22.           
  23.         "PackageName">  
  24.             "format" value="^[a-z]+(/.[a-z][a-z0-9]*)*$" />  
  25.           
  26.           
  27.         "StaticVariableName" />  
  28.           
  29.         "TypeName" />  
  30.           
  31.         "MemberName" />  
  32.           
  33.         "MethodName" />  
  34.           
  35.         "ParameterName " />  
  36.           
  37.         "ConstantName" />  
  38.   
  39.           
  40.           
  41.         "AvoidStarImport" />  
  42.           
  43.         "UnusedImports" />  
  44.   
  45.   
  46.           
  47.           
  48.         "FileLength">  
  49.             "max" value="1500" />  
  50.           
  51.           
  52.         "LineLength">  
  53.             "max" value="120" />  
  54.           
  55.           
  56.         "MethodLength">  
  57.             "tokens" value="METHOD_DEF" />  
  58.             "max" value="30" />  
  59.           
  60.           
  61.         "ParameterNumber">  
  62.             "max" value="3" />  
  63.             "tokens" value="METHOD_DEF" />  
  64.           
  65.   
  66.           
  67.           
  68.         "MethodParamPad" />  
  69.           
  70.         "TypecastParenPad" />  
  71.           
  72.         "TabCharacter" />  
  73.   
  74.           
  75.           
  76.         "ModifierOrder" />  
  77.           
  78.         "RedundantModifier" />  
  79.   
  80.           
  81.           
  82.         "EmptyBlock" />  
  83.           
  84.         "NeedBraces" />  
  85.           
  86.         "AvoidNestedBlocks">  
  87.             "allowInSwitchCase" value="true" />  
  88.           
  89.   
  90.           
  91.           
  92.         "EmptyStatement" />  
  93.           
  94.         "EqualsHashCode" />  
  95.           
  96.         "IllegalToken" />  
  97.           
  98.         "InnerAssignment" />  
  99.           
  100.         "MagicNumber">  
  101.             "tokens" value="NUM_DOUBLE, NUM_INT" />  
  102.           
  103.           
  104.         "ModifiedControlVariable" />  
  105.           
  106.         "RedundantThrows" />  
  107.           
  108.         "SimplifyBooleanExpression" />  
  109.           
  110.         "SimplifyBooleanReturn" />  
  111.           
  112.         "StringLiteralEquality" />  
  113.           
  114.         "NestedIfDepth">  
  115.             "max" value="3" />  
  116.           
  117.           
  118.         "NestedTryDepth">  
  119.             "max" value="2" />  
  120.           
  121.           
  122.         "SuperClone" />  
  123.           
  124.         "SuperFinalize" />  
  125.           
  126.         "IllegalCatch">  
  127.             "illegalClassNames" value="java.lang.Exception" />  
  128.           
  129.           
  130.         "PackageDeclaration" />  
  131.           
  132.         "ReturnCount">  
  133.             "max" value="3" />  
  134.             "format" value="^$" />  
  135.           
  136.           
  137.         "DeclarationOrder" />  
  138.           
  139.         "ParameterAssignment" />  
  140.           
  141.         "ExplicitInitialization" />  
  142.           
  143.         "MultipleStringLiterals" />  
  144.           
  145.         "MultipleVariableDeclarations" />  
  146.           
  147.         "UnnecessaryParentheses" />  
  148.   
  149.           
  150.           
  151.         "BooleanExpressionComplexity" />  
  152.           
  153.         "ClassDataAbstractionCoupling" />  
  154.           
  155.         "ClassFanOutComplexity" />  
  156.           
  157.         "CyclomaticComplexity" />  
  158.           
  159.         "NPathComplexity" />  
  160.   
  161.           
  162.           
  163.         "GenericIllegalRegexp">  
  164.             "format" value="System/.out/.println" />  
  165.             "ignoreComments" value="true" />  
  166.           
  167.           
  168.           
  169.         "UncommentedMain" />  
  170.           
  171.         "UpperEll" />  
  172.           
  173.         "ArrayTypeStyle" />  
  174.           
  175.         "Indentation" />  
  176.       
  177.   
  178.       
  179.     "Translation" />  
  180.   

CheckStyle应用的最佳实践 
  采用CheckStyle以后,编码规范的检查就变得及其简单,可以作为一项切实可行的实践加以执行。 
  一般情况下,在项目小组中引入CheckStyle可以按照下面的步骤进行: 
  1. 强调Code Review与Code Conventions的重要作用; 
  2. 介绍CheckStyle; 
    3. 初步应用CheckStyle:参照CheckStyle附带的配置文件,酌情加以剪裁,在项目的Maven配置文件中,添加CheckStyle任务,可以 单独执行; 
  4. 修改、定型CheckStyle的配置文件:按照基本配置文件执行一段时间(2~3周),听取开发人员的反馈意见,修改配置信息; 
  5. 作为开发过程的日常实践,强制执行CheckStyle:稳定CheckStyle的配置信息,同时将CheckStyle任务作为Build的依赖任务 或者配置SCM(目前,CheckStyle可以与SVN有效集成),使得代码在加入系统 之前必须通过检查。 
  同时需要指出的是,CheckStyle的有效执行需要依赖的条件: 
    •IDE Format Code的强大功能:由于CheckStyle本身并没有提供很强大的Code Format等功能,因此,需要借助IDE的帮助,从而使得在发生错误的时候,可以很容易的进行修复。 
IDE格式配置使用介绍 
在eclipse中的windowpreferencesjavacode style中可以导入自定义的java编码风格文件。如下图: 
 
点击“Clean Up”,在右侧可以看见一个Import按钮,导入自定义的cleanup文件,点击“OK”即可。左侧的“Formatter”也是如法炮制。具体自定义的checkstyle,cleanup,formatter文件可参考压缩包文件中的公司代码规范文件夹。 

你可能感兴趣的:(maven javadoc中文乱码问题和CheckStyle编码规范检测)