基于图孪生网络建模源代码中的功能相似性
软件工程
2020-11-26 v2
摘要
代码克隆是共享(近乎)相似语法或语义的重复代码片段。代码克隆检测在软件维护、代码重构和复用中起着重要作用。过去已进行了大量研究来检测克隆。这些方法中大多数使用词法和语法信息来检测克隆。然而,仅少数针对语义克隆。近来,受深度学习模型在自然语言处理和计算机视觉等其他领域成功的推动,研究者尝试采用深度学习技术检测代码克隆。这些方法使用词法信息(令牌)和(或)抽象语法树(AST)等语法结构来检测代码克隆。但它们未充分利用可用的结构和语义信息,从而限制了能力。本文利用程序依赖图和几何神经网络解决语义代码克隆检测问题,以借助结构化的语法和语义信息。我们基于新方案开发了原型工具 HOLMES,并在流行的代码克隆基准上进行了实证评估。结果表明 HOLMES 明显优于另一 SOTA(最先进)工具 TBCCD。我们还在未见项目上评估 HOLMES 并进行了跨数据集实验以评估其泛化性。结果证实 HOLMES 优于 TBCCD,因为 HOLMES 检测出的大多数代码对要么未被 TBCCD 检出,要么被其次优报告。
引用
@article{arxiv.2011.11228,
title = {Modeling Functional Similarity in Source Code with Graph-Based Siamese Networks},
author = {Nikita Mehrotra and Navdha Agarwal and Piyush Gupta and Saket Anand and David Lo and Rahul Purandare},
journal= {arXiv preprint arXiv:2011.11228},
year = {2020}
}
备注
Under Review IEEE Transactions on Software Engineering