背景背景:
过去,我大量应用了各种“代码质量指标”来静态分析代码,以了解代码的“可维护性”,并使用此处提到的可维护性指数等内容。
但是,我面临的一个问题是,一种语言是否具有有效测量此类指标的库 - 只有这样它才能使用,否则它是相当主观/任意的。鉴于在企业系统中必须处理的语言过多,这可能会变得相当笨拙。
提议的想法:
构建和训练一个“提取代码文件夹”的人工神经网络(即,假设该文件夹/包中的所有文件都包含我们想要计算其质量指标的“项目”)。这可能再次取决于语言,但让我们假设它存在于我最难使用的语言(用于衡量“可维护性”):Scala。
McCabe's complexity
使用类似或可能是“约定”的数字指标,Cyclomatic complexity
但并不完全相关。无论语言如何,类/方法长度之类的东西几乎总是相关的。因此,通过主观评估提供一些“数字度量”+抽象的可读性概念来训练人工神经网络将是人工神经网络“输入”的良好平衡。输出要么是可维护性的分类low, medium, high
等,要么是介于0 and 1
.
问题:
是否已尝试过,是否有任何参考资料?我花了一些时间通过 Google Scholar 进行挖掘,但没有发现任何“可用”或有价值的东西。如果它不是 Scala 也没关系,但是 ANN 是否被用于测量代码质量(即静态分析),这样的好处或坏处是什么?
PS:希望这个问题不会太宽泛,但如果是这样,请在评论中告诉我,我会尽可能具体。