hengheng123456789

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            297 Posts :: 68 Stories :: 144 Comments :: 0 Trackbacks
          我們在開發Java項目時經常會遇到關于包混亂的問題,特別是在架構更改后,這樣的問題尤為突出,JDepend工具可以幫助你在開發過程中隨時跟蹤每個包的依賴性(引用/被引用),從而設計高維護性的架構,不論是在打包發布還是版本升級都會更加輕松。
          本文引自http://starrynight.blogdriver.com/starrynight/606590.html,并增加了些自己的見解,感謝starrynight

          JDepend是一個開源的工具,并配有Eclipse插件,在實際應用中,JDepend遍歷所有的Java代碼目錄,自動生成每個Package的依賴性度量。對于可擴展性、可重用性和可管理性,JDepend可自動度量一個設計在以上三個方面的質量。

          Eclipse插件的下載地址為:http://andrei.gmxhome.de/eclipse/

          運行方法是右鍵選擇需要分析的包,選擇 Run JDepend Analysis
          Analyzing code using JDepend Analysis

          于是會出現如下分析結果
          Package dependencies for project within Eclipse

          JDepend為每個Package自動生成的依賴性度量指標,包括:

          • Number of Classes (Cc)
          被分析package的具體和抽象類(和接口)的數量,用于衡量package的可擴展性。
          如果一個類中實現了其他類,如實現了監聽類,則監聽類的數目也記錄在此。
          例如:
          ??? private IPartListener partListener = new IPartListener() {
          ??????? public void partActivated(IWorkbenchPart part) {
          ??????????? if (part instanceof IEditorPart)
          ??????????????? editorActivated((IEditorPart) part);
          ??????? }
          ??????? public void partBroughtToTop(IWorkbenchPart part) {
          ??????? }
          ??????? public void partClosed(IWorkbenchPart part) {
          ??????? }
          ??????? public void partDeactivated(IWorkbenchPart part) {
          ??????? }
          ??????? public void partOpened(IWorkbenchPart part) {
          ??????? }
          ??? };
          • Afferent Couplings (Ca)
          依賴于被分析package的其他package的數量,用于衡量pacakge的職責。
          即有多少包調用了它。

          • Efferent Couplings (Ce)
          被分析package的類所依賴的其他package的數量,用于衡量package的獨立性。
          即它調用了多少其他包。
          • Abstractness (A)
          被分析package中的抽象類和接口與所在package所有類數量的比例,取值范圍為0-1。
          • Instability (I)
          I=Ce/(Ce+Ca),用于衡量package的不穩定性,取值范圍為0-1。I=0表示最穩定,I=1表示最不穩定。
          即如果這個類不調用任何其他包,則它是最穩定的。
          • Distance (D)
          被分析package和理想曲線A+I=1的垂直距離,用于衡量package在穩定性和抽象性之間的平衡。理想的package要么完全是抽象類和穩定(x=0,y=1),要么完全是具體類和不穩定(x=1,y=0)。
          取值范圍為0-1,D=0表示完全符合理想標準,D=1表示package最大程度地偏離了理想標準。
          即你的包要么全是接口,不調用任何其他包(完全是抽象類和穩定),要么是具體類,不被任何其他包調用。


          為什么使用JDepend
          • 評價設計質量
          • 翻轉依賴性
          • 支持并行開發和極限編程
          • 獨立的發布模塊
          • 識別package的循環依賴


          安裝JDepend

          安裝JDepend很簡單,只需下載jdepend-.zip并解壓縮,然后把jdepend-.jar加入系統類路徑。


          和Ant集成
          • 設置JDepend報告目錄
          <property name="jdepend.log.dir" value="${tomcat.home}/webapps/cruisecontrol/jdepend" />
          • 定義jdepend task
          <taskdef name="jdepend" classname="org.apache.tools.ant.taskdefs.optional.jdepend.JDependTask">
          ?????? <classpath refid="classpath.lib" />
          </taskdef>
          • 生成jdepend報告
          <target name="jdepend" depends="compile">
          ??? <jdepend format="xml" outputfile="${jdepend.log.dir}/jdepend-report.xml">
          ??????? <exclude name="java.*"/>
          ??????? <exclude name="javax.*"/>
          ??????? <exclude name="org.*"/>
          ??????? <exclude name="junit.*"/>
          ??????? <exclude name="net.*"/>
          ??????? <exclude name="mx4j.*"/>
          ??????? <exclude name="com.anmeng.*"/>
          ??????? <exclude name="testdomain.*"/>
          ??????? <exclude name="thinlet.*"/>
          ??????? <exclude name="**/*Test*"/>
          ??????? <classpath refid="classpath.lib" />
          ??????? <classespath location="${classes.main}" />
          ??? </jdepend>
          ??? <style basedir="${jdepend.log.dir}" destdir="${jdepend.log.dir}"
          ??????????? includes="jdepend-report.xml"
          ??????????? style="${jdepend.log.dir}/jdepend.xsl">
          ??????? <classpath refid="ant.lib" />
          ??? </style>
          </target>

          集成CruiseControl
          CruiseControl的buildresults.jsp文件中加入:
          <cruisecontrol:xsl xslFile="/xsl/jdepend.xsl"/>
          posted on 2007-01-30 10:08 哼哼 閱讀(5324) 評論(2)  編輯  收藏 所屬分類: JAVA-Eclipse

          Feedback

          # re: 提高代碼質量的Eclipse插件之JDepend 2007-01-30 12:43 交口稱贊
          這個是好東西啊,
          呵呵
            回復  更多評論
            

          # re: 提高代碼質量的Eclipse插件之JDepend 2007-01-30 13:34 交口稱贊
          相關工具的eclipse插件下載地址:
          http://www.aygfsteel.com/vip01/archive/2007/01/30/96708.html  回復  更多評論
            

          主站蜘蛛池模板: 旅游| 平湖市| 张家港市| 景泰县| 铜梁县| 社旗县| 奎屯市| 广汉市| 延边| 苍南县| 平顶山市| 吴忠市| 秦安县| 延长县| 博兴县| 邮箱| 胶南市| 印江| 肥西县| 舟曲县| 裕民县| 宝兴县| 修武县| 新丰县| 三穗县| 鄱阳县| 延吉市| 慈溪市| 久治县| 洪江市| 卢龙县| 什邡市| 泰州市| 平邑县| 深水埗区| 丹东市| 栖霞市| 江永县| 平昌县| 小金县| 陕西省|