10.Cycle!:循环依赖
11. Package with cycle:包与包直接有循环调用
12. Depends
upon-efferentdependencies:依赖的包
13. Used by-afferentdependencies:被引用的包

文章插图
图16
Instability:不稳定
Abstractness:抽象性
问题分析

文章插图
图17
针对上图中Cycle!列中有感叹号图标问题,是因为以上三个包中的类有传递依赖,故出现此警告 。
解决办法:
把其中的某个或者某些类再单独抽出新包,解决此问题 。
复杂度监控
metrics(量度)介绍
安装metrics 的Eclipse插件
1.下载地址:
https://sourceforge.net/projects/metrics/

文章插图
图18

文章插图
图19

文章插图
图20

文章插图
图21
2.解压updatesite_1.3.6.zip文件,
net.sourceforge.metrics.updatesite文件夹下有features和plugins分别拷贝到Eclipse的对应目录下 。如:D:geyouchaoeclipse4.2-xuplugins等 。
3.关闭Eclipse,重启 。然后在Eclipse的window》Preferences下就可以看到Metrics Preferences菜单,安装成功,如下图

文章插图
图22
设置metrics参数
下图是metrics提供的配置项,下面对各个配置项进行解释

文章插图
图23

文章插图
lack of cohesion of methods:
介于0-1之间,0表示最有凝聚力,1表示完全没有凝聚力 。
1)如果所有方法都使用所有的实例字段,一个类是完全有凝聚力的
2)静态方法和实例方法计数,它还包括构造函数、属性的getter和setter,所有方法 。
在Since Sonar 4.1中此量度已经被删除 。
3) 子的数量NOC(Number ofchildren)子类在类的层次内,子类可以最直接地从属于一类 。随着子类数量的增大,重用也增加了 。但父类抽象的表示可能减少,即一些子类可能不是父类真正的成员,同时,测试数量(用来检查每个子类在操作前后的要求)也将增加 。
4) 方法中聚合的不足LCOM(Lack ofcohesion in Methods)
一个类内的每种方法访问一个或多个属性(也称实例变量) 。LCOM是访问一个或多个相同属性方法的数量
如果LCOM很大,则说明方法可以通过属性与其他方法耦合,这就增加了类设计的复杂性 。通常,对LCOM值很大的类,可以把它分为两个或多个单独的类,这样每个类能的设计更方便 。
这里讲的耦合和聚合与传统软件中讲的是一样的 。我们希望高聚合和低耦合,即保持低的LCOM.但在某些时候,LCOM很大也是合理的 。
5)每个类的加权方法WMC(Weighted Methodsper Class)
6)Out-of-range:超出范围,溢出
下面是metric的安全范围设置,在此页面中可以设置每项指标的安全范围 。若警告启用,指标值超出我们设置的安全范围就好发出警告 。

文章插图
图24
使用metrics
1.右键单击您的项目并选择 Properties 菜单 。在结果窗口中,选择 EnableMetrics plugin 复选框并单击 OK:

文章插图
图25
2.从 Eclipse 中选择 Window 菜单打开 Metrics 视图,然后选择 Show View | Other... 。
3.选择 Metrics | Metrics View 打开如图 13 中显示的窗口 。您需要使用Java 透视图并重新构建项目,从而显示这些度量值 。

文章插图
图26
注:一定要重新构建项目

文章插图
图27
Java 模拟技术(mock)
Mock是什么
Mock通常是指,在测试一个对象A时,我们构造一些假的对象来模拟与A之间的交互,而这些Mock对象的行为是我们事先设定且符合预期 。通过这些Mock对象来测试A在正常逻辑,异常逻辑或压力情况下工作是否正常 。
引入Mock最大的优势在于:Mock的行为固定,它确保当你访问该Mock的某个方法时总是能够获得一个没有任何逻辑的直接就返回的预期结果 。
推荐阅读
- JAVA-Servlet忘记实现HttpServlet接口处理
- 详解java中float与double的区别
- 身份证开头代码
- 苹果|苹果“最没存在感”新品要来了:新款HomePod现身iOS 16代码
- python的tkinter和pygame自制音乐播放器的代码解析 音乐播放器代码
- 如何解决蓝屏代码0x0000000a呢 0x0000000a 蓝屏
- 空白昵称代码如何复制?
- steam 错误代码-107,steam错误代码-118怎么回事-
- 天气预报代码(简单4行Python代码获取)
- QQ空间密码和权限破解的方法 qq空间代码
