欢迎使用CSDN-markdown编辑器

来源:互联网 发布:怎么查淘宝卖家的id 编辑:程序博客网 时间:2024/04/29 22:26

JDepend介绍
本篇翻自JDepend文档,原文链接在此。
摘要
JDepend遍历Java类文件目录和产生每个Java包的设计质量度量.
JDepend 能够自动对设计质量的可扩展性、可重用性和可维护性进行度量,来有效的管理包依赖。

概述
JDepend遍历Java类文件目录和产生每个Java包的设计质量度量,包括:
类和接口的数目Number of Classes and Interfaces:包中具象类与抽象类(接口)的数目作为该包可扩展性的指示器。
传入耦合Afferent Couplings (Ca):依赖该包(包含的类)的外部包(类)的数目,作为该包的责任指数。(注,责任指数越大表示该包越稳定)
传出耦合Efferent Couplings (Ce):被该包依赖的外部包的数目,作为该包的独立性指数。(注:该数值越大,说明该包越不独立(因为依赖了别的包),也越不稳定。)
抽象度Abstractness (A):在被分析包中抽象类(和接口)的数目与类的总体数目的比例。度量值处于0,1之间,若A=0,说明包是一个完全具象的包;若A=1,说明包内全部是抽象类或接口。
不稳定性Instability (I):传出耦合与所有耦合的比例:I=Ce/(Ce+Ca)。对包的对改变的适应性。它的值处于[0,1]之间。I=0时说明包是最稳定的,反之I=1则说明包极不稳定。
Distance from the Main Sequence (D): 一个包与该包理想化程度的距离,它可以用二维直线图 A + I = 1 来表示。度量指示出包的抽象度与稳定度间的平衡关系。
主序列上的包的优化是对它的抽象性和稳定性的平衡。理想化的包是即完全抽象和稳定的(x=0, y=1) 或完全具象和不稳定的(x=1, y=0) 。
度量值处于[0,1]之间,D=0表示一个包与主要序列一直,D=1表示包与主要序列相差太远。
包的循环依赖度Package Dependency Cycles:包的循环依赖度反映了在包依赖环中包的层次路径。

为什么使用JDepend?
blablabla…
Installing JDepend
Building and Testing JDepend

运行JDepend
JDepend提供一个图形化、文本化和XML用户接口来可视化Java包的度量,依赖和环。
Graphical UI
图形用户界面展示了每个分析的Java包的传入和传出耦合的层次树。

使用图形界面运行,命令如下:

java jdepend.swingui.JDepend [-components <components>] <directory> [directory2 [directory 3]...]

Textual UI
文本化用户界面展示每个被分析包的详细度量、依赖和环。为了方便将度量输出到其他应用,摘要部分包含了每个包的以逗号分隔的度量。可选的,XML用户接口可以用来在其他工具中早期集成。

文本界面命令如下:

java jdepend.textui.JDepend [-components <components>] [-file <output file>] <directory> [directory2 [directory 3] ...]

XML UI

XML用户界面展示每个被分析包的详细度量、依赖和环,以XML格式方便在其他工具中集成。
XML UI运行命令如下:

java jdepend.xmlui.JDepend [-components <components>] [-file <output file>] <directory> [directory2 [directory 3] ...]

For example, to analyze all the Java class files in the $JDEPEND_HOME/build directory, use:

java jdepend.xmlui.JDepend $JDEPEND_HOME/build
Alternatively, the XML report can be written to file using:

java jdepend.xmlui.JDepend -file report.xml $JDEPEND_HOME/build

Graphical UI Navigation
。。。。
局限性
JDepend有以下已知的局限性:

环依赖性检测不会报告给定包里所有可接触的循环。一旦检测到任何一个给定循环,检测算法就会停止。若同一个循环可从另一包检测到,这个循环会报告不止一次。你通常很想移除任何循环。

JDepend不收集源码复杂性度量,如果你对收集此类度量感兴趣,推荐JAVANCSS工具给你 JDepend
出产的设计质量度量不完美,它旨在实际运用,测量设计相对可靠,但不能当作所有设计的码尺。
java接口被认为是java抽象类等同,也就是说,虽然在带有抽象的具象中使用接口有设计优势,Jdepend在抽象的计算方面没有区分。同样,除了接口外,不论它们是否像其接口类能在包外引用,实现接口的抽象类被算作抽象类。
JDepend目前不支持包中每个类的Ca和Ce的计算。JDepend直接通过基于包的导入分析来计算Ca和Ce包中传入和传出耦合。该计算方法区别于原本的Ca和Ce,由Robert Martin提出.

0 0