如何从Java源代码中获取依赖性度量标准?

时间:2010-05-03 14:19:02

标签: java analysis metrics

对于作业,我们必须从Hibernate项目中提取一些软件指标。我们必须从Hibernate中每个包的每个版本中提取传入耦合和传出耦合度量(依赖扇入,扇出)。提供了一些能够提取这些指标的工具,例如ckjmJDepend。我检查过的其他工具包括SonarjavancssAOP。还有Metrics Eclipse插件,我也没有这个插件。

据我所知,这些工具的共同之处在于它们都在字节码(* .class文件)上运行。这是一个问题,因为我必须从源代码构建每个修订版本,以便运行JDepend。旧的修订版本不会构建,因为我的开发堆栈太新了。我想做的是对 source 文件进行这种分析,这样我就不必构建每个修订版。这可能吗?或者,为什么所有这些工具只能在字节码上运行?

5 个答案:

答案 0 :(得分:1)

试试这个: http://sourceforge.net/projects/hibernate/files/hibernate3/

您可以在此处下载许多旧版本的Jar文件。

这些工具在字节码上工作的原因通常是因为编写字节码解析器比完整源代码解析器更简单,而且它还允许您覆盖没有源代码的第三方库。

答案 1 :(得分:0)

我们发现cccc能够收集源代码(LOC,McCabe的复杂性,CK和HK)的指标。也许它适用于简单的项目,但在所有Hibernate代码上运行它会导致大量的解析错误。此外,它最终会因分段错误而停止,从而给我们留下了不完整的报告。

最后,我们编写了自己的脚本来处理文件以收集必要的信息。它不防水,因为它实际上并不解析Java,只是寻找某些模式,但它现在已经足够好了。

答案 2 :(得分:0)

您可以尝试JavaDepend的试用版,它足以满足您的需求,它会计算传出耦合,传入耦合和许多其他有用的指标。

答案 3 :(得分:0)

许多工具对类文件字节码进行操作,因为(正如其他答案所指出的那样),编写类文件解析器比实际解析完整的Java要容易得多。

我们的DMS Software Reengineering Toolkit及其Java Front End可以通过1.6解析和命名解析Java。 (它解析1.7,但没有命名解决一些非常黑暗的角落,很快就会实现)。这提供了完整的AST和符号表。 DMS机器将允许您访问/检查AST和符号表。

DMS将同时处理多个源文件,因此您可以使用此数据计算多个文件的指标。

答案 4 :(得分:0)

结帐Sonar。它是一个开源的,独立的Web服务,您可以“提交”您的代码,并生成有关各种代码指标的精美HTML报告。它还保留了构建历史。最重要的是,您不必修改您的构建或poms!

它也有一个maven的目标:sonar:sonarJenkins(以前是Hudson)有一个插件,所以如果你将它用于你的CI,那就完全没有了。

检查出来 - 你不会后悔!