[论文解读] MISIM: A Neural Code Semantics Similarity System Using the Context-Aware Semantics Structure
MISIM 是一种神经代码语义相似度系统,通过引入上下文感知语义结构(CASS)从代码语法中提取语义信息,并采用可学习的深度神经网络评分框架实现鲁棒的相似度检测。在 32.8 万个程序上评估,MISIM 的平均精度(MAP@R)比次优系统高出 8.08%,在语义代码相似度任务中达到最先进性能。
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 生成,并经人工编辑审核。