我想比较两个项目阶段的源代码的变化,例如Web应用程序源代码在可扩展之前,以及可扩展的源代码。
对我来说,有趣的是显示需要更改,删除或添加多少行以从一个到另一个阶段。我正在寻找一个好的距离指标,奖励更少的代码和更少的代码更改 - 我想象的将输出相对值:
0% = "Both projects are the same"
50% = "Half of the source code has been changed"
100% = "Both projects have nothing in common"
我故意想出了一些解决方案:
diff
:也许将所有文件连接到单个源代码文件并对它们运行差异。这里的问题是代码越少越好,但是这个解决方案被视为一个简单的改变,因此惩罚代码删除。a
转换为源代码b
所需的更改。结果是字符发生了许多变化。问题在于,代码删除不会得到奖励而是会受到惩罚。所以我正在搜索一个描述性的指标,奖励代码删除,只计入代码更改或添加。它不必是特定于源代码的,两个项目都使用相同的语言。我的个人感觉是diff
方向,但我没有提出令人满意的描述性指标。
你会建议什么?
答案 0 :(得分:1)
如果你愿意,你可以把它变成一个非常困难的研究问题:
这种方法:http://www.cs.kent.edu/~jmaletic/papers/icsm04.pdf看起来像是在积极开发中:http://www.srcml.org/。
此处列出的其他更通用的代码指标工具http://www.aniche.com.br/wp-content/uploads/2013/04/scam2013.pdf(虽然看起来该论文宣传的工具现在已经关闭)。显然,Sonar能够随着时间的推移查看指标:https://en.wikipedia.org/wiki/SonarQube