【IT168 资讯】 GitHub是一个可以代码共享的平台,因此网站上一定数量的重复代码是可以理解的。然而,最近的研究表明,GitHub上有超过70%的代码都是重复的。本次调查中,Java在原创性上赢了一把,但所有被调查到的语言都有着数量惊人的抄袭项目。
一个由UC Irvines组成的国际研究小组,着手研究了复制过多次的代码发生了哪些变化。随着分析结果的出现,“惊人的”重复率改变了代码的重点。
研究人员分析了4.28多亿个文件,其中有450万个非fork项目是用Java、C ++、Python和JavaScript编写的。其中只有8500万个文件不存在高重复率。总而言之,GitHub上有超过70%的代码,是由之前创建的文件复制组成。
最原始的代码有多少?
有趣的是,编程语言之间有相当大的差异。一些语言拥有数量庞大的粉丝群体,一些则门可罗雀。
根据Lopez等人的说法,数据结果令人大跌眼镜。JavaScript的文件重复率最高,只有6%的文件是原创文件。相比之下C ++和Python起得情况要好一些,分别为23%和28%。其中最突出的是Java,大约拥有60%的原创文件。
以上是他们的代码重复图。Y轴表示每个项目提交的次数; X轴表示项目中文件的数量。每个tile的值是tile中所有项目的重复文件百分比。红色的阴影意味着项目的高重复率。
项目级别分析结果表明,在9%到31%的项目中,至少有80%的文件与其他项目文件重复。
研究人员挖掘了最重要的项目数据;即不做任何更改,批量复制的文件。
* Java - Minecraft-API和PhoneGap;
* C ++ - GNU ISO C ++库,作业模板和Arduino示例;
* Python - Cactus,Shadowsocks,Scons;
* JavaScript - Adobe PhoneGap的Hello World Template7。
Copy泛滥
研究人员非常清楚,对某些在GitHub上寻求“随机抽样”数据集的数据科学家来说,这个调查可谓是一个严重警告。
为了解决Copy的问题,研究小组创建了DéjàVu,一个Copy信息检索和简单的源代码/项目/数据集分析的网络服务,可以用于监测在GitHub上用重复率高的Java、C ++、Python和JavaScript文件。