中文

GitHub上的Jupyter笔记本:特征与代码克隆

软件工程 2021-03-02 v2 编程语言

摘要

Jupyter笔记本已成为数据科学编程的标准工具。Jupyter笔记本中的程序不同于典型程序,它们由代码片段集合与文本和可视化交错构成。这允许交互式探索,且代码片段可能以不同顺序执行,并因片段间副作用而产生不同结果。先前研究已表明,在传统程序的源代码中——包括所谓的系统编程语言与所谓的脚本语言——存在大量的代码重复,即代码克隆。本文首次呈现针对Jupyter笔记本中代码克隆的大规模研究。我们分析托管于GitHub的270万份Jupyter笔记本语料,代表3700万个独立片段与2.27亿行代码。我们在独立片段层面研究克隆,并考察片段在多个笔记本间复现的程度。我们研究完全相同的克隆与近似克隆,并对最常见克隆进行小规模人工检视。我们发现代码克隆在Jupyter笔记本中十分普遍——超过70%的代码片段是其他片段的精确复制(可能仅空白存在差异),约50%的笔记本不含任何独特片段,而仅由他处亦出现的片段组成。在Python编写的笔记本中,至少80%的片段为近似克隆,且代码克隆的普遍程度在Python中高于其他语言。我们进一步发现,不同仓库间的克隆远多于同仓库内的克隆。然而,Jupyter笔记本所含克隆最常见的单一仓库,是其自身所在的仓库。

关键词

引用

@article{arxiv.2007.10146,
  title  = {Jupyter Notebooks on GitHub: Characteristics and Code Clones},
  author = {Malin Källén and Tobias Wrigstad},
  journal= {arXiv preprint arXiv:2007.10146},
  year   = {2021}
}