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