中文

SLACC:基于仿真的语言无关代码克隆检测

软件工程 2020-02-11 v1

摘要

成功的跨语言克隆检测可使研究人员与开发者创建健壮的语言迁移工具,促进在掌握一门编程语言后学习其他语言,并推动在更广阔代码库上复用代码片段。然而,识别跨语言克隆为克隆检测问题带来特殊挑战。任意语言间缺乏通用底层表示意味着检测克隆需要以下方案之一:1)跨每种目标语言复制并带跨语言特征标注的静态分析框架,或 2)基于运行时行为检测克隆的动态分析框架。本工作中,我们证明了后一种方案的可行性,即一种称为 SLACC 的用于跨语言克隆检测的动态分析方法。与先前的克隆检测技术类似,我们利用输入/输出行为匹配克隆,但通过扩增输入数量并覆盖更多数据类型克服了先前工作的局限;因此获得了优于先前尝试的聚类效果。由于聚类基于输入/输出行为生成,SLACC 支持跨语言克隆检测。作为额外挑战,我们以静态类型语言 Java 与动态类型语言 Python 为对象。与近期 Java 克隆检测工具 HitoshiIO 相比,SLACC 检索到的聚类数量为其 6 倍且精度更高(86.7% 对 30.7%)。这是首个针对动态类型语言进行克隆检测的工作(精度 = 87.3%),也是首个对缺乏通用底层表示的语言间进行克隆检测的工作(精度 = 94.1%)。它为可扩展语言迁移工具这一更大目标提供了第一步。

关键词

引用

@article{arxiv.2002.03039,
  title  = {SLACC: Simion-based Language Agnostic Code Clones},
  author = {George Mathew and Chris Parnin and Kathryn T Stolee},
  journal= {arXiv preprint arXiv:2002.03039},
  year   = {2020}
}

备注

11 Pages, 3 Figures, Accepted at ICSE 2020 technical track