你不知道的Eclipse用法:使用CheckStyle实施编码标准

Checkstyle是一款为Java代码实施编码约定和最佳时间规则的开源工具,尽管它最初被设计用于实施编码标准,但现在它也允许用户检查最佳编码实践。它分析Java源代码并报告违反标准的情况,可以通过插件将其继承到自己喜欢的继承开发环境中,以便开发人员能够立即看到并纠正违反正式标准的情况。 

Checkstyle提供了现成的标准Sun约定,包括120个规则和标准,这些约定能够处理各种问题:从代码格式、命名约定,企业JavaBean(EJB)最佳时间,到代码复杂性度量。Checkstyle支持与以下方面有关的标准: 

  • Javadoc注释 

  • 命名约定 

  • 文件头 

  • 导入语句 

  • 空白 

  • 修饰符 

  • 代码块 

  • 编码问题 

  • 类设计 

  • J2EE 

  1. Eclipse安装使用Checkstyle操作步骤 

  1. EclipseCheckstyle插件的安装 

选择Help->Eclipse Market->Search。搜索Checkstyle插件,并安装 


  1. 为特定项目激活Checkstyle检查 

一旦安装好插件,需要为特定项目激活Checkstyle检查,默认情况下不会为项目激活Checkstyle。选择项目,右键->Propterties->Checkstyle。确保选中Checkstyle active for this project复选框位置1 


还可以指定要用于此项目的规则集(位置2),EclipseCheckstyle插件提供了两个规则集:Sun Java编码标准以及对Sun规则略做修改的版本。后者更适合标准Eclipse格式约定。 

Checkstyle代码检查可能很耗时,尤其是在检查大量文件时。过多的错误还可能使用户更难将精力集中在真正需要纠正的问题上。Exclude from checking(位置3)选项可以过滤掉不需要进行检查的特定类或软件包。 

  1. 查看检查结果,并更正错误 

Checkstyle检查完成之后,可以在Problems视图窗格中看见一长串违反规则的警告情况。 


单击列表中的问题,将自动跳转到违反规则的代码段。违反规则的代码以黄色突出显示,另外在边上还有相应的标记。 


  1. Eclipse定制Checkstyle规则 

实施通过配置文件提供的现成的Sun编码标准有时可能让人不知所Checkstyle可能会指出数以百计的相对小的规则违反情况,尤其是在没有使用Checkstyle时已经编写了大量代码的情况下。 

要以最佳实践方式采用编码标准,并用Checkstyle来实施编码标准,通常需要彩种灵活的方式。这样做的最简单的方式是创建一组自定义编码标准,这些标准专门为公司或单位项目设计。 

  1. EclipseWindows->Preference->Checkstyle首选项。将会看见一些内置的配置文件。 


  1. 需要创建新的Checkstyle配置文件,只需要单击New按钮,有多种配置文件可供使用,包括: 

内置配置(Built-in confiturations):例如Sun标准编码,它们由Checkstyle插件提供,并且不能更改。 

内部配置(Internal configurations):存储在Eclipse元数据中。这些配置对于在本地实验新的配置很有用,但不方便与其他团队成员共享它们。 

外部配置(External configurations):从外部来源导入。可以从本地磁盘的外部文件中或web服务器导入外部配置,或者存储在Eclipse项目中的配置管理下。 

项目相对配置(Project Relative configurations):当其他工具如AntMaven也要在构建过程中使用相应的Checkstyle配置文件时,此配置尤其有用。 


  1. 新建规则后,双击新的规则。在对话框中选取相应的规则,并根据自己的需求进行更改。 


3.规则详情

a) Annotations

b) JavadocCommnents

     Method Javadoc:检查方法或者构造器的doc注释。

     Type Javadoc:检查类和接口的doc注释。

     VariableJavadoc:检查变量的doc注释。

c) NamingConventions

     Abstract Class Name:根据命名约定检查抽象类名称。

     Constant Names:根据命名约定检查(static  final)常量参数的名称。

     Local Final Variable Names:根据命名约定检查局部最终变量的名称。

     Local Variable Names:根据命名约定检查局部变量的名称。

     Member Names:根据命名约定检查(no-static)成员变量的名称。

     Methods Names:根据命名约定检查方法的名称。

     Method Type Parameter Name:根据命名约定检查形式参数的名称。

     Package Names:根据命名约定检查包的名称。

     Parameter Names:根据命名约定检查参数的名称。

     Static Variable Names:根据命名约定检查(static  no-final)静态变量名称。

     Type Name:根据命名约定检查类的名称。

d) Headers

e) Imports

     AvoidStar(Demand)Imports:确保没有使用*符号import语句。

     Avoid StaticImports:确保没有静态import语句。

     Import OrferCheck:检查import语句的顺序/分组。

     RedundantImports:确保没有多余的import语句。

     Unused Imports:确保没有无用的imoport语句。

f) SizeViolations

     Anonymous inner classes length:检查内部类的长度。

     Executable Statement Size:为可执行语句(实例初始化、静态初始化、方法声明,构造器声明)指定一个确切的行数约束。

     Maxinum File Length:最大的文件长度。

     Maxinum Line Length:最大的行长度。

     Maxinum Method Length :最大的方法长度。

     Maxinum Parameters:最大的参数个数。

     Outer Type Number:返回值个数。

     Method Count在每个类、接口中声明的方法的个数。

g) Whitespace

h) Regexp

i) Modifiers

     Modifier Order:遵照Java语言规范的建议检查访问修饰符的顺序。

     RedundantModifier:检查多余的访问修饰符。

j) Blocks

     Avoid NestedBlocks:避免嵌套代码块。

     Empty Block:检查空的代码块。

     Left Curly BracePlacement:左花括号的位置。

     Need Braces:检查需要的大括号。

     Right CurlyBrace Placemnent:右花括号的位置。

k) CodingProblems

     Avoid InlineConditionals:避免行内的条件句。

     Default ComesLast:检查default在一个switch语句的所有case的后面。

     DeclarationOrder Check:根据Java语言编码规范,检查类或者接口内的顺序。

     Empty Statement:检测空语句。

     Equals AvoidNull:避免字符串equals方法的Null情况。

     Equals andHashCode:检查覆盖equals()的类也覆盖了hashCode()。

     ExplicitInitialization:检查类或者对象的成员被明确的初始化为它的类型的默认值。

     Fall Through:检查在switch语句中的落空,就是一个case语句,但是没有break,return,throw或者continue语句的位置。

     Magic Number:确保没有“魔法数字”,如-1,0,1和2等。

     MissingConstructor:确保类定义了一个构造器,并没有以来默认的构造器。

     Missing SwitchDefault:确保switch语句有default语句。

     Mofified ControlVariable:确保循环变量在循环体中没有被修改。

     Mutiple StringLiterals:确保在一个文件中没有多个相同的字符串常量。

     Nested ForDepth:for语句嵌套深度。

     Nested IfDepth:if语句的嵌套深度。

     Nested TryDepth:try语句的嵌套深度。

     No Finalizer:检查在一个类中没有finalize()方法被定义。

     PackageDeclaration:确保一个类有一个包的声明,并且(可选的)包名匹配源文件的名称。

     Require This:检查没有依赖this的代码。引用当前对象的实例变量和方法,显示的调用”this.varName”或者”this.methodName(args)”。

     Return Count:约束返回语句的个数。

     Simplify BooleanExpression:检查复杂的布尔表达式。

     Simplify BooleanReturn:检查难懂的布尔返回语句。

     String LiteralEquality:检查字符串没有使用==或者!=。

     SuperClone:检查覆盖finalize()方法调用super.finalize()。

     SuperFinalize:检查覆盖clone()方法调用super.clone()。

     Trailing ArrayComma:检查数组初始化拖拽的逗号。

     UnnessaryParentheses:不需要的圆括号。

     One StatementPer Line:检查每行一个语句。

l) ClassDesign

m) Duplicates

n) Metrics

BooleanExpression Complexity:约束&&,||,&,|和^在一个表达式中的个数。

 

o) Miscellaneous

p) Other

q) Filters


新技术,新未来!欢迎大家关注 “1024工场”微信服务号 ,时刻关注我们的最新的技术讯息! (甭客气!尽情的扫描或者长按!)


  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值