GitHub上82%的代码是重复代码
极客时间编辑部
讲述:丁婵大小:4.23M时长:02:19
近日,加州大学欧文分校、捷克技术大学、微软研究院和美国东北大学的研究人员组成的一个团队开展了一项调查,结果发现,GitHub 上托管的大多数源代码文件实际上是以前所创建的文件的复制版。
团队最初的研究目标是试图定义代码复制的“精细度”,即不同的复制版之间的文件差异,结果发现了“高得惊人的文件重复率”,因而改变了研究方向。
研究人员查看了 450 万个原创(非分支)的 GitHub 项目,这些项目中共有 4.28 亿个不同的文件,其中,只有 8500 万个文件是独特的,在所有的文件中约占 17.63%。
不过,GitHub 的一个使命就是共享代码,所以发现其平台上代码重复率高并不是令人吃惊的事情。
该研究团队只查看了用 C++、Java、JavaScript 和 Python 编写的源代码项目。在这四种项目中,JavaScript 项目所含的重复代码最多,94% 的文件与 GitHub 上托管的另一个文件百分之百相同(基于文件哈希)。
C++ 排名第二,所有文件中 73% 是其他文件的复制版,Python 的代码重用率也有 71%, 而 Java 只有 40%。
研究人员还根据文件内容的部分匹配,即基于令牌哈希,查看了重复文件,但结果几乎一模一样。
该团队表示,JavaScript 包含最多的重用代码示例,主要是由于 NPM,这是所有客户端和服务器端 JavaScript 项目的事实上的软件包管理器,也是如今世界上最大的软件包管理器,它拥有 350000 多个库,其数量比排在第二位的软件包注册中心 Apache-Maven 的代码库数量高出不止一倍。
从研究结果可以看出,如今,越来越多的开发者在使用 GitHub 上唾手可得的大量开源项目,来开展越来越多的研究工作。
此外,该团队指出,代码重复可能使那些软件质量研究的结果产生严重偏斜,那些数据集当中的项目多样性可能会受到影响,而这次研究可以帮助研究人员和开发人员清晰地认识 GitHub 中的代码复制现象,并在必要时避免这个现象。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(1)
- 最新
- 精选
- 再见陛下清晰简洁的代码,逻辑性紧密的框架,多么令人向往
收起评论