• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    代碼檢測:Code Review與CheckStyle

    發布: 2007-11-01 18:16 | 作者: 網絡轉載 | 來源: 網絡轉載 | 查看: 202次 | 進入軟件測試論壇討論

    領測軟件測試網



      在ANT的build.xml文件中添加CheckStyle任務的步驟如下:

      1. 將checkstyle-all-3.1.jar拷貝到項目的LIB目錄;

      2. 建立配置文件;

      3. 聲明CheckStyle任務:

    <taskdef resource="checkstyletask.properties" classpath="${lib}/checkstyle-all-3.1.jar"/>

      4. 建立CheckStyle任務:

    <target name="checkstyle">
    <checkstyle config="${config}/sun_checks.xml">
    <fileset dir="${src}" includes=" **/*.java" />
    </checkstyle>
    </target>

      2.4. 定制CheckStyle

      CheckStyle的執行基于XML配置文件,它的主要組成部分是:

      ·Module:整個配置文件就是一棵Module樹。根節點是Checker Module。

      ·Properties:它來決定一個Module如何進行檢查。每個Module都有一個默認值,如果不滿足開發需求,可以設定其它的值。

      下面是一個示例:

    <module name="MethodLength">
    <property name="max" value="60"/>
    </module>

      它表示,如果方法或者構造函數的長度超過60行,CheckStyle就會報錯。而默認值是150行。

      以下是一段CheckStyle對于Maven項目源文件的檢查報告:

    Method 'createExpression' is not designed for extension - needs to be abstract, final or empty. 91
    Unable to get class information for JellyException. 91
    Line has trailing spaces. 93
    Line has trailing spaces. 104
    Method 'evaluate' is not designed for extension - needs to be abstract, final or empty. 113
    Parameter context should be final. 113
    Line has trailing spaces. 130
    Method 'getExpressionText' is not designed for extension - needs to be abstract, final or empty. 131
    Line has trailing spaces. 134
    Line has trailing spaces. 135
    Method 'toString' is not designed for extension - needs to be abstract, final or empty. 137
    Method 'isSupportAntVariables' is not designed for extension - needs to be abstract, final or empty. 156
    Method 'setSupportAntVariables' is not designed for extension - needs to be abstract, final or empty. 168
    Parameter supportAntVariables should be final. 168
    'supportAntVariables' hides a field. 168
    Method 'isValidAntVariableName' is not designed for extension - needs to be abstract, final or empty. 183
    Parameter text should be final. 183


      一般情況下,與IDE集成在一起使用的時候,點擊出錯的條目,可以跳轉到相應的代碼。

     三、CheckStyle的最佳實踐

      3.1. Sun’s Code Conventions的修改

      在CheckStyle的最新發布版本中,有一個對于Sun的Java編碼規范的配置文件信息。但是,其中有很多條目并不一定符合項目開發的需要。就算是對于很多優秀的開源項目,按照這個規范來進行檢查,也會出現成千上萬的錯誤。

      下面提出的一些修改意見,是從實際項目執行過程中總結出來的,可以作為大家的參考。我們以CheckStyle3.0配置文件的順序來介紹:

      1. 去除對于每個包都有一個package.html文件的限制;

    <!--<module name="PackageHtml"/>-->
      
      2. 修改對于JavaDoc Comments的限定:對于很多使用Code Generator的項目來說,需要將手寫代碼與生成代碼、單元測試代碼的檢查分開進行;

      3. 修改對于體積大小的限制:目前,很多顯示器都是17寸,而且打印方面的限制也比以前有所改善,同時,由于代碼中Factory等模式的運用,以及有意義的方法名稱等約定,默認每行代碼的長度(80)是遠遠不能滿足要求;對于方法長度等等,也應該根據項目情況自行決定:

    <module name="FileLength"/>
    <module name="LineLength">
    <property name="max" value="120"/>
    </module>
    <module name="MethodLength">
    <property name="max" value="300"/>
    </module>
    <module name="ParameterNumber"/>

      4. 修改對于Throws的的限制:允許Throws Unchecked Exception以及Throws Subclass Of Another Declared Exception。

    <module name="RedundantThrows">
    <property name="allowUnchecked" value="true"/>
    <property name="allowSubclasses" value="true"/>
    </module>

      5. 修改成員變量的可視性:一般情況下,應該允許Protected Members以及Package Visible Members。

    <module name="VisibilityModifier">
    <property name="protectedAllowed" value="true"/>
    <property name="packageAllowed" value="true"/>
    </module>

      3.2. CheckStyle應用的最佳實踐

      采用CheckStyle以后,編碼規范的檢查就變得及其簡單,可以作為一項切實可行的實踐加以執行。

      一般情況下,在項目小組中引入CheckStyle可以按照下面的步驟進行:

      1. 強調Code Review與Code Conventions的重要作用;

      2. 介紹CheckStyle;

      3. 初步應用CheckStyle:參照CheckStyle附帶的配置文件,酌情加以剪裁,在項目的Ant配置文件中,添加CheckStyle任務,可以單獨執行;

      4. 修改、定型CheckStyle的配置文件:按照基本配置文件執行一段時間(2~3周),聽取開發人員的反饋意見,修改配置信息;

      5. 作為開發過程的日常實踐,強制執行CheckStyle:穩定CheckStyle的配置信息,同時將CheckStyle任務作為Build的依賴任務或者配置源碼控制系統(目前,CheckStyle可以與CVS有效集成),使得代碼在加入系統之前必須通過檢查。

      同時需要指出的是,CheckStyle的有效執行需要依賴兩個條件:

      ·Ant的廣泛應用:CheckStyle基于Ant執行的方式比較容易,而且可以在項目內容形成一致的執行環境。同時,也比較容易與其它任務,例如Build等發生關聯。

      ·IDE Format Code的強大功能:由于CheckStyle本身并沒有提供很強大的Code Format等功能,因此,需要借助IDE的幫助,從而使得在發生錯誤的時候,可以很容易的進行修復。目前,主流的Java IDE都提供了這方面的功能,IDEA在這方面尤其突出。它提供的統一、可定義的Code Format Template(項目小組內部可以使用統一模板)以及方便的快捷鍵功能(Ctrl+Alt+T:Format Code, Ctrl+Alt+O:Optimize Import等)。

      四、結論

      利用CheckStyle可以方便的對于編碼的Code Conventions進行檢查,同時,也有效地減少了Code Review的工作,使得Reviw人員的精力更多的集中到邏輯和性能檢查

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    22/2<12

    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>