Skip to main content
QUICK REVIEW

[论文解读] MISIM: A Neural Code Semantics Similarity System Using the Context-Aware Semantics Structure

Fangke Ye, Shengtian Zhou|arXiv (Cornell University)|Jun 5, 2020
Topic Modeling参考文献 56被引用 5
一句话总结

MISIM 是一种神经代码语义相似度系统,通过引入上下文感知语义结构(CASS)从代码语法中提取语义信息,并采用可学习的深度神经网络评分框架实现鲁棒的相似度检测。在 32.8 万个程序上评估,MISIM 的平均精度(MAP@R)比次优系统高出 8.08%,在语义代码相似度任务中达到最先进性能。

ABSTRACT

Code semantics similarity can be used for many tasks such as code recommendation, automated software defect correction, and clone detection. Yet, the accuracy of such systems has not yet reached a level of general purpose reliability. To help address this, we present Machine Inferred Code Similarity (MISIM), a neural code semantics similarity system consisting of two core components: (i)MISIM uses a novel context-aware semantics structure, which was purpose-built to lift semantics from code syntax; (ii)MISIM uses an extensible neural code similarity scoring algorithm, which can be used for various neural network architectures with learned parameters. We compare MISIM to four state-of-the-art systems, including two additional hand-customized models, over 328K programs consisting of over 18 million lines of code. Our experiments show that MISIM has 8.08% better accuracy (using MAP@R) compared to the next best performing system.

研究动机与目标

  • 为解决机器编程中缺乏可靠、通用的代码语义相似度系统的问题。
  • 通过设计更具语义表达力和可扩展性的表示方法,克服现有结构化表示(如 AST、XFG 和 SPT)的局限性。
  • 开发一种可泛化至多种深度学习架构的神经评分框架,从代码中学习有意义的语义相似度。
  • 通过高精度的语义相似度支持代码推荐、克隆检测和自动化错误修复等实际应用。
  • 减少对语法模式的依赖,同时提升对语法变异的鲁棒性,同时保持功能等价性。

提出的方法

  • MISIM 引入上下文感知语义结构(CASS),一种可配置的、与语言无关的表示方法,通过抽象化语法噪声并保留控制流/数据流语义,从代码语法中提取语义信息。
  • CASS 支持多种抽象层级,包括节点前缀标签、复合语句抽象、全局变量与函数处理,以及输入/输出基数建模。
  • 系统采用可学习的深度神经网络(DNN)评分框架,支持三种 DNN 拓扑结构:词袋模型、序列模型和图神经网络模型,且在不同架构间共享参数。
  • DNN 在标注为语义等价的代码对上进行端到端训练,使用对比损失函数,促使相似代码的嵌入向量靠近,不相似代码的嵌入向量远离。
  • CASS 设计具有可扩展性,支持语言特定与语言无关的适配,同时支持静态与动态语义抽象。
  • 系统通过一个学习得到的评分函数,结合从 CASS 表示中提取的结构与语义特征来评估相似度。

实验结果

研究问题

  • RQ1如何设计一种代码表示方法,以有效从语法结构中提取语义信息,同时保持在多种编程语言间的可扩展性?
  • RQ2与传统表示(如 AST 或 SPT)相比,上下文感知语义结构(CASS)在多大程度上提升了语义相似度检测性能?
  • RQ3统一的、可学习的神经评分框架是否能泛化至不同 DNN 架构,并在代码相似度任务中实现更优性能?
  • RQ4CASS 中何种抽象粒度层次能在复合语句、全局变量和函数 I/O 等不同代码结构上实现最优性能?
  • RQ5包含输入/输出基数信息如何影响系统捕捉功能语义的能力?

主要发现

  • 在包含 32.8 万个程序和 1800 万行代码的基准测试中,MISIM 的平均平均精度(MAP@R)比次优系统高出 8.08%。
  • 上下文感知语义结构(CASS)显著优于传统表示(如 AST 和 SPT),通过减少语法噪声并保留语义关系提升了性能。
  • CASS 的最优抽象层级因代码结构而异:复合语句采用最粗粒度,节点标签与全局变量采用中等粒度,函数 I/O 基数采用更细粒度。
  • 建模输入与输出基数可提升平均性能,表明函数接口特征是语义相似度的强指标。
  • 学习得到的 DNN 评分框架在词袋、序列和图神经网络架构间均表现出有效泛化能力,展现出鲁棒性与适应性。
  • 由于其高精度与可扩展性,该系统在 IDE、代码推荐和自动化错误修复等实际工具中具有强大的集成潜力。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。