最近常常思考团队开发的一些东西,其中代码风格不统一是最多见的问题之一。按理说,你们协商和沟通一下,风格统一一下就能够了,其实否则,由于这是个个性张扬的时代!
工做code review中用了CheckStyle小半年了,以为很好很强大很方便,使用起来也很方便,你们写出来的代码就像一我的写出来的同样,值此辞旧迎新,特简作说明,与尔同飨。html
1.简介
官方网站:http://checkstyle.sourceforge.net/
CheckStyle提供了一个帮助JAVA开发人员遵照某些编码规范的工具。它可以自动化代码规范检查过程,从而使得开发人员从这项重要,可是枯燥的任务中解脱出来。
CheckStyle检验的主要内容
(1). Javadoc注释
(2). 命名约定
(3). 标题
(4). Import语句
(5). 体积大小
(6). 空白
(7). 修饰符
(8). 块
(9). 代码问题
(10). 类设计
(11). 混合检查(包活一些有用的好比非必须的System.out和printstackTrace)java
2.定制
官方提供的代码规范每每太过严格,在工做中使用不太现实,因此有必要根据具体状况来定制具体的代码规范,CheckStyle对代码规范的定制提供了不少大灵活性。
下面咱们来定义一些基本的规范,后续有增长咱们再修改。
(1). 不要tab键;
(2). 避免重复的import, 多余的import和import *
(3). 常量所有大写字母(static final);
(4). 成员变量以m开头;
(5). 当有多重修饰符时,修饰符采用如下顺序:(public,protected,private,abstract,static,final,transient,volatile,synchronized,native,strictfp)
... ...
其余的咱们后面慢慢的修改。 ubuntu
3.配置文件
在运行checkstyle时,须要一个参数(注:个人ubuntu服务器上安装的checkstyle5.4版本,最新的是5.5版本):服务器
这个配置文件就是用来定义你本身定制的代码规范,你能够参考官方说明:http://checkstyle.sourceforge.net/availablechecks.html
这里,咱们根据上面说的,来写这样一个code_check.xml :app
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
<?
xml
version
=
"1.0"
?>
<!DOCTYPE module PUBLIC
"-//Puppy Crawl//DTD Check Configuration 1.2//EN"
<
module
name
=
"Checker"
>
<!-- 检查文件是否以一个新行结束-->
<
module
name
=
"NewlineAtEndOfFile"
/>
<!-- 检查文件中是否含有tab键-->
<
module
name
=
"FileTabCharacter"
/>
<
module
name
=
"TreeWalker"
>
<!-- 常量所有用大写-->
<
module
name
=
"ConstantName"
/>
<!-- 避免.*,重复多余的和不使用的import-->
<
module
name
=
"AvoidStarImport"
/>
<
module
name
=
"RedundantImport"
/>
<
module
name
=
"UnusedImports"
/>
<!-- 成员变量格式为:m+大写+字母-->
<
module
name
=
"MemberName"
>
<
property
name
=
"format"
value
=
"^m[A-Z][a-zA-Z0-9]*$"
/>
</
module
>
<!-- 检查代码块:起始大括号和if等同行,不能有空的代码块,结束大括号另起一行-->
<
module
name
=
"LeftCurly"
/>
<
module
name
=
"NeedBraces"
/>
<
module
name
=
"RightCurly"
/>
<!-- 当有多重修饰符时,修饰符采用如下顺序:
(public,protected,private,abstract,static,final,
transient,volatile,synchronized,native,strictfp) -->
<
module
name
=
"ModifierOrder"
/>
</
module
>
</
module
>
|
更多检查规范中文说明参考园子里地址: http://www.cnblogs.com/liugang/archive/2010/10/26/1860903.html工具
4.使用checkstyle
插件工具的使用我就不介绍了,我只想起个抛砖引玉的做用,checkstyle命令很是简单,这里我只说明3个参数:-c, -r, -o。网站
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
/*******************
***CheckStyle Usage**
******************/
/***
*参数
*1. -c 配置文件,并验证文件
*2. -o 输出结果
*3. -r 遍历目录
**/
//用咱们定制的code_checks.xml检查文件
$>checkstyle -c ~/GitProj/world/code_checks.xml
~/GitProj/world/floworld/src/com/tianxia/app/floworld/appreciate/AppreciateLatestActivity.java
//用咱们定制的code_checks.xml检查目录下的全部源文件,并把结果输出到result.txt中
$>checkstyle -c ~/GitProj/world/code_checks.xml
-r ~/GitProj/world/floworld/src/com/tianxia/app/floworld/appreciate/
|
咱们打开result.txt来看下输出结果:编码
又是tab又是命名不规范,很是的准确。url