Clojure程序的特定软件指标

Mau*_*ijk 14 metrics clojure

我们正在考虑编写静态分析器来收集Clojure代码的软件度量.当然它会处理明显的东西,比如文件数量,函数,每个函数的参数等等.我想知道是否有任何特定于Clojure代码的指标.有任何想法吗?

mik*_*era 13

平均而言 - 我认为软件指标是一个可疑的想法 - 它们通常会分散你真正重要的问题,即"我们向客户提供多少价值?".

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

所以这里有一些可能是Clojure特有的.

  • 顶级定义的数量(可能表示为总符号数的比率?)
  • Java耦合:与Java互操作相关的符号的百分比(new,ClassName.,.someMethod等) - 理想情况下将耦合限制在负责Java互操作的特定模块中,即除了管理互操作的库之外,其他地方都应该是低的.
  • 函数的平均最大嵌套级别定义(我猜5好,10+坏??)
  • 宏密度:需要宏扩展的表单的百分比
  • 带有文档字符串的函数的百分比
  • 使用类型提示定义的符号或函数参数的百分比
  • 匿名函数的平均大小(这些应该很小!)
  • 使用clojure.core中的函数的百分比(给出了一些关于"词汇范围"和代码复杂性的概念)
  • (感谢nickik!)创建的ref-types数量(动态变量,原子,ref和代理) - 如果你想要小心控制你的可变状态,这是必不可少的!

如果你得到这个工作,看到一些不同的开源clojure项目的结果变化真的很有趣!