Java静态检测工具的简单介绍(3)

发表于:2015-03-26来源:uml.org.cn作者:yeyongna点击数: 标签:
Sonar 2.1的新特性: 1)一个全新的Libraries页面,显示了项目中所有的程序库和依赖,该特性要求使用Maven来构建项目。一旦在Sonar站点的主页上选择了一个项

  Sonar 2.1的新特性:

  1)一个全新的“Libraries”页面,显示了项目中所有的程序库和依赖,该特性要求使用Maven来构建项目。一旦在Sonar站点的主页上选择了一个项目,该服务就会以可视化的树形结构展示出项目依赖。此外,还有一个可选的动态过滤器,可以根据名称过滤程序库以便在应用的依赖间导航。

  2)用于搜索程序库使用情况的“Dependencies”页面。比如说,可以搜索到使用了第三方框架如Commons Logging 1.1的所有项目。

  3)可以使用各种插件扩展Sonar的功能。现在有一个全新的“System Info”页面显示了系统属性、已装插件和Java虚拟机内存统计信息。该页面还给出了关于Sonar配置和数据库统计的详细信息。

  4)一个用于管理已装插件和系统信息的管理控制台。最新版的Sonar为这些插件引入了一个测试框架和一个客户化的Maven生命周期管理工具。它还带有一个用于集成项目事件的Web Service并在项目的size widget中增加了一个新的度量模块。

  JDepend

  1.JDepend一个开放源代码的可以用来评价Java程序质量的优秀工具,它遍历Java class的文件目录,以Java包(package)为单位,为每一个包/类自动生成 包的依赖程度,稳定性,可靠度等的评价报告,根据这些报告,我们可以得到包或类之间的依赖关系,并分析出包的稳定程度,抽象程度,是否存在循环依耐关系等 。可以根据JDepend给出的报告数据,分析出我们的包是否是可靠的,稳定的,健壮的包,是否符合面向对象的设计原则。

  2.特点:

  1)评价设计质量

  2)翻转依赖性

  3)支持并行开发和极限编程

  4)独立的发布模块

  5)识别package的循环依赖

  3.Depend生成的Java包的质量评价报告主要包括:

  1)Number of Classes and Interfaces:实现类与抽象接口的数目

  2)Abstractness (A):包的抽象度。指一个包内包含的抽象类或接口占整个包中的类的比重。

  3)Afferent Couplings (Ca):向心耦合。依赖该包(包含的类)的外部包(类)的数目(i.e. incoming dependencies),该数值越大,说明该包的担当的职责越大,也就越稳定。

  4)Efferent Couplings (Ce):离心耦合。被该包依赖的外部包的数目(i.e. outgoing dependencies),该数值越大, 说明该包越不独立(因为依赖了别的包),也越不稳定。

  5)Instability (I):衡量一个包的不稳定程度。I=Ce/(Ce+Ca)。它的值处于[0,1]之间。I=0时说明包是最稳定的,反之I=1则说明包极不稳定。

  6)Distance from the Main Sequence (D): 该指标主要用来评价包的抽象程度与稳定程度的平衡关系,它可以用二维直线图 A + I = 1 来表示。

  7)Package Dependency Cycles:包的循环依赖度。

  8. IBM Checking Tool for Bugs Errors and Mistakes(简称BEAM)

  1. 定义:是 IBM 开发的一个静态分析工具,可以用于分析并查找出 C, C++ 和 Java代码中的一些不容易发现的潜在错误,从而达到提高代码质量的目的。同动态分析工具和其它静态分析工具相比,它拥有一些可贵的特性。

  2.特点:

  1)对代码进行语法扫描,通过算法对代码进行检查分析

  2)和一些 bug 模式进行比较,最终标明问题区域,输出分析结果

  3)使用了额外的定理证明(theorem proving)技术来判断一个潜在的错误是否是真正的错误,从而减轻了程序员判断错误真伪所需的工作量

  9. LDRA Testbed

  1.定义:LDRA Testbed为应用软件的确认和验证提供强大的源代码测试和分析功能,是独特的质量控制工具。 它有助于提高计算机软件必需的可靠性,健壮性和尽可能的零缺陷,它的使用带来时间、成本和效率上真实的节省,这些都是无法衡量其价值的。它是强大和完整的集成工具包,使先进的软件分析技术应用在开发生命周期的关键阶段。

  2.LDRA Testbed提供强大的分析功能,用于两个主要的测试领域,静态分析和动态分析。

  1)静态分析: 分析代码,并且提供对代码结构的理解。

  2)动态分析: 利用源代码的插装版本,使用测试数据执行,在运行时发现软件

  缺陷

  3) 使用LDRA testbed 的好处

  软件开发和测试过程的成本效率分析工具

  单元、集成和系统测试的理想工具

  贯穿于软件开发的整个生命周期

原文转自:http://www.uml.org.cn/Test/201208245.asp