Java代碼度量分析工具:Designite簡介


前言

在Java面向對象課程的學習過程中,我們需要使用度量工具來分析自己程序的代碼結構。此類的度量工具有許多,或以插件形式存在於各個IDE中,或以.jar包的形式供用戶使用。在這里,筆者向大家簡單的介紹一款免費的代碼度量分析工具:Designite,對官網上的部分內容進行漢化搬運,並對一些度量條目做出解釋。

一、Designite的下載與運行

Designite是一款程序設計的質量評估工具。這款工具可以用於分析C#和Java的代碼,並且識別其中存在的質量問題。Designite會檢測程序的架構(architecture),設計(design)和代碼異味(code smell)並且給出詳細的度量分析(metrics analysis)。

Designite官網:http://www.designite-tools.com/

Designite for Java:http://www.designite-tools.com/DesigniteJava/

進入官網,下載會得到一個jar包,默認名為DesigniteJava.jar。將其放在方便使用的位置,打開命令行窗口,輸入以下代碼即可運行:

java -jar DesigniteJava.jar -i <源文件路徑> -o <分析數據輸出路徑>

輸出之后,會得到以下五個文件。

designCodeSmells和implementationCodeSmells中存儲着在設計和執行階段檢測到的代碼異味(code smell)。這標志着你的程序中存在一些設計上的不規范,如過多幻數(Magic Number),模塊之間的循環依賴(Cyclic Dependent)等。

methodMetrics和typeMetrics中存儲着類和方法的一些度量指標(metrics),這些度量指標有助於我們分析程序的整體結構,並且找出問題所在。

二、度量指標介紹

以下內容翻譯自官網,簡單加上了一些個人理解。

  • **LOC **(Lines Of Code – at method and class granularity)

    代碼行數,可以看到你的方法和類寫了多少行。

  • CC (Cyclomatic Complexity – Method)

    圈復雜度,用於衡量一個模塊判定結構的復雜程度,圈復雜度越大說明程序代碼質量低,且難以測試和維護。

  • PC (Parameter Count – Method)

    方法中傳入的參數個數。

  • NOF (Number of Fields – Class)

    類的字段個數。

  • NOPF (Number of Public Fields – Class)

    類的公共(public)型字段個數。

  • **NOM **(Number of Methods – Class)

    類的方法個數。

  • NOPM (Number of Public Methods – Class)

    類的(public)型方法個數。

  • WMC (Weighted Methods per Class – Class)

    類的加權方法個數。具體加權算法怎么算,筆者不太清楚。

  • **NC **(Number of Children – Class)

    類的子類個數。

  • **DIT **(Depth of Inheritance Tree – Class)

    類所在的繼承樹深度。

  • **LCOM **(Lack of Cohesion in Methods – Class)

    方法的內聚缺乏度。值越大,說明類內聚合度越小。

  • FANIN (Fan-in – Class)

    類的扇入。扇入表示調用該模塊的上級模塊的個數,扇入越大,表示該模塊的復用性好。

  • **FANOUT **(Fan-out – Class)

    類的扇出。扇出表示該模塊直接調用的下級模塊的個數,扇出過大表明模塊復雜度高,但扇出過小也不好。

    設計要求一般是高內聚低耦合,即LCOM值要小,FANIN值要大,FANOUT值要合理。


免責聲明!

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



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