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

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

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

    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 哼哼 閱讀(5304) 評論(2)  編輯  收藏 所屬分類: JAVA-Eclipse

    Feedback

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

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

    主站蜘蛛池模板: 丝瓜app免费下载网址进入ios| 亚洲国产高清美女在线观看| 亚洲XX00视频| 亚洲午夜AV无码专区在线播放 | 亚洲人成网站免费播放| 天天干在线免费视频| 在线A级毛片无码免费真人| 国产成+人+综合+亚洲专| 亚洲av无码专区青青草原| 国产AV无码专区亚洲AV琪琪| 97无码人妻福利免费公开在线视频| 毛片免费vip会员在线看| 中文字幕亚洲日韩无线码| 亚洲成a人片在线网站| 免费看男女下面日出水来| 又粗又硬免费毛片| 亚洲视频2020| 国产精品亚洲精品日韩动图| 亚洲高清偷拍一区二区三区| 久久精品免费网站网| 成年女人午夜毛片免费视频| 亚洲国产aⅴ成人精品无吗| 久久国产乱子伦精品免费一| 蜜臀91精品国产免费观看| 中文字幕亚洲第一在线| 一个人看的www免费高清| 免费人成在线视频| 综合自拍亚洲综合图不卡区| 可以免费看黄的网站| 亚洲黄色免费观看| 狠狠久久永久免费观看| 日韩毛片在线免费观看| 国产乱弄免费视频| 中文日韩亚洲欧美制服| 秋霞人成在线观看免费视频 | 国产亚洲福利在线视频| 亚洲国产高清精品线久久| 国产激情免费视频在线观看 | 免费A级毛片无码A∨中文字幕下载| 午夜亚洲福利在线老司机| 亚洲男同gay片|