如何衡量代码库中的冗余?

Ben*_*iel 2 architecture redundancy software-design entropy

我继承了一个中等大小的代码库,其唯一的编程范例似乎是复制和粘贴.实际上有几十个代码片段可以很容易地参数化并被简单的函数调用取代.代码不是关键任务,因为它只是"测试代码".然而,这使得纳入变革变得很痛苦.

  • 是否存在衡量冗余量的指标(研究中)?
  • 怎么可以计算他们的价值?

想到天真的方法:

  • 了解代码的压缩程度(压缩).
  • 成对diff所有文件并计算相等或相似的行.类似于:只有一个词不同.

小智 7

您正在寻找的是克隆检测,这是一个既定的研究领域,并且有许多工具可用于检测代码中的克隆.

用于量化代码中冗余量的中心度量称为克隆覆盖.它测量属于冗余部分的代码行的百分比.它可以解释为当您更改随机选择的代码段时,更改必须在另一个位置执行的概率.

可以检测克隆并计算克隆覆盖率的工具是例如TeamscaleConQAT.您可以在此处找到代码克隆和克隆检测的介绍.