<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    夢想飛翔

    自強不息
    posts - 111, comments - 30, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

     在Eclipse中使用Checkstyle  http://www.tkk7.com/hpfyeah/archive/2007/11/30/164305.html

    Checkstyle4.3 中文手冊
    加入OpenDoc前的 預(yù)覽版。
    申 思維

    1.0

    版權(quán) © 2008 申思維

    本文根據(jù)Checkstyle4.3 英文官方文檔而來。我打算發(fā)布成OpenDoc, 歡迎大家給我來信,多提意見!謝謝

    目錄

    1. 前言
    1. 介紹

    1.1. 概述
    1.2. 特點
    1.3. 下載

    2. N分鐘入門
    3. 常用的檢查

    3.1. 典型的配置文件

    4. 用的最多的20%功能
    5. 在Ant中使用Checkstyle

    5.1. N分鐘極速入門
    5.2. 安裝與配置
    5.3. 典型例子
    5.4. checkstyle任務(wù)的參數(shù)
    5.5. 可以嵌套的ant元素

    6. 在Eclipse中使用Checkstyle

    6.1. 下載和安裝
    6.2. 配置方法
    6.3. 使用
    6.4. 常見問題

    7. 各種檢查

    7.1. 如何配置檢查
    7.2. JavaDoc注釋

    7.2.1. 類和接口的javadoc
    7.2.2. 方法的javadoc
    7.2.3. 方法的javadoc
    7.2.4. 變量的javadoc

    7.3. 命名約定

    7.3.1. 模塊一覽
    7.3.2. 注意

    7.4. 文件頭
    7.5. Imports

    7.5.1. import中避免星號"*"
    7.5.2. 沒用的import

    7.6. 長度限制

    7.6.1. 文件長度
    7.6.2. 每行長度
    7.6.3. 方法長度
    7.6.4. 方法的參數(shù)個數(shù)

    7.7. 空格

    7.7.1. 方法名與左邊圓括號之間
    7.7.2. 圓括號附近的空格
    7.7.3. 類型轉(zhuǎn)換中圓括號附近的空格
    7.7.4. 對"Tab"的檢查
    7.7.5. 特定符號后的空格

    7.8. 關(guān)鍵字

    7.8.1. 關(guān)鍵字的出現(xiàn)順序
    7.8.2. 多余的關(guān)鍵字

    7.9. 對區(qū)域(empty block)的檢查

    7.9.1. 空白區(qū)域
    7.9.2. 對左側(cè)括號{ 的檢查(略)
    7.9.3. 需要括號的區(qū)域
    7.9.4. 對右側(cè)括號} 的檢查(略)
    7.9.5. 不必要的括號

    7.10. 編碼的檢查

    7.10.1. 數(shù)組尾巴的逗號
    7.10.2. 避免內(nèi)聯(lián)(inline)條件判斷
    7.10.3. override的equals方法
    7.10.4. 空語句(statement)
    7.10.5. equals和hashCode方法
    7.10.6. 應(yīng)該聲明成final的局部變量
    7.10.7. 不合適的初始化
    7.10.8. 不合適的token
    7.10.9. 內(nèi)部賦值語句
    7.10.10. 魔法數(shù)
    7.10.11. 丟了default分支的switch
    7.10.12. 被更改的循環(huán)控制變量
    7.10.13. 多余的throw
    7.10.14. 未被簡化的條件表達式
    7.10.15. 未被簡化的布爾返回值
    7.10.16. 字符串(String)的比較
    7.10.17. 嵌套的if 層次
    7.10.18. 嵌套的try 層次
    7.10.19. 調(diào)用父類的clone
    7.10.20. 父類的finalize
    7.10.21. 不合理的catch
    7.10.22. 不合理的throws
    7.10.23. package 聲明
    7.10.24. JUnitTestCase
    7.10.25. return 語句的數(shù)量
    7.10.26. 聲明的順序
    7.10.27. 參數(shù)被賦值
    7.10.28. 詳盡的變量初始化
    7.10.29. switch語句的default位置排在最后
    7.10.30. 丟失的構(gòu)造函數(shù)
    7.10.31. switch中錯誤分支。
    7.10.32. 多個內(nèi)容相同的字符串變量
    7.10.33. 同一行禁止聲明多個變量
    7.10.34. 不使用this
    7.10.35. 不必要的圓括號

    7.11. Class的設(shè)計

    7.11.1. 可見的修改方法
    7.11.2. Final class
    7.11.3. Interfacels Type
    7.11.4. 隱藏工具類的構(gòu)造方法
    7.11.5. 方便繼承(extention)而進行的設(shè)計
    7.11.6. throws的數(shù)量

    7.12. 重復(fù)的代碼

    7.12.1. StrictDuplicateCode 嚴格的重復(fù)代碼檢查

    7.13. 各種量度

    7.13.1. 布爾表達式的復(fù)雜度
    7.13.2. 類數(shù)據(jù)的抽象耦合
    7.13.3. 類的分散復(fù)雜度
    7.13.4. 函數(shù)的分支復(fù)雜度
    7.13.5. Npath復(fù)雜度

    7.14. 雜項

    7.14.1. 禁止使用的表達式
    7.14.2. 文件結(jié)尾的回車
    7.14.3. Todo注釋
    7.14.4. 翻譯屬性文件
    7.14.5. 沒有被注釋掉的Main函數(shù)
    7.14.6. 大寫的L
    7.14.7. 聲明數(shù)組的風格
    7.14.8. final型的參數(shù)
    7.14.9. 縮進
    7.14.10. 與代碼同行的注釋
    7.14.11. 必須出現(xiàn)的字符串

    術(shù)語表
    參考書目

    插圖清單

    2.1. 測試如何使用checkstyle的項目
    2.2. 開啟Checkstyle
    2.3. 代碼窗口中的錯誤提示
    2.4. Problems窗口中的錯誤提示
    2.5. 增加了class的注釋后的效果圖
    2.6. 使用自定義的Checkstyle配置文件
    2.7. 定制配置的檢查結(jié)果
    2.8. 修正后的定制配置的檢查結(jié)果
    5.1. 在Ant環(huán)境下Checkstyle的所須文件
    5.2. Ant下Checkstyle檢查正確的結(jié)果
    5.3. Ant下Checkstyle檢查錯誤的結(jié)果
    6.1. 成功安裝Checkclipse后的Preferences窗口
    6.2. 配置單個項目的Checkclipse
    6.3. 設(shè)置單個項目的Checkclipse的文件過濾器(file filter)
    6.4. 出錯信息中的檢查名
    6.5. Problems的過濾器中配置Checkclipse。
    6.6. 右鍵菜單中的checkstyle選項

    表格清單

    5.1. checkstyle任務(wù)屬性表
    5.2. formatter元素的屬性
    7.1. 命名約定檢查模塊一覽表
    7.2. WhitespaceAfter 屬性列表
    7.3. 重復(fù)代碼插件的特性摘要:
    7.4. GenericIllegalRegexp的屬性列表
    7.5. NewlineAtEndOfFile的屬性列表
    7.6. Indentation的屬性列表

    前言
    Preface

    Checkstyle是非常優(yōu)秀的代碼規(guī)范檢查軟件,可以大幅的提高代碼質(zhì)量, 當項目的開發(fā)人員比較多時,用它來統(tǒng)一代碼風格是很有必要的。

    本文的寫作,是由于公司的質(zhì)量管理部門對代碼格式進行了要求。 在網(wǎng)上也沒有發(fā)現(xiàn)有比較詳細全面的中文文檔。所以參考Checkstyle4.3的官方文檔寫就。

    有個比較神奇的20%-80%規(guī)律是這樣說的:一本書,用的最多的只是20%的內(nèi)容,它的出現(xiàn)幾率是80%; 而剩下的80%內(nèi)容,被使用的不到20%。這個規(guī)律也同樣適用在其他東東上。只是數(shù)據(jù)上稍有差異。 所以我特意安排了 第 4 章 用的最多的20%功能 ,作為典型的使用方法。

    對于趕時間的朋友,也可以直接看第 2 章 N分鐘入門 ,可以讓你在最快的時間內(nèi)入門。 對于時間充沛的朋友,建議多看看文檔。因為作者一再的強調(diào)“it is worth reading the documentation”。

    第 5 章 在Ant中使用Checkstyle 說明了在ant下的用法。第 6 章 在Eclipse中使用Checkstyle 說明了Eclipse的插件Checkclipse的用法。

    對于初次接觸代碼規(guī)范的朋友,我安排了第 3 章 常用的檢查 ,里面是個人以為滿足大多數(shù)公司要求的檢查,包括一個配置文件。

    第 7 章 各種檢查 是各種檢查的詳細用法,讀起來比較枯燥,建議象查字典那樣有需要時翻閱,所以放在最后。
    [小心] 歡迎意見

    為了加入OpenDoc , 歡迎各位朋友指出文檔中的任何錯誤和不足,也可以給我任何意見。請Email給我:shensiwei(at)sina.com

    希望本文對您有用。謝謝!
    第 1 章 介紹
    Introduction

    目錄

    1.1. 概述
    1.2. 特點
    1.3. 下載

    1.1. 概述

    Checksytle 是一款代碼格式檢查工具。它可以根據(jù)設(shè)置好的編碼規(guī)則來檢查代碼。 比如符合規(guī)范的變量命名,良好的程序風格等等。如果你的項目經(jīng)理開會時說,“我希望我們寫出來的代碼就象一個人寫的!” 時,用Checkstyle絕對是正確選擇。:)

    本文檔就是在4.3的基礎(chǔ)上完成。截止到2008-02-22,最新的版本是4.4。

    需要強調(diào)的是,Checkstyle只能做檢查,而不能做修改代碼。
    [小心] 提醒

    想修改代碼格式,請使用Jalopy. 它和Checkstyle配合使用非常合適。
    1.2. 特點

    Checkstyle的配置性極強,你可以只檢查一種規(guī)則,也可以檢查三十,四十種規(guī)則。可以使用Checkstyle自帶的規(guī)則, 也可以自己增加檢查規(guī)則。(這點跟 Ant 自定義target比較象)

    支持幾乎所有主流IDE,包括 Eclipse , IntelliJ, NetBeans, JBuilder 等11種。
    1.3. 下載

    最新的發(fā)布版本在 : 這里

    4.4使用了SVN,關(guān)閉了CVS。SVN在 這里

    各種插件下載,見 Checkstyle主頁 中的列表。
    第 2 章 N分鐘入門
    extreme learning

    讓您在幾分鐘之內(nèi)了解Checkstyle的大致用法。適合趕時間的朋友。假設(shè)您已經(jīng)安裝好了Checkstyle的Eclipse插件。
    [小心] 測試

    歡迎在閱讀下一行之前,記錄下當前的時間,然后在讀完本節(jié)之后,算算您用了多少時間。 如果方便,請將您用的時間告訴我,謝謝:)

    1.

    首先,我們建立一個eclipse的項目:test_checkstyle。包含一個源文件夾:src,一個目標生成文件夾 eclipse_build. 如 圖 2.1 “測試如何使用checkstyle的項目” 所示。
    測試如何使用checkstyle的項目

    圖 2.1. 測試如何使用checkstyle的項目
    2.

    在項目中開啟Checkstyle: 打開該project的屬性,點中左側(cè)的Checkclipse后,將"Enable Checkstyle"前面打上勾。 如 圖 2.2 “開啟Checkstyle” 所示。
    開啟Checkstyle

    圖 2.2. 開啟Checkstyle
    3.

    建立一個測試用的Class: 比如SomeClassToBeChecked,內(nèi)容如下:

    /*
    * Copyright (c) 2001-2008 Beijing BidLink Info-Tech Co., Ltd.
    * All rights reserved.
    * Created on 2008-2-22
    *
    * $Id: learn_in_5_min.xml,v 1.3 2008/03/03 03:43:44 Administrator Exp $
    */
    package test;

    public class SomeClassToBeChecked {

    }


    只有一個頭部注釋,沒有方法,啥啥都沒有。
    4.

    Checkstyle檢查它:右鍵點項目名,選擇"Build Project",會把src文件夾進行編譯,把class文件放到eclpise_build中。 結(jié)束之后,我們可以看到: 圖 2.3 “代碼窗口中的錯誤提示” 中的代碼第10行處,有一個嘆號,把鼠標移上去就會出現(xiàn) 提示"Missing a Javadoc comment."
    代碼窗口中的錯誤提示

    圖 2.3. 代碼窗口中的錯誤提示

    同時,在Problems窗口中也有提示,如 圖 2.4 “Problems窗口中的錯誤提示” 所示。
    Problems窗口中的錯誤提示

    圖 2.4. Problems窗口中的錯誤提示
    5.

    修改代碼:既然提示說缺少了Javadoc注釋,我們就把它加上。 如 圖 2.5 “增加了class的注釋后的效果圖” 所示。
    增加了class的注釋后的效果圖

    圖 2.5. 增加了class的注釋后的效果圖

    然后重新編譯,可以看出,Warning沒有了。檢查通過。
    [小心] 注意

    上面的很簡單是吧?恩,我也這么覺得。但別走!如果以為這樣就可以用Checkstyle, 那你就錯了。你可以試一下用同樣的方式來編譯一個項目,會發(fā)現(xiàn)根本是Warning滿天飛。為什么?因為Checkstyle自帶的檢查非常變態(tài), 隨便一個項目都可以弄出幾千個Warning。所以,想用它,一定要使用自己的定制檢查。:)
    6.

    定制檢查:Checkstyle沒有圖形化的定制器,所以需要手工修改配置文件。比如,我們的代碼需要符合下列規(guī)則:
    *

    長度方面:文件長度不超過1500行,每行不超過120個字,方法不超過60行.
    *

    命名方面:類名不能小寫開頭,方法名不能大寫開頭,常量不能有小寫字母。
    *

    編碼方面:不能用魔法數(shù)(Magic Number),if最多嵌套3層。

    那么,我們的檢查配置文件(如命名成 my_check.xml ) 應(yīng)該是這樣的:

    <?xml version="1.0" encoding="UTF-8"?>
    <!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="TreeWalker">

    <!-- 長度方面的檢查 -->
    <!-- 文件長度不超過1500行 -->
    <module name="FileLength">
    <property name="max" value="1500"/>
    </module>
    <!-- 每行不超過120個字-->
    <module name="LineLength">
    <property name="max" value="120"/>
    </module>
    <!-- 方法不超過60行 -->
    <module name="MethodLength">
    <property name="tokens" value="METHOD_DEF"/>
    <property name="max" value="60"/>
    </module>

    <!-- 命名方面的檢查,它們都使用了Checkstyle默認的規(guī)則。 -->
    <!-- 類名(class 或interface) 的檢查 -->
    <module name="TypeName"/>
    <!-- 方法名的檢查 -->
    <module name="MethodName"/>
    <!-- 常量名的檢查 -->
    <module name="ConstantName"/>

    <!-- 編碼方面的檢查 -->
    <!-- 不能用魔法數(shù) -->
    <module name="MagicNumber"/>
    <!-- if最多嵌套3層 -->
    <module name="NestedIfDepth">
    <property name="max" value="3"/>
    </module>

    </module>
    </module>


    可以看出,想增加一個檢查,就是增加一個<module/>結(jié)點。具體的結(jié)點內(nèi)容在后面的文檔都會寫明。
    7.

    Checkstyle使用指定的檢查配置文件:打開項目屬性,在Checkclipse中的"Checkstyle Configuration File" 一欄中 選定我們的配置文件,然后確定。如 圖 2.6 “使用自定義的Checkstyle配置文件” 所示。
    使用自定義的Checkstyle配置文件

    圖 2.6. 使用自定義的Checkstyle配置文件

    然后重新編譯項目,就會發(fā)現(xiàn),Checkstyle的規(guī)則如我們所愿:只檢查我們在文件中配置的幾項。并且它們是以"Error"級別進行提示,而不是默認檢查時出現(xiàn)的"Warning"級別。 比如,我們把一個方法中,增加4層嵌套(共5個if),并將方法名大寫,就會出現(xiàn) 圖 2.7 “定制配置的檢查結(jié)果” :
    定制配置的檢查結(jié)果

    圖 2.7. 定制配置的檢查結(jié)果

    可以看到,出現(xiàn)了兩個Error: 方法名的"Name xx must match pattern..." 和if嵌套的"Nested if-else depth is 4..."。 把它們都改過來,程序就好了。
    8.

    代碼的修正:依照上面的例子,把方法名小寫,if循環(huán)嵌套3層,然后重新編譯,OK。如: 圖 2.8 “修正后的定制配置的檢查結(jié)果”
    修正后的定制配置的檢查結(jié)果

    圖 2.8. 修正后的定制配置的檢查結(jié)果

    到這里就結(jié)束了。看明白了嗎?歡迎給我意見,以及看到這里所用的時間。:)

    想在N分鐘內(nèi)了解ant下checkstyle的使用方法,請看 第 5.1 節(jié) “N分鐘極速入門”
    第 3 章 常用的檢查

    目錄

    3.1. 典型的配置文件

    Checkstyle自帶了兩個配置文件:checkstyle_checks.xml 和 sun_checks.xml。前者是checkstyle作者定義的,后者是嚴格符合Sun編碼規(guī)范 的。 可惜它們的檢查太過嚴格,任何一個項目都會搞出上千個Warning來。

    所以這里提供了一個配置文件,包含了比較常用的檢查,去掉了對空格位置,大括號位置等國內(nèi)不注重的內(nèi)容, 建議個人使用。

    如果是公司使用,建議把它再精簡些。因為對公司來說,這個配置文件還是比較苛刻的。
    3.1. 典型的配置文件

    下面是一個典型的checkstyle配置文件,應(yīng)該適合于大多數(shù)情況的要求。每個檢查前的注釋說明了它的作用。本文的PDF文檔 無法正常顯示其中的漢字,建議本節(jié)使用HTML版查看。:)

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

    <!-- 重復(fù)代碼的檢查,超過8行就認為重復(fù),UTF-8格式
    本檢查一定要放在"TreeWalker"節(jié)點前,否則在
    Checkclipse中會無法使用。(在ant下可以)
    -->
    <module name="StrictDuplicateCode">
    <property name="min" value="8"/>
    <property name="charset" value="UTF-8"/>
    </module>

    <module name="TreeWalker">

    <!-- javadoc的檢查 -->
    <!-- 檢查所有的interface和class -->
    <module name="JavadocType"/>

    <!-- 檢查所有方法的javadoc,可以不聲明RuntimeException -->
    <module name="JavadocMethod">
    <property name="allowUndeclaredRTE" value="true"/>
    </module>
    <!-- 檢查某個變量的javadoc -->
    <module name="JavadocVariable"/>

    <!-- 命名方面的檢查,它們都使用了Sun官方定的規(guī)則。 -->
    <!-- 類名(class 或interface) 的檢查 -->
    <module name="TypeName"/>
    <!-- 變量的檢查 -->
    <module name="MemberName"/>
    <!-- 方法名的檢查 -->
    <module name="MethodName"/>
    <!-- 方法的參數(shù)名 -->
    <module name="ParameterName "/>
    <!-- 常量名的檢查 -->
    <module name="ConstantName"/>


    <!-- 長度方面的檢查 -->
    <!-- 文件長度不超過1500行 -->
    <module name="FileLength">
    <property name="max" value="1500"/>
    </module>
    <!-- 每行不超過120個字-->
    <module name="LineLength">
    <property name="max" value="120"/>
    </module>
    <!-- 方法不超過30行 -->
    <module name="MethodLength">
    <property name="tokens" value="METHOD_DEF"/>
    <property name="max" value="30"/>
    </module>
    <!-- 方法的參數(shù)個數(shù)不超過3個。 -->
    <module name="ParameterNumber">
    <property name="max" value="3"/>
    </module>


    <!-- 多余的關(guān)鍵字 -->
    <module name="RedundantModifier"/>
    <!-- 對區(qū)域的檢查 -->
    <!-- 不能出現(xiàn)空白區(qū)域 -->
    <module name="EmptyBlock"/>
    <!-- 所有區(qū)域都要使用大括號。 -->
    <module name="NeedBraces"/>
    <!-- 多余的括號 -->
    <module name="AvoidNestedBlocks">
    <property name= "allowInSwitchCase"
    value="true"/>
    </module>




    <!-- 編碼方面的檢查 -->

    <!-- 不許出現(xiàn)空語句 -->
    <module name="EmptyStatement"/>
    <!-- 每個類都實現(xiàn)了equals()和hashCode() -->
    <module name="EqualsHashCode"/>
    <!-- 不許使用switch -->
    <module name="IllegalToken">
    <property name="tokens"
    value="LITERAL_SWITCH"/>
    </module>
    <!-- 不許內(nèi)部賦值 -->
    <module name="InnerAssignment"/>
    <!-- 絕對不能容忍魔法數(shù) -->
    <module name="MagicNumber"/>
    <!-- 循環(huán)控制變量不能被修改 -->
    <module name="ModifiedControlVariable"/>
    <!-- 多余的throw -->
    <module name="RedundantThrows"/>
    <!-- 不許使用未被簡化的條件表達式 -->
    <module name="SimplifyBooleanExpression"/>
    <!-- 不許使用未被簡化的布爾返回值 -->
    <module name="SimplifyBooleanReturn"/>
    <!-- String的比較不能用!= 和 == -->
    <module name="StringLiteralEquality"/>
    <!-- if最多嵌套3層 -->
    <module name="NestedIfDepth">
    <property name="max" value="3"/>
    </module>
    <!-- try最多被嵌套1層 -->
    <module name="NestedTryDepth"/>
    <!-- clone方法必須調(diào)用了super.clone() -->
    <module name="SuperClone"/>
    <!-- finalize 必須調(diào)用了super.finalize() -->
    <module name="SuperFinalize"/>
    <!-- 不能catch java.lang.Exception -->
    <module name="IllegalCatch">
    <property name="illegalClassNames"
    value="java.lang.Exception"/>
    </module>
    <!-- JUnitTestCase 的核心方法存在。 -->
    <module name="JUnitTestCase"/>
    <!-- 一個方法中最多有3個return -->
    <module name="ReturnCount">
    <property name="max" value="3"/>
    </module>
    <!-- 不許對方法的參數(shù)賦值 -->
    <module name="ParameterAssignment"/>
    <!-- 不許有同樣內(nèi)容的String -->
    <module name="MultipleStringLiterals"/>
    <!-- 同一行不能有多個聲明 -->
    <module name="MultipleVariableDeclarations"/>


    <!-- 各種量度 -->
    <!-- 布爾表達式的復(fù)雜度,不超過3 -->
    <module name="BooleanExpressionComplexity"/>
    <!-- 類數(shù)據(jù)的抽象耦合,不超過7 -->
    <module name="ClassDataAbstractionCoupling"/>
    <!-- 類的分散復(fù)雜度,不超過20 -->
    <module name="ClassFanOutComplexity"/>
    <!-- 函數(shù)的分支復(fù)雜度,不超過10 -->
    <module name="CyclomaticComplexity"/>
    <!-- NPath復(fù)雜度,不超過200 -->
    <module name="NPathComplexity"/>


    <!-- 雜項 -->
    <!-- 禁止使用System.out.println -->
    <module name="GenericIllegalRegexp">
    <property name="format" value="System\.out\.println"/>
    <property name="ignoreComments" value="true"/>
    </module>

    <!-- 不許使用與代碼同行的注釋 -->
    <module name="TrailingComment"/>

    </module>



    <!-- 檢查翻譯文件 -->
    <module name="Translation"/>

    </module>


    第 4 章 用的最多的20%功能
    Core 20%

    這里列出了個人以為的20%的最常用功能。歡迎您把自己認為的20%發(fā)過來,我會進行一個統(tǒng)計,及時更新本節(jié)。

    *

    命名符合規(guī)范

    類,方法,成員變量等等的命名,一般要遵循 Sun編碼規(guī)范 。
    *

    編碼中的長度問題

    類,方法的長度不應(yīng)該過大。
    *

    編碼習慣的檢查

    檢查代碼中是否有過多的if嵌套,魔法數(shù),switch丟失的default, 復(fù)雜的條件表達式等。
    *

    重復(fù)的代碼

    如果兩個代碼段出現(xiàn)了一定行數(shù)的嚴格重復(fù),就判定它們已經(jīng)重復(fù)。

    第 5 章 在Ant中使用Checkstyle

    目錄

    5.1. N分鐘極速入門
    5.2. 安裝與配置
    5.3. 典型例子
    5.4. checkstyle任務(wù)的參數(shù)
    5.5. 可以嵌套的ant元素

    如果您趕時間,請看第 5.1 節(jié) “N分鐘極速入門” 。:)
    5.1. N分鐘極速入門

    (請打開一個秒表記時,謝謝)

    需要"checkstyle-all-4.3.jar",該jar文件包含了checkstyle所用的幾乎所有類。

    需要有一個指定的配置文件,比如當前項目中的"./config/my_check.xml"。

    另外,把checkstyle-all.jar放在一個合適的目錄中,比如"./lib"。

    最后,設(shè)置Ant的輸出文件夾為"./ant_build" 如 圖 5.1 “在Ant環(huán)境下Checkstyle的所須文件” 所示。
    在Ant環(huán)境下Checkstyle的所須文件

    圖 5.1. 在Ant環(huán)境下Checkstyle的所須文件

    ant的配置文件中需要指定一個taskdef來定義checkstyle任務(wù), 然后在checkstyle任務(wù)中指定配置文件(config屬性), 和需要被檢查的文件夾(fileset)。本例使用的ant文件是這樣的:

    <?xml version="1.0" ?>
    <project>
    <taskdef resource="checkstyletask.properties"
    classpath="./lib/checkstyle-all-4.3.jar"/>
    <target name="my_check">
    <checkstyle config="config/my_check.xml">
    <fileset dir="src" includes="**/*.java"/>
    </checkstyle>
    </target>
    </project>


    如果checkstyle檢查通過,則會看到"BUILD SUCCESSFUL", 如 圖 5.2 “Ant下Checkstyle檢查正確的結(jié)果” 所示。
    Ant下Checkstyle檢查正確的結(jié)果

    圖 5.2. Ant下Checkstyle檢查正確的結(jié)果

    如果checkstyle檢查到出錯,就會輸出錯誤信息,包括所有檢查到的錯誤。比如,我們把一個方法的長度超過60,方法名大寫,就會看到出錯信息,并且"BUILD FAILED" 如 圖 5.3 “Ant下Checkstyle檢查錯誤的結(jié)果” 所示。
    Ant下Checkstyle檢查錯誤的結(jié)果

    圖 5.3. Ant下Checkstyle檢查錯誤的結(jié)果

    本節(jié)結(jié)束,歡迎您把看明白本節(jié)所用的時間通過Email告訴我。因為我想知道標題中的 "N" 是多少。 :)謝謝。
    5.2. 安裝與配置

    其實本節(jié)內(nèi)容已經(jīng)被包含在了 第 5.1 節(jié) “N分鐘極速入門” 中,就是擁有checkstyle-all-4.3.jar 這個文件,并且在 ant的配置文件中進行task聲明,如:

    <taskdef resource="checkstyletask.properties"
    classpath="./lib/checkstyle-all-4.3.jar"/>


    然后通過<checkstyle/>任務(wù)來運行。
    5.3. 典型例子

    本節(jié)假定使用checkstyle任務(wù)的前提條件都已滿足。

    使用my_check.xml文件,對src目錄下的所有java文件進行檢查:

    <checkstyle config="config/my_check.xml">
    <fileset dir="src" includes="**/*.java"/>
    </checkstyle>


    使用my_check.xml文件,對src目錄下的所有java文件進行檢查,并且把出錯的信息分別寫到兩個文件中:ant_build目錄下的 checkstyle_errors.txt 和checkstyle_errors.xml中:

    <checkstyle config="config/my_check.xml">
    <fileset dir="src" includes="**/*.java"/>
    <formatter type="plain" toFile="ant_build/checkstyle_errors.txt"/>
    <formatter type="xml" toFile="ant_build/checkstyle_errors.xml"/>
    </checkstyle>


    值得一提的是,xml格式的文件里面把錯誤的信息格式弄的很清晰,調(diào)試起來比較方便。如果需要的話可以比較方便的擴展到諸如cruisecontrol里。

    使用定義了package的文件:

    <checkstyle config="config/my_check.xml"
    packageNamesFile="myPackageNames.xml"
    file="src/test/SomeClass.java"/>


    5.4. checkstyle任務(wù)的參數(shù)

    checkstyle任務(wù)的參數(shù)如 表 5.1 “checkstyle任務(wù)屬性表” 所示。

    表 5.1. checkstyle任務(wù)屬性表
    名字 描述 是否必須

    file


    被檢查的文件。


    一個file或者fileset

    config


    Checkstyle的配置文件。配置文件的使用方法見:第 7.1 節(jié) “如何配置檢查”


    config或configURL必具其一

    configURL


    指定了Checkstyle配置文件的URL。用法


    config或configURL必具其一

    properties


    定義了ant使用到的屬性的文件。




    packageNamesFile


    定義了Checkstyle配置文件中檢查的package name的文件。




    failOnViolation


    有violation時是否繼續(xù)檢查,默認是"true"




    failureProperty


    The name of a property to set in the event of a violation.




    maxErrors


    停止build前允許出現(xiàn)的"Error"的最大數(shù)目。默認是"0"




    maxWarnings


    停止build前允許出現(xiàn)的"Warning"的最大數(shù)目。默認是"2147483647",也就是Integer.MAX_VALUE.




    classpath


    類路徑,默認是當前使用的classpath。




    classpathref


    類路徑的引用。



    5.5. 可以嵌套的ant元素

    checkstyle任務(wù)中可以前臺以下元素: <filese>, <classpath>, <formatter> 以及<property>

    formatter元素的屬性如 表 5.2 “formatter元素的屬性” 所示。

    表 5.2. formatter元素的屬性
    名字 描述 是否必須

    type


    結(jié)果的輸出方式,可用的值是:

    plain :使用了 DefaultLogger

    xml : 使用了XMLLogger

    默認是 plain.




    toFile


    輸出到的文件。默認是標準輸出(控制臺)




    useFile


    是否把結(jié)果輸出到文件中。 true或false. 默認是"true"



    第 6 章 在Eclipse中使用Checkstyle

    目錄

    6.1. 下載和安裝
    6.2. 配置方法
    6.3. 使用
    6.4. 常見問題

    6.1. 下載和安裝

    下載在CheckstyleCheckstyle主頁 ,有一個插件列表。 截止到2008-02-26,Eclipse插件的可用的地址是:EclipseCS 和 Checkclipse

    本節(jié)講解的是后者,也就是Checkclipse。

    Checkclipse安裝的方法同其他的Eclipse插件一樣。不清楚的朋友可以看這篇文章:Eclipse基礎(chǔ)--使用links方式安裝Eclipse插件 。links方式 適用于Eclipse3.0, 3.1, 3.2 和 Europa
    6.2. 配置方法

    當Checkclipse成功安裝后,在"window->Preferences"中可以看到checkclipse的選項, 如 圖 6.1 “成功安裝Checkclipse后的Preferences窗口” 所示。
    成功安裝Checkclipse后的Preferences窗口

    圖 6.1. 成功安裝Checkclipse后的Preferences窗口

    Checkclipse有兩個渠道可以進行配置,一個是全局的,一個是單個項目(Project)的。全局的可以在整個Eclipse的workbench中生效, 而單個項目的配置可以在指定的項目中生效,它優(yōu)先于全局的配置。

    對于單個項目:右鍵點某個項目,然后選擇"Properties"就可以看到Checkclipse的窗口。在"Configuration"標簽中,"Enable Checkstyle"一行前面打勾, 然后在"Checkstyle Configuration File:" 一行中選擇你的Checkstyle配置文件就可以了。

    如 圖 6.2 “配置單個項目的Checkclipse” 所示。
    配置單個項目的Checkclipse

    圖 6.2. 配置單個項目的Checkclipse

    對于全局的設(shè)置:"window->preferences"就可以看到。設(shè)置方法跟單個項目的設(shè)置是一樣的。

    經(jīng)過上面的設(shè)置,Checkclipse就可以使用了。如果你想設(shè)置需要被檢查的文件名,那么就在"File Filter"標簽中修改被包含的文件。可以使用"Add","Remove","Change"等按鈕進行編輯。 Included Resources 中顯示了被檢查的文件清單。

    如 圖 6.3 “設(shè)置單個項目的Checkclipse的文件過濾器(file filter)” 所示。
    設(shè)置單個項目的Checkclipse的文件過濾器(file filter)

    圖 6.3. 設(shè)置單個項目的Checkclipse的文件過濾器(file filter)
    [小心] 注意

    除非很有必要,否則不要改FileFilter。使用默認的就滿足95%的情況。

    官方幫助可以在Eclipse的"Help-> HelpeContents" 中的"Checkclipse - Checkstyle Plugin" 中找到。內(nèi)容還是很詳盡的。
    6.3. 使用

    Checkclipse的使用非常簡單,它的每次檢查是跟隨Eclipse的"Build Project"一起進行的。如果有錯誤,會顯示在"Problems"子窗口中。 另外,對于默認的檢查,錯誤是Warning級的,對于設(shè)置了配置文件后的檢查,錯誤都是Error級的。 看一下


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: wwwxxx亚洲| 毛片免费在线观看网站| 亚洲午夜无码久久| 亚洲一区爱区精品无码| 成年女人免费碰碰视频| 日本免费大黄在线观看| 人成电影网在线观看免费| 99麻豆久久久国产精品免费| 亚洲第一极品精品无码久久| 国产一区二区三区在线免费| 18女人毛片水真多免费| 你懂的免费在线观看| 人妻无码中文字幕免费视频蜜桃| 亚洲日韩国产二区无码 | 无码天堂va亚洲va在线va| 亚洲国产成人精品青青草原| 亚洲AV无码一区二区三区DV| 亚洲一区二区三区免费| 国产无遮挡裸体免费视频| 67194成是人免费无码| 黄页网址在线免费观看| 久久精品国产亚洲AV嫖农村妇女 | 一区二区在线视频免费观看| 亚洲国产精品精华液| 亚洲xxxx18| 亚洲一区二区三区在线网站| 亚洲视频在线观看网站| 久久久无码精品亚洲日韩按摩| 久久久久久a亚洲欧洲aⅴ| 亚洲一区二区三区AV无码| 国产亚洲午夜高清国产拍精品| 亚洲Av无码国产情品久久| 日韩精品极品视频在线观看免费| 久久永久免费人妻精品| 四虎精品成人免费视频| 男人扒开添女人下部免费视频| 粉色视频免费入口| 日本高清免费中文在线看| 极品美女一级毛片免费| 亚欧国产一级在线免费| 亚洲欧美不卡高清在线|