Clojure程序的具体软件度量指标

14

我们正在考虑编写一个静态分析器,用于收集Clojure代码的软件度量。当然,它将处理一些显而易见的内容,比如文件数量、函数数量、每个函数的参数等等。我想知道是否有任何特定于Clojure代码的度量标准。有任何想法吗?

1个回答

13

平均而言,我认为软件度量是一个可疑的想法,它们通常会使你分心,远离真正重要的问题,即“我们向客户提供了多少价值?”

话虽如此,我认识到在某些情况下它们可能是必要的恶,并且偶尔可以为您提供有关代码库的一些有用见解。

因此,以下是一些可能适用于Clojure的指标。

  • 顶级定义数量(可能表示为与总符号数的比率?)
  • Java耦合:与Java交互相关的符号占比(new、ClassName.、.someMethod等)- 理想情况下应将耦合限制在负责Java交互的特定模块中,即除了管理交互的库之外,各处都应该非常低。
  • 函数定义的平均最大嵌套级别(我猜5左右是好的,10+则不好?)
  • 宏密度:需要宏扩展的表单的%
  • 具有文档字符串的函数的%
  • 使用类型提示定义的符号或函数参数的%
  • 匿名函数的平均大小(这些可能应该很小!)
  • 使用的clojure.core函数的%
  • (感谢nickik!)创建的ref类型数量(动态变量、atom、ref和代理)- 如果您想要仔细控制可变状态,这是必不可少的!

p.s.如果您能使这项工作正常运转,看到一些不同的开源Clojure项目中结果的变化将会非常有趣!


我理解反度量衡的情绪。我认为指标只有在需要深入研究问题区域时才有用。顺便说一句,你的回答很好。 - Maurits Rijk
计算引用类型非常重要。在1.3版本中,计算ref/atom/agent和动态变量也很重要。 - nickik
@nickik - 完全同意引用类型非常重要。但是在静态分析器中找到哪个度量标准是棘手的呢?我预见到的问题是,这些通常是动态分配的,因此仅仅计算ref/atom/agent符号并不一定有帮助......无论如何,我已将其添加到列表中。 - mikera
我认为静态地完成它与跟踪实际对象数量一样好。如果您只在一个地方创建原子,则复杂性可能同样受限:即使该函数被调用一千次,它也不会更加复杂。 - amalloy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接