Android學習系列(24)--App代碼規范之使用CheckStyle


最近經常思考團隊開發的一些東西,其中代碼風格不統一是最常見的問題之一。按理說,大家協商和溝通一下,風格統一一下就可以了,其實不然,因為這是個個性張揚的時代!
工作code review中用了CheckStyle小半年了,覺得很好很強大很方便,大家寫出來的代碼就像一個人寫出來的一樣,值此辭舊迎新,特簡做說明,與爾同饗。

1.簡介
官方網站:http://checkstyle.sourceforge.net/
CheckStyle提供了一個幫助JAVA開發人員遵守某些編碼規范的工具。它能夠自動化代碼規范檢查過程,從而使得開發人員從這項重要,但是枯燥的任務中解脫出來。
CheckStyle檢驗的主要內容
(1). Javadoc注釋
(2). 命名約定
(3). 標題
(4). Import語句
(5). 體積大小
(6). 空白
(7). 修飾符
(8). 塊
(9). 代碼問題
(10). 類設計
(11). 混合檢查(包活一些有用的比如非必須的System.out和printstackTrace)

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)
 ... ...
其他的我們后面慢慢的修改。 

3.配置文件
在運行checkstyle時,需要一個參數(注:我的ubuntu服務器上安裝的checkstyle5.4版本,最新的是5.5版本):


這個配置文件就是用來定義你自己定制的代碼規范,你可以參考官方說明:http://checkstyle.sourceforge.net/availablechecks.html
這里,我們根據上面說的,來寫這樣一個code_check.xml :

<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
    "-//Puppy Crawl//DTD Check Configuration 1.2//EN"
    "http://www.puppycrawl.com/dtds/configuration_1_2.dtd">

<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。

/*******************
 ***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又是命名不規范,非常的准確。

5.與Git掛鈎
快12點了,我先把文章發表出來,這部分隨后我再補寫。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM