java代碼規範之使用CheckStyle

最近常常思考團隊開發的一些東西,其中代碼風格不統一是最多見的問題之一。按理說,你們協商和溝通一下,風格統一一下就能夠了,其實否則,由於這是個個性張揚的時代!
工做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

相關文章
相關標籤/搜索