eclipse中checkstyle的安装使用

checkstyle是代码格式检查工具,根据已经设置好的编码规则(一个xml文件)来自动检查代码,比如:方法的行数、方法和变量的命名等。目的是规范代码,通俗点讲就是让代码看起来像一个人写的。

下面讲下如何使用这个工具。

一、工具安装

方式一:window --> preferences,没有安装checkstyle的时候这个弹出如下:

打开eclipse, help->Install New Software...    然后填入:CheckStyle - http://eclipse-cs.sourceforge.NET/update

选中上图的两个文件,依次点击 Next -->Next,选中I accept .....,Finish

 

 点击Install anyway 

 点击重启,生效。 

再次打开 Preferences这个弹窗

以上是在eclipse 4.9.0 + jdk1.8.0_181的下安装工具的过程,但是,不是所有环境都能按照以上按照方法解决的。比如,在eclipse4.2.0 + jdk1.7.0_45的环境下,按照以上方式去安装,Preferences弹窗没有checkstyle显示。

原因是自动安装的checkstyle工具对jdk的版本有要求,参考【Eclipse Checkstyle Plugin

可以尝试下下面的方法

方式二:下载链接:【Ckeckstyle.rar】,提取码:dt87 

打开eclipse安装路径,然后新建一个文件夹checkstyle(文件夹名字可以随意取),然后将下载文件中的features和plugins文件夹拷贝过来,如下图所示

 

 

然后在eclipse安装目录的文件下  新建一个txt文件,比如checkstyle.txt(这个文件名字也是可以随意取),.txt修改为.link,加入path=D:\\(wjhl)eclipse-juno-with-toolset\\checkstyle,这个路径是新建checkstyle的路径,注意是两个\

然后重新打开eclipse的Preferences弹窗,如下所示

如果这两种方式都没有效果,可以在网上找下其他的安装方式。 

二、导入checkstyle的规范

规范文件是一个xml文件,没有的话,可以使用以下文件或者在网上找一个,然后根据自己公司的规范略加修改,比如:我建了一个company-checkstyle.xml文件,内容如下

<?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">

<!-- Generated by RHY @will_awoke -->

<module name="Checker">    
  
  <property name="charset" value="UTF-8"/>   
  <property name="severity" value="warning"/>
  
  <!-- Checks for Size Violations.  --> 
  <!-- 检查文件的长度(行) default max=2000 --> 
  <module name="FileLength">         
     <property name="max" value="2000"/>        
  </module>  
  
  <!-- Checks that property files contain the same keys. --> 
  <!-- 检查**.properties配置文件 是否有相同的key
  <module name="Translation">         
  </module>   
  --> 
  
  <module name="TreeWalker">
    
    <!-- Checks for imports    -->               
    <!-- 必须导入类的完整路径,即不能使用*导入所需的类 -->  
    <module name="AvoidStarImport"/>  
    
    <!-- 检查是否从非法的包中导入了类 illegalPkgs: 定义非法的包名称-->  
    <module name="IllegalImport"/> <!-- defaults to sun.* packages -->  
    
    <!-- 检查是否导入了不必显示导入的类-->  
    <module name="RedundantImport"/>  
    
    <!-- 检查是否导入的包没有使用-->  
    <module name="UnusedImports"/>
    
    <!-- Checks for whitespace           
    <module name="EmptyForIteratorPad"/>
    <module name="MethodParamPad"/>
    <module name="NoWhitespaceAfter"/>
    <module name="NoWhitespaceBefore"/>
    <module name="OperatorWrap"/>
    <module name="ParenPad"/>
    <module name="TypecastParenPad"/>
    <module name="WhitespaceAfter"/>
    <module name="WhitespaceAround"/>
    -->
    
    <!-- 检查类和接口的javadoc 默认不检查author 和version tags       
      authorFormat: 检查author标签的格式
      versionFormat: 检查version标签的格式
      scope: 可以检查的类的范围,例如:public只能检查public修饰的类,private可以检查所有的类
      excludeScope: 不能检查的类的范围,例如:public,public的类将不被检查,但访问权限小于public的类仍然会检查,其他的权限以此类推
      tokens: 该属性适用的类型,例如:CLASS_DEF,INTERFACE_DEF
    <module name="JavadocType">  
        <property name="authorFormat" value="\S"/>  
      <property name="scope" value="protected"/>        
      <property name="tokens" value="CLASS_DEF,INTERFACE_DEF"/>  
    </module>
     -->
     
    <!-- 检查方法的javadoc的注释
      scope: 可以检查的方法的范围,例如:public只能检查public修饰的方法,private可以检查所有的方法
      allowMissingParamTags: 是否忽略对参数注释的检查
      allowMissingThrowsTags: 是否忽略对throws注释的检查
      allowMissingReturnTag: 是否忽略对return注释的检查 -->
    <module name="JavadocMethod">  
        <property name="scope" value="private"/>  
      <property name="allowMissingParamTags" value="false"/>  
      <property name="allowMissingThrowsTags" value="false"/>  
      <property name="allowMissingReturnTag" value="false"/>  
      <property name="tokens" value="METHOD_DEF"/>  
      <property name="allowUndeclaredRTE" value="true"/>  
      <property name="allowThrowsTagsForSubclasses" value="true"/>  
      <!--允许get set 方法没有注释-->
         <property name="allowMissingPropertyJavadoc" value="true"/>
    </module>  
        
    <!-- 检查类变量的注释
      scope: 检查变量的范围,例如:public只能检查public修饰的变量,private可以检查所有的变量 -->    
    <module name="JavadocVariable">  
      <property name="scope" value="private"/>  
    </module>  
        
    <!--option: 定义左大括号'{'显示位置,eol在同一行显示,nl在下一行显示  
      maxLineLength: 大括号'{'所在行行最多容纳的字符数  
      tokens: 该属性适用的类型,例:CLASS_DEF,INTERFACE_DEF,METHOD_DEF,CTOR_DEF -->  
    <module name="LeftCurly"> 
        <property name="option" value="eol"/>
    </module>
     
    <!-- NeedBraces 检查是否应该使用括号的地方没有加括号  
      tokens: 定义检查的类型 -->  
    <module name="NeedBraces"/>  
    
    <!-- Checks the placement of right curly braces ('}') for  else, try, and catch tokens. The policy to verify is specified using property  option.   
      option: 右大括号是否单独一行显示  
      tokens: 定义检查的类型   
    <module name="RightCurly">    
        <property name="option" value="alone"/>     
    </module>
        --> 
        
    <!-- 检查在重写了equals方法后是否重写了hashCode方法 --> 
    <module name="EqualsHashCode"/>
        
    <!--  Checks for illegal instantiations where a factory method is preferred.  
      Rationale: Depending on the project, for some classes it might be preferable to create instances through factory methods rather than calling the constructor.  
      A simple example is the java.lang.Boolean class. In order to save memory and CPU cycles, it is preferable to use the predefined constants TRUE and FALSE. Constructor invocations should be replaced by calls to Boolean.valueOf().  
      Some extremely performance sensitive projects may require the use of factory methods for other classes as well, to enforce the usage of number caches or object pools. -->  
    <module name="IllegalInstantiation">  
        <property name="classes" value="java.lang.Boolean"/>  
    </module>
    
    <!-- Checks for Naming Conventions.   命名规范   -->
    <!-- local, final variables, including catch parameters -->
    <module name="LocalFinalVariableName"/>
    
    <!-- local, non-final variables, including catch parameters--> 
    <module name="LocalVariableName"/>
    
    <!-- static, non-final fields -->
    <module name="StaticVariableName">
        <property name="format" value="(^[A-Z0-9_]{0,50}$)"/>    
    </module>  
    
    <!-- packages -->
    <module name="PackageName" >
        <property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$"/>
    </module> 
     
    <!-- classes and interfaces -->
    <module name="TypeName">  
        <property name="format" value="(^[A-Z][a-zA-Z0-9]{0,50}$)"/>     
    </module>
    
    <!-- methods -->  
    <module name="MethodName">          
      <property name="format" value="(^[a-z][a-zA-Z0-9]{0,50}$)"/>         
    </module> 
    
    <!-- non-static fields -->
    <module name="MemberName">  
        <property name="format" value="(^[a-z][a-z0-9][a-zA-Z0-9]{0,50}$)"/>         
    </module>
    
    <!-- parameters -->
    <module name="ParameterName">
        <property name="format" value="(^[a-z][a-zA-Z0-9_]{0,50}$)"/>         
    </module>
    
    <!-- constants (static,  final fields) -->
    <module name="ConstantName"> 
        <property name="format" value="(^[A-Z0-9_]{0,50}$)"/>      
    </module>
    
    <!-- 代码缩进   -->
    <module name="Indentation">
            <property name="basicOffset" value="4"/>
    </module>
    
    <!-- Checks for redundant exceptions declared in throws clause such as duplicates, unchecked exceptions or subclasses of another declared exception. 
      检查是否抛出了多余的异常  
    <module name="RedundantThrows">
        <property name="logLoadErrors" value="true"/>
        <property name="suppressLoadErrors" value="true"/> 
    </module>
    --> 
    
     <!--  Checks for overly complicated boolean expressions. Currently finds code like  if (b == true), b || true, !false, etc.   
       检查boolean值是否冗余的地方  
       Rationale: Complex boolean logic makes code hard to understand and maintain. -->  
    <module name="SimplifyBooleanExpression"/>
    
    <!--  Checks for overly complicated boolean return statements. For example the following code  
       检查是否存在过度复杂的boolean返回值  
       if (valid())  
          return false;  
       else  
          return true;  
       could be written as  
          return !valid();  
       The Idea for this Check has been shamelessly stolen from the equivalent PMD rule. -->  
    <module name="SimplifyBooleanReturn"/>  
    
    <!-- Checks that a class which has only private constructors is declared as final.只有私有构造器的类必须声明为final-->  
    <module name="FinalClass"/>
    
     <!--  Make sure that utility classes (classes that contain only static methods or fields in their API) do not have a public constructor.  
       确保Utils类(只提供static方法和属性的类)没有public构造器。  
       Rationale: Instantiating utility classes does not make sense. Hence the constructors should either be private or (if you want to allow subclassing) protected. A common mistake is forgetting to hide the default constructor.  
       If you make the constructor protected you may want to consider the following constructor implementation technique to disallow instantiating subclasses:  
       public class StringUtils // not final to allow subclassing  
       {  
           protected StringUtils() {  
               throw new UnsupportedOperationException(); // prevents calls from subclass  
           }  
           public static int count(char c, String s) {  
               // ...  
           }  
       } -->
    <module name="HideUtilityClassConstructor"/> 
     
    
    <!--  Checks visibility of class members. Only static final members may be public; other class members must be private unless property protectedAllowed or packageAllowed is set.  
      检查class成员属性可见性。只有static final 修饰的成员是可以public的。其他的成员属性必需是private的,除非属性protectedAllowed或者packageAllowed设置了true.  
       Public members are not flagged if the name matches the public member regular expression (contains "^serialVersionUID$" by default). Note: Checkstyle 2 used to include "^f[A-Z][a-zA-Z0-9]*$" in the default pattern to allow CMP for EJB 1.1 with the default settings. With EJB 2.0 it is not longer necessary to have public access for persistent fields, hence the default has been changed.  
       Rationale: Enforce encapsulation. 强制封装 -->  
    <module name="VisibilityModifier"/> 
    
    <!-- 每一行只能定义一个变量 -->
    <module name="MultipleVariableDeclarations">       
    </module>
    
     <!-- Checks the style of array type definitions. Some like Java-style: public static void main(String[] args) and some like C-style: public static void main(String args[])   
       检查再定义数组时,采用java风格还是c风格,例如:int[] num是java风格,int num[]是c风格。默认是java风格-->  
    <module name="ArrayTypeStyle"> 
    </module>
    
    <!-- Checks that there are no "magic numbers", where a magic number is a numeric literal that is not defined as a constant. By default, -1, 0, 1, and 2 are not considered to be magic numbers. 
    <module name="MagicNumber">   
    </module>
    -->  
    
    <!-- A check for TODO: comments. Actually it is a generic regular expression matcher on Java comments. To check for other patterns in Java comments, set property format.   
       检查是否存在TODO(待处理) TODO是javaIDE自动生成的。一般代码写完后要去掉。  
     -->  
    <module name="TodoComment"/>  
    
    <!--  Checks that long constants are defined with an upper ell. That is ' L' and not 'l'. This is in accordance to the Java Language Specification,  Section 3.10.1.  
      检查是否在long类型是否定义了大写的L.字母小写l和数字1(一)很相似。  
      looks a lot like 1. -->  
    <module name="UpperEll"/>
    
    <!--  Checks that switch statement has "default" clause. 检查switch语句是否有‘default’从句  
       Rationale: It's usually a good idea to introduce a default case in every switch statement. 
       Even if the developer is sure that all currently possible cases are covered, this should be expressed in the default branch,
        e.g. by using an assertion. This way the code is protected aginst later changes, e.g. introduction of new types in an enumeration type. --> 
    <module name="MissingSwitchDefault"/> 
    
    <!--检查switch中case后是否加入了跳出语句,例如:return、break、throw、continue -->
    <module name="FallThrough"/>  
    
    <!-- Checks the number of parameters of a method or constructor. max default 7个. -->    
    <module name="ParameterNumber">      
      <property name="max" value="7"/>              
    </module>
    
    <!-- 每行字符数 -->    
    <module name="LineLength">  
      <property name="max" value="120"/>       
    </module>  
    
    <!-- Checks for long methods and constructors. max default 300行. max=300 设置长度300 --> 
    <module name="MethodLength">  
      <property name="max" value="300"/>                 
    </module>        
    
    <!-- ModifierOrder 检查修饰符的顺序,默认是 public,protected,private,abstract,static,final,transient,volatile,synchronized,native -->  
    <module name="ModifierOrder">          
    </module>      
    
    <!-- 检查是否有多余的修饰符,例如:接口中的方法不必使用public、abstract修饰  -->
    <module name="RedundantModifier">       
    </module>
    
    <!--- 字符串比较必须使用 equals() -->   
    <module name="StringLiteralEquality">          
    </module> 
    
    <!-- if-else嵌套语句个数 最多2层 -->
    <module name="NestedIfDepth">        
      <property name="max" value="2"/>         
    </module>  
    
    <!-- try-catch 嵌套语句个数 最多2层 -->
    <module name="NestedTryDepth">  
      <property name="max" value="2"/>         
    </module>  
    
    <!-- 禁止使用System.out.println -->  
    <module name="Regexp">  
        <property name="format" value="System\.out\.println" />  
        <property name="illegalPattern" value="true"/>  
        <property name="ignoreComments" value="true" />  
    </module>  
     
    <!-- 返回个数 
    <module name="ReturnCount">        
      <property name="max" value="5"/>  
      <property name="format" value="^$"/>          
    </module>                  
  -->   
  </module>
  
</module>

 将规范文件放到某个路径下,比如放到eclipse的工作空间下

 打开eclipse,新建一个规范的配置,如下所示

 配置checkstyle,点OK后弹出窗确定即可

启动配置 

右键项目 --> properties --> Checkstyle

 也可以右键项目 -->然后找到Checkstyle的标签,选中后出现二级菜单

 举个例子:

加上注解后 

 【Eclipse部分设置参考链接

 

 

如果有写的不对的地方,请大家多多批评指正,非常感谢!

 

 

 

 

 

 

 

  • 7
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 首先,你需要打开Eclipse IDE。然后,按照以下步骤安装Checkstyle插件: 1. 在Eclipse菜单栏,选择“Help”(帮助)选项,然后选择“Eclipse Marketplace”(Eclipse市场)。 2. 在搜索框输入“Checkstyle”,然后按下“Go”按钮。 3. 在搜索结果,选择“Checkstyle Plug-in”并点击“Install”(安装)按钮。 4. 在安装向导,按照指示完成安装过程。 5. 安装完成后,重启Eclipse IDE。 现在,你已经成功安装Checkstyle插件。你可以在Eclipse的“Preferences”(首选项)配置Checkstyle规则,并在代码编辑器使用它来检查代码风格。 ### 回答2: eclipse作为一款优秀的集成开发环境,支持插件扩展,而checkstyle插件也是一款广泛应用的代码静态分析工具插件。本文将详细介绍如何在eclipse安装checkstyle插件。 一、安装checkstyle插件 1.打开eclipse,在菜单栏找到“Help”,点击下拉菜单的“Eclipse Marketplace”。 2.在搜索框输入“checkstyle”,然后点击搜索按钮。 3.在搜索结果,找到“Checkstyle Plug-in for Eclipse”,然后点击“Install”按钮。 4.在“Install Checkstyle Plug-in for Eclipse”窗口,勾选“最新版本”,然后点击“下一步”。 5.在“Review Licenses”窗口,阅读许可证协议,并选择“我同意许可证协议条款”,然后再点击“下一步”。 6.在“Install Details”窗口,查看安装的内容并点击“下一步”。 7.在“Install Confirmation”窗口,点击“安装”。 8.接下来会出现一个“Security Warning”窗口,点击“OK”继续安装。 9.安装完成后,弹出一个“Software Updates”窗口,选择“Restart Now”重启eclipse。 二、配置checkstyle插件 1.打开eclipse,在“Window”菜单下拉框选择“Preferences”。 2.在“Preferences”窗口,展开“Checkstyle”。 3.点击“New”按钮创建一个新的配置文件。 4.输入一个名字作为这个配置文件的标识。 5.选择“Use a checkstyle configuration file”,然后点击“Browse”按钮选择自定义的checkstyle.xml配置文件,或者选择默认的配置文件。 6.选择“Severity configuration”配置选项卡,勾选所需的检查项,并设置相应的检查等级。 7.点击“OK”保存上述配置。 8.在“Preferences”窗口的“Java”部分,找到“Editor”子菜单,点击展开,并在下拉菜单找到“Save Actions”。 9.在“Save Actions”窗口,勾选右侧的“Perform the selected actions on save”选项。然后在下方的“Configure…”按钮,勾选“Run Checkstyle”选项,并选择先前配置的checkstyle.xml文件。 10.点击“OK”保存配置后,checkstyle插件就已经安装并配置完成了。 在使用eclipse编写代码的过程checkstyle插件可以及时发现代码的错误和潜在问题,大大提升了开发效率和编程质量。 ### 回答3: Eclipse是一款流行的Java开发工具,如果您希望进行更严格的代码规范检查,可以安装Checkstyle插件。Checkstyle是一个开源工具,可以帮助Java开发者自动化代码规范和代码风格检查,以确保代码符合行业标准并能够更好地维护。 下面是安装Checkstyle插件的步骤: 1. 进入Eclipse的插件安装界面。 打开Eclipse,选择菜单“Help” - “Eclipse Marketplace”,进入插件安装页面。如果您使用的是较旧的Eclipse版本,您可以选择菜单“Help” - “Eclipse Marketplace...” 以打开插件安装页面。 2. 搜索Checkstyle插件。 在插件安装页面的搜索栏输入“Checkstyle”,可以找到多个插件,其包括Checkstyle插件。选择Checkstyle插件并点击“Go to Marketplace”按钮进一步查看插件详细信息。 3. 进行Checkstyle插件安装。 在插件详细信息页面,点击“Install”按钮,进入插件安装向导。勾选“Checkstyle Plug-in”和所有依赖项,点击“Next”按钮进入下一步。输入您的License Key(可选)并点击“Next”按钮。接受条款并点击“Finish”按钮,安装过程将会开始。 4. 配置Checkstyle插件。 安装完成后,重新启动Eclipse。进入“Window” - “Preferences”菜单,展开“Checkstyle”选项,选择“New”按钮以创建一个Checkstyle配置文件。配置文件包括检查器,检查器设置等。您可以使用默认配置,也可以根据自己的需求进行修改。 5. 运行Checkstyle插件。 在您的Java项目,右键点击项目名称,选择“Checkstyle” - “Check Code with Checkstyle”以进行代码检查。Checkstyle会自动检查您的代码,并在“Problems”视图显示出任何违规项。 总结:通过上述步骤,您可以轻松地安装使用Checkstyle插件对Java代码进行规范检查,以确保您的代码符合行业规范,并且易维护。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值