天天看点

JBoss Tattletale 简介

Tattletale[1]可以帮助你分析你的项目中组件之间的依赖关系。通过扫描你的项目,它可以生成不同的报告,以HTML表单的形式展现出来,让你对你的项目所使用的组件,和项目代码模块之间的相互关系有更加直观的把握。

它可以分析的内容包括:

* Dependants - 被依赖关系

* Depends On - 依赖关系

* Graphical Dependencies - 图形化的依赖关系

* Transitive Dependants - 间接被依赖关系

* Transitive Depends On - 间接依赖关系

* Circular Dependency - 循环依赖

* Class Location - 类的位置

* OSGi

* Sealed information - 封装信息

* Signed information - 签名信息

* Eliminate Jar files with different versions - 项目中引用了同一个jar的不同版本的有关信息

* Invalid version - 无效的版本信息

* Multiple Jar files - 相同的jar文件出现在多处

* Multiple Locations

* Unused Jar - 未使用的jar

* No version - 无版本信息

* Black listed API - 订制黑名单过滤,找出有问题的API

* JAR archive

下面我们来看一下如何使用Tattletale进行些实际的工作。首先是下载Tattletale。下载它是非常方便的,访问这个网址,下载最新的稳定版本:

Bash代码

JBoss Tattletale 简介
JBoss Tattletale 简介
JBoss Tattletale 简介
  1. http://sourceforge.net/projects/jboss/files/JBoss%20Tattletale/
http://sourceforge.net/projects/jboss/files/JBoss%20Tattletale/
      

下载完成后,我们把压缩包解开,可以看到项目目录里面非常干净,只有几个jar以及pdf格式的用户手册和开发手册各一份。实际上这是这个项目的开发者Jesper的一贯风格:干净、简洁。我们在之间的Papaki[2]的介绍中就可以体会到这一点。

闲话少说,我们来玩玩看。现在我们拿TT来分析javassist这个项目试试看。我使用maven下载了一份javaasist的jar,假设它位于:

Bash代码

JBoss Tattletale 简介
JBoss Tattletale 简介
JBoss Tattletale 简介
  1. /javassist/javassist-3.6.0.GA.jar
/javassist/javassist-3.6.0.GA.jar
      

我现在进入TT的解压后的目录,使用这个命令来分析javassist:

Bash代码

JBoss Tattletale 简介
JBoss Tattletale 简介
JBoss Tattletale 简介
  1. java -Xmx512m -jar tattletale.jar /javassist/javassist-3.6.0.GA.jar ./output/
java -Xmx512m -jar tattletale.jar /javassist/javassist-3.6.0.GA.jar ./output/
      

此时TT会开始分析javaassist项目的相关信息,这个过程可能会持续时间比较长,取决于你的机器硬件配置。分析完成后,TT会生成一份分析报告在我们指定的output目录中。我们打开这个分析报告,可以看看TT生成的分析结果:

JBoss Tattletale 简介

可以看到,TT的报告分为三个等级:

* INFO - 信息

* WARNING - 警告

* ERROR - 错误

同时TT的报告有三种颜色:

* 红色

* 黄色

* 绿色

红色代表需要关心,黄色代表警示,绿色代表正常。TT针对不同的报告各自有一套默认的机制,配置了在什么情况下应该显示什么颜色。当然这个默认机制是可以通过配置来进行改变的,详细的配置方法可以通过阅读用户手册获得。

在这里,我们看一看TT生成图形分析报告,通过一个关系图,我们可以看到项目中组件的相互关系:

JBoss Tattletale 简介

现在,我们已经基本上理解了TT的工作机制,通过这个工具,我们不但可以分析项目中组件的相互依赖关系,还可以通过它分析项目引用了哪些库,有哪些库被引用了但未被使用,以及各种项目中可能存在的问题。通过熟练使用Tattletale,它必成为我们日常工作中的利器。

[1] 大家更习惯简称它为TT