近日,新版的开源代码质量管理工具 Sonar 提供了设计与架构度量。Sonar 2.0 引入了针对 Java 应用的设计分析、架构与面向对象的度量,而前不久发布的 Sonar 2.1 可以检测到未使用的方法以及对不建议使用方法的调用。
架构度量特性包含一个叫做 Dependency Structure Matrix( DSM )的全新可视化工具,它可以表示组件之间的依赖并在其中导航,能够通过去掉不必要的依赖来移除包间的循环,还能识别出拥有太多职责的类(这违背了单一职责模式)。面向对象度量包含了 Chidamber & Kemerer 度量,比如 Depth of Inheritance Tree(DIT)、Number of Childre(NOC)、Response for a Class(RFC)、Afferent/Efferent Couplings(CA/CE)以及 Lack of cohesion in methods(LCOM)。最新版的 Sonar 还基于 Squid 引入了一个全新的规则引擎、Sonar 解析器既可以处理源代码,也可以处理字节码,解析器带有内建的规则,可以检测未使用的私有与保护方法以及客户端对不建议使用的方法的调用。Squid 通过分析应用源代码、Java API 和外部程序库的字节码来决定哪些方法、类和属性是不建议使用的。Sonar 2.1 的新特性还有:
- 一个全新的“ Libraries ”页面,显示了项目中所有的程序库和依赖,该特性要求使用 Maven 来构建项目。一旦在 Sonar 站点的主页上选择了一个项目,该服务就会以可视化的树形结构展示出项目依赖。此外,还有一个可选的动态过滤器,可以根据名称过滤程序库以便在应用的依赖间导航。
- 用于搜索程序库使用情况的“Dependencies”页面。比如说,可以搜索到使用了第三方框架如 Commons Logging 1.1 的所有项目。
- 可以使用各种插件扩展 Sonar 的功能。现在有一个全新的“System Info”页面显示了系统属性、已装插件和 Java 虚拟机内存统计信息。该页面还给出了关于 Sonar 配置和数据库统计的详细信息。
- 一个用于管理已装插件和系统信息的管理控制台。
最新版的 Sonar 为这些插件引入了一个测试框架和一个客户化的 Maven 生命周期管理工具。它还带有一个用于集成项目事件的 Web Service 并在项目的 size widget 中增加了一个新的度量模块。
Sonar 团队的 Freddy Mallet 撰写了一篇文章,谈到了如何使用新版的 Sonar管理包间的循环以及如何在类层次上重新设计。Sonar 开发团队正忙于开发一个Eclipse IDE插件并于上个月发布了0.1 版。感兴趣的读者朋友可以看看 Project Nemo ,这是 Sonar 的一个在线版本,它给出了很多开源项目的代码分析统计结果,这些项目有 Apache Commons frameworks、Apache Tomcat、Struts2 和 Esper 等等。
查看英文原文: Code Quality Management Tool Sonar Provides Design and Architecture Metrics
评论