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

How to measure redundancy in code bases?

我继承了一个中等规模的代码库,其唯一的编程范例似乎是复制和粘贴。实际上有几十个代码片段可以很容易地参数化并用一个简单的函数调用替换。该代码不是关键任务,因为它是 "only" 测试代码。然而,这使得合并更改变得很痛苦。

想到的朴素方法:

您正在寻找的是克隆检测,这是一个成熟的研究领域,有许多工具可用于检测您代码中的克隆。

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

可以检测克隆并计算克隆覆盖率的工具有,例如Teamscale and ConQAT. You find an introduction to code clones and clone detection here