JDepend一个开放源代码的可以用来评价Java程序质量的优秀工具,它遍历Java class的文件目录,以Java包(package)为单位,为每一个包/类自动生成 包的依赖程度,稳定性,可靠度等的评价报告,根据这些报告,我们可以得到包或类之间的依赖关系,并分析出包的稳定程度,抽象程度,是否存在循环依耐关系 等。
我们可以根据JDepend给出的报告数据,分析出我们的包是否是可靠的,稳定的,健壮的包,是否符合面向对象的设计原则。
一个具有稳定性,扩展性,可维护性的软件系统要求系统设计遵循面向对象的设计原则。一般来说,面向对象的设计原则要求满足高聚合,低耦合,禁止循环依赖等基本原则。
如果存在包与面向对象的设计原则有抵触,则有必要对这些包加以重新设计或抽象。
JDepend生成的Java包的质量评价报告主要包括:
Number of Classes and Interfaces:实现类与抽象接口的数目
面向的设计原则之一The Stable Abstractions Principle (SAP):稳定抽象等价原则指出了包的稳定程度与它的抽象程度(接口的数目)成正比,也就是说,一个包内包含的接口所占的比重越大,这个包就越稳定。
Abstractness (A):包的抽象度。指一个包内包含的抽象类或接口占整个包中的类的比重。该值处于0,1之间,若A=0,说明包内不包含任何抽象类或接口;若A=1,说明包内全部是抽象类或接口。包的抽象度与稳定性之间的关系上面已经作了说明。
Afferent Couplings (Ca):向心耦合。依赖该包(包含的类)的外部包(类)的数目(i.e. incoming dependencies),该数值越大,说明该包的担当的职责越大,也就越稳定。
Efferent Couplings (Ce):离心耦合。被该包依赖的外部包的数目(i.e. outgoing dependencies),该数值越大,说明该包越不独立(因为依赖了别的包),也越不稳定。
Instability (I):衡量一个包的不稳定程度。I=Ce/(Ce+Ca)。它的值处于[0,1]之间。I=0时说明包是最稳定的,反之I=1则说明包极不稳定。
Distance from the Main Sequence (D): 该指标主要用来评价包的抽象程度与稳定程度的平衡关系,它可以用二维直线图 A + I = 1 来表示。D=abs((A + I) - 1),也就是说D为 一个包的抽象度 + 包的不稳定程度 - 1 的绝对值。一个理想的包是:完全抽象的(A=1),非常稳定的(I=0),这时D=0;或者是:完全具体类构成的包(A=0),非常不稳定的 (I=1),这时同样也有D=0。D=0说明包的抽象程度与稳定程度是平衡的,反之D=1说明包的平衡程度被严重破坏。
Package Dependency Cycles:包的循环依赖度。
面向对象的设计原则之一:The Acyclic Dependencies Principle (ADP) - OO设计的无环依赖原则要求包之间不能有循环依赖关系。
JDepend为我们提供了上述许多高级功能,为我们设计健壮的包/类提供了重要的参考数据,是一个不可多得的优秀工具。
JDepend可以对Java软件包结构质量进行分析,已经有很多文章介绍其基本作用和能够计算的指标了,这里我就不详细总结,感兴趣的朋友可以参看如:http://blog.csdn.net/hantiannan/article/details/4641290 这里的介绍。 我主要总结一下其他文章没有介绍到的部分。首先,JDepend可以计算的指标都出自于这本书:Martin, Robert Cecil
下载安装后,配好PATH: 1.解压后Add JDepend to the classpath: set CLASSPATH=%CLASSPATH%;%JDEPEND_HOME%\lib\jdepend-<version>.jar 2.用ANT build一下这个项目: To build JDepend, use: cd $JDEPEND_HOME ant jar 3.图形模式,使用简单,在CMD
一,什么是JDepend? JDepend,代码包结构分析工具(网友说法)。下面主要介绍一下官方的解释。JDepend一个开放源代码的可以用来评价Java程序质量的优秀工具,它遍历Java Class的文件目录,以Java包(package)为单位,为每一个包或者类自动生成包的依赖程度,稳定性,可靠度等的评价报告,根据这些报告,我们可以得到包或类之间的依赖关系,并分析出包的稳定程度,抽象程
翻译项目请关注Github上的地址:https://github.com/msdx/gradledoc 。 本文翻译所在分支:https://github.com/msdx/gradledoc/tree/2.0 。 在线浏览地址:http://gradledoc.githang.com/2.0/userguide/userguide.html 。 另外,Android 手机用户可通过我写的一个程序
一、PMD是扫描 Java 源码并查找以下潜在问题: 从未用过的局部变量 空捕捉块(catch block) 从未用过的参数 空if声明 重复的导入声明 从未用过的私有方法 孤立的类 短型或长型变量及方法名 加入PMD检查, 以下代码如果在reporting节点中加入则在mvn site中执行,如果在build节点中加入,则在build的时候自动运行检查。详细配置参考pmd插件使用说明 org.a
版本1.2。 现在可以使用JDepend4Eclipse的版本。 该插件是用于在Eclipse中运行JDepend的包装器。 JDepend是一种用于测量Java包的可扩展性,可重用性和可维护性的工具。 它搜索Java类文件目录,并为每个Java包生成度量。 此版本引入了两个修复程序,一个修复程序在JDepend控制台输出作业中,另一个修复程序在Linux上具有JDepend“保存”对话框。 翻译
下载安装后,配好PATH: 1.解压后Add JDepend to the classpath: set CLASSPATH=%CLASSPATH%;%JDEPEND_HOME%\lib\jdepend-<version>.jar 2.用ANT build一下这个项目: To build JDepend, use: cd $JDEPEND_HOME ant jar 3.图形模式,使用简单,在CMD
Jdepend:http://andrei.gmxhome.de/eclipse/ Number of Classes and Interfaces :实现类与抽象接口的数目。 The Stable Abstractions Principle (SAP):稳定抽象等价原则 一个包内包含的接口所占的比重越大,这个包就越稳定。 Abstractness (A) :包的抽象度。 Afferent
本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://github.com/msdx/gradledoc/tree/1.12。 直接浏览双语版的文档请访问: http://gradledoc.qiniudn.com/1.12
JDepend 一个开放源代码的可以用来评价Java程序质量的优秀工具,它遍历Java class的文件目录,以Java包(package)为单位,为每一个包/类自动生成 包的依赖程度,稳定性,可靠度等的评价报告,根据这些报告,我们可以得到包或类之间的依赖关系,并分析出包的稳定程度,抽象程度,是否存在循环依赖关系 等。 我们可以根据JDepend给出的报告数据,分析出我们的包是否是可靠的,稳
maven配置pom文件添加PMD检查,添加checkStyle检查,JDepend等检查功能 加入PMD检查, 以下代码如果在reporting节点中加入则在mvn site中执行,如果在build节点中加入,则在build的时候自动运行检查。详细配置参考pmd插件使用说明 org.apache.maven.plugins maven-pmd-plu
一、PMD是扫描 Java 源码并查找以下潜在问题: 从未用过的局部变量 空捕捉块(catch block) 从未用过的参数 空if声明 重复的导入声明 从未用过的私有方法 孤立的类 短型或长型变量及方法名 加入PMD检查, 以下代码如果在reporting节点中加入则在mvn site中执行,如果在build节点中加入,则在build的时候自动运行检查。详细配置参考pmd插件使用说明 org.a
http://andrei.gmxhome.de/jdepend4eclipse/links.html 此中可以查看到相关的安装信息:部分内容如下: JDepend4Eclipse: direct download links Download for Eclipse 3.2 - 3.4 JDepend4Eclipse binary/sources (1.2.1 version): stable
Liniting是一个检查你代码风格和编码错误的一个过程,对于python中有很多流行的linting工具,我们这里使用Flake8 - 融合了pep8和pyflakes两种linting工具。 首先,在requrements.txt文件中添加flake8依赖包: flake8==3.5.0 同样的,重新构建容器: (tdd3)$ docker-compose -f docker-compose
在这个系列中,Andrew Glover 将重点阐述有关保证代码质量的一些有时看上去有点神秘的东西。
使用耦合度量来支持系统架构 大多数设计良好的软件架构都趋向于支持系统的可扩展性、可维护性和可靠性。遗憾的是,对质量问题的疏忽极可能使软件架构师的努力白费。在追求代码质量 系列的这一期文章中,质量专家 Andrew Glover 解释如何持续地监视并纠正会影响软件架构的长期生存能力的代码质量方面。 上一期文章中,我展示了如何使用代码度量来评估代码质量。尽管在那一期介绍的圈复杂度针对低级细节,如方法中
“一般会考查应聘人员对代码的容错处理能力,对一些特别的输入会询问应聘人员是否考虑、如何处理。不能容忍代码只是针对一种假想的‘正常值’进行处理,不考虑异常状况,也不考虑资源的回收等问题。” ——殷焰(支付宝,高级安全测试工程师) “如果是因为粗心犯错,则可以原谅,因为毕竟面试的时候会紧张;不能容忍的是,该掌握的知识点却没有掌握,而且提醒了还不知道。比如下面的: double d1, d2; … if
本文向大家介绍如何编写高质量JS代码,包括了如何编写高质量JS代码的使用技巧和注意事项,需要的朋友参考一下 想写出高效的javascript类库却无从下手; 尝试阅读别人的类库,却理解得似懂给懂; 打算好好钻研js高级函数,但权威书上的内容太零散, 即使记住“用法”,但到要“用”的时候却没有想“法”。 也许你和我一样,好像有一顾无形的力量约束着我们的计划,让我们一再认为知识面的局限性,致使我们原地
在 Eclipse 中使用 5 个有用的插件来自动化代码质量分析 如果能在构建代码前发现代码中潜在的问题会怎么样呢?很有趣的是,Eclipse 插件中就有这样的工具,比如 JDepend 和 CheckStyle,它们能帮您在软件问题暴露前发现这些问题。在 让开发自动化 的本期文章中,自动化专家 Paul Duvall 将带来一些关于 Eclipse 插件的例子,您可以安装、配置和使用这些静态分析
校验者: @飓风 @小瑶 @FAME @v 翻译者: @小瑶 @片刻 @那伊抹微笑 有 3 种不同的 API 用于评估模型预测的质量: Estimator score method(估计器得分的方法): Estimators(估计器)有一个 score(得分) 方法,为其解决的问题提供了默认的 evaluation criterion (评估标准)。 在这个页面上没有相关讨论,但是在每个 esti
本文向大家介绍如何编写高质量JS代码(续),包括了如何编写高质量JS代码(续)的使用技巧和注意事项,需要的朋友参考一下 继续上一篇文章《如何编写高质量JS代码》今次整理一下javascript函数知识点。 2.使用函数 函数给程序员提供了主要的抽象功能,又提供实现机制。函数可以独立实现其他语言中的多个不同的特性,例如,过程、方法、构造函数,甚至类或模块。 2.1 理解函数调用、方法调用以及构造函数