代码检查工具系列——CheckStyle

前言

  大家都知道有很多公司拥有外包团队,而外包团队当任务完成后,很多不会再与公司有业务关联,在项目验收时就要验收代码,那么如何面对大量的代码,人工去看完所有代码是一项非常庞大的工作,这时我们就需要好用的代码检查工具了。本篇博客将主要讲述CheckStyle,看完本篇博客可以让你知道和基本掌握CheckStyle的使用。

CheckStyle

  CheckStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发人员遵守某些编码规范的工具。它能够自动化代码规范检查过程,从而使得开发人员从这项重要,但是枯燥的任务中解脱出来。

CheckStyle安装

  因为项目是用Eclipse的,所以这里简单说一下CheckStyle在Eclipse下的安装过程。其他的可在CheckStyle官网去看。
  为了方便大家使用,大家可以点击这里下载离线安装包。然后将该包解压出来之后,将features和 plugins文件夹下的的文件复制到Eclipse下对应的文件夹下,重启Eclipse即可。
  点击Windows—>Peferences,看到如下图,则表明安装成功。
  代码检查工具系列——CheckStyle_第1张图片

CheckStyle使用

  CheckStyle既可以检查单个文件,也可以检查整个项目。使用方式很简单,选中文件或工程右键—>CheckStyle—>Check Code With CheckStyle,如下图:
  代码检查工具系列——CheckStyle_第2张图片
  

CheckStyle规则简介

Windows–>Perference–>CheckStyle 弹出如下菜单:
代码检查工具系列——CheckStyle_第3张图片
可以看出CheckStyle默认提供了三种规则配置文件:
这里写图片描述
同时我们也可以自己导入自己的规则配置文件。
通过点击对话框右上方的new导入我们自己的规则配置文件,选择外部配置文件,输入name,并导入相应的xml文件即可。
代码检查工具系列——CheckStyle_第4张图片
同时也可以如下图所示对已导入的配置文件提供的检测项进行使用或忽略。打勾表示使用,不打勾则忽略。
代码检查工具系列——CheckStyle_第5张图片
这里简单举例说明一下CheckStyle里面的配置文件,如下所示,已注说明。




<module name="Checker">
         <property name="severity" value="warning"/>
    <module name="StrictDuplicateCode">
        <property name="charset" value="utf-8" />   
    module>   

    <module name="TreeWalker">   
           
           
        <module name="JavadocType" />   

           
           
        <module name="LocalFinalVariableName" />   
           
        <module name="LocalVariableName" />   
           
        <module name="PackageName">   
            <property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$" />   
        module>   
           
        <module name="StaticVariableName" />   
           
        <module name="TypeName" />   
           
        <module name="MemberName" />   
           
        <module name="MethodName" />   
           
        <module name="ParameterName " />   
           
        <module name="ConstantName" />
           
        <module name="UnusedImports" />   

           
           
        <module name="FileLength">   
            <property name="max" value="1500" />   
        module>   
           
        <module name="LineLength">   
            <property name="max" value="150" />   
        module>   
           
        <module name="MethodLength">   
            <property name="tokens" value="METHOD_DEF" />   
            <property name="max" value="150" />   
        module>   
           
        <module name="ParameterNumber">   
            <property name="max" value="5" />   
            <property name="tokens" value="METHOD_DEF" />   
        module>   

           
           
        <module name="MethodParamPad" />   
           
        <module name="TypecastParenPad" />

           
           
        <module name="ModifierOrder" />   
           
        <module name="RedundantModifier" />   

           
           
        <module name="EmptyBlock" />   
           
        <module name="NeedBraces" />
           
        <module name="AvoidNestedBlocks">   
            <property name="allowInSwitchCase" value="true" />   
        module>   

           
           
        <module name="EmptyStatement" /> 
           
        <module name="MagicNumber">   
            <property name="tokens" value="NUM_DOUBLE, NUM_INT" />   
        module>
           
        <module name="RedundantThrows" /> 
           
        <module name="StringLiteralEquality" />   
           
        <module name="NestedIfDepth">   
            <property name="max" value="3" />   
        module>   
           
        <module name="NestedTryDepth">   
            <property name="max" value="2" />   
        module>   
           
        <module name="SuperClone" />   
           
        <module name="SuperFinalize" />   
           
        <module name="IllegalCatch">   
            <property name="illegalClassNames" value="java.lang.Exception" />  
        module>   
           
        <module name="PackageDeclaration" />   
           
        <module name="ReturnCount">   
            <property name="max" value="3" />   
            <property name="format" value="^$" />   
        module>   
           
        <module name="DeclarationOrder" /> 
           
        <module name="MultipleVariableDeclarations" />   
           
        <module name="UnnecessaryParentheses" />    

           
           
        <module name="GenericIllegalRegexp">   
            <property name="format" value="System\.out\.println" />   
            <property name="ignoreComments" value="true" />
        module>
           
        <module name="UpperEll" />   
           
        <module name="ArrayTypeStyle" />
           
        <module name="Indentation" />   
    module> 
module>        

查看CheckStyle检查的结果

通过在指定的项目或指定的java类上右键—>CheckStyle—>Check Code With CheckStyle
可以看到下图:
代码检查工具系列——CheckStyle_第6张图片
ps:看不到该图的可以通过windows–>showview–>other–>checkstyle–>checkstyle violations chart 显示改图
点击图中不同颜色的区块,可以跳转到该区块对应的说明:
代码检查工具系列——CheckStyle_第7张图片
双击任一行,便可以跳转到具体的java文件中被检测到的行,然后依据规则进行修改。
代码检查工具系列——CheckStyle_第8张图片
  

总结

通过学习本篇博文,大家可以基本学会使用CheckStyle工具,但是要熟练的运用该工具为自己的项目服务,还需要仔细了解CheckStyle的规则,手动配置自己需要的检测项,本篇博客不再进行讲解。

你可能感兴趣的:(代码检查工具系列,代码检查工具,CheckStyle)