【问题标题】:Open Source Tools to calculate Halstead Complexity metrics for Java file [closed]用于计算 Java 文件 Halstead 复杂度指标的开源工具 [关闭]
【发布时间】:2011-01-28 13:42:07
【问题描述】:

是否有任何开源工具可以计算 Java 源文件的 Halstead 复杂度指标。

【问题讨论】:

  • 我不确定原始论文中定义的 Halstead 指标是否适合 Java。
  • @Gabriel 你这么说有什么具体原因吗?我正在开发一种工具,该工具使用 Halstead、Cycomatic 和其他一些 LoC 指标对“代码”进行一些统计分析。我正在寻找一些命令行实用程序,它们可以为我提供编程语言的 Halstead 和 Cyclomatic 指标。真的,我还没有研究过哪种语言适合哪种语言的细节。任何帮助深表感谢。谢谢。
  • @Salman:Halstead 指标基于运算符和操作数的数量。很难用像 Java 这样的语言来计算它,它不是过程式的,而是面向对象的。以体积度量为例,我想这对你来说很有趣,它基本上说,程序随长度线性增长,随词汇量成对数增长。但是在面向对象的编程中,我想这在很大程度上取决于方法(运算符)是新的东西还是接口的实现或被覆盖的方法。例如。添加新的集合接口与添加新的实现非常不同。
  • @Gabriel:为什么方法调用与过程调用根本不同? Halstead 衡量的是计算的复杂性。它不关心任何特定运算符的内部复杂性是什么(无论是“*”还是“foobar(...)”)。
  • @Gabriel - 在工作中,我们使用使用 LCOM2 的商业工具。我更喜欢使用 LCOM3 或 LCOM4(加上这个工具不必要地标记 POJO。)但是,一般来说,LCOM2 可以将凝聚力引导到正确的方向。我们还结合使用 CBO 和改进的圈复杂度度量,将 n-case switch 语句视为计数“1”(而不是“n”)。

标签: complexity-theory metrics code-metrics


【解决方案1】:

我不知道有任何开源工具可以计算 Java 的 Halstead 指标,但快速浏览一下 Google 代码搜索发现了 Prest。很明显,这个软件有多好我也说不上来,因为我才发现它。

http://www.virtualmachinery.com/sidebar2.htm 上有一个关于 Halstead 指标和 Java 的有趣讨论。

【讨论】:

    【解决方案2】:

    试试这个软件:Halstead Metrics Software for Java

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多