[发明专利]面向技术特征的源代码对比方法、系统与程序产品有效
| 申请号: | 202210808406.7 | 申请日: | 2022-07-11 |
| 公开(公告)号: | CN114880023B | 公开(公告)日: | 2022-09-30 |
| 发明(设计)人: | 龚斌;宁祥东;孙宇清;万林 | 申请(专利权)人: | 山东大学 |
| 主分类号: | G06F8/75 | 分类号: | G06F8/75;G06F8/41 |
| 代理公司: | 济南竹森知识产权代理事务所(普通合伙) 37270 | 代理人: | 刘宏广 |
| 地址: | 250100 山*** | 国省代码: | 山东;37 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 面向 技术 特征 源代码 对比 方法 系统 程序 产品 | ||
一种面向技术特征的源代码对比方法、系统与程序产品,属于自然语言处理的技术领域。本发明包括:使用了基于函数调用结构的语义编码方法,从函数调用结构、函数名称和内置类等方面分析代码相似性;采用基于图卷积神经网络的自编码器方法进行图语义编码,基于语义向量对比代码结构语义;基于函数和内置类名称的调用信息向量进行函数相似性和内置类的相似性对比;最后将结构向量、函数向量和内置类向量进行拼接作为整体技术特征向量,比对代码相似度。本发明综合考虑了函数名、调用结构和内置类等技术特征信息,能够更好地依据技术特征进行代码对比。
技术领域
本发明公开一种面向技术特征的源代码对比方法、系统与程序产品,属于自然语言处理的技术领域。
背景技术
开源平台为科研人员提供了分享和交流代码的环境,越来越多的深度学习模型和代码在开源平台分享,营造了可复用代码的生态环境,因此,针对特定问题,研究人员有必要查找相关解决方案。现代算法设计思想是模块化构建代码,通常包含大量的基础性功能函数,其函数名、调用结构和内置类等信息提供了重要的代码技术特征。针对相同问题的多种解决方案,例如在文本分类中,可以使用不同的神经网络结构:卷积神经网络、循环神经网络、注意力机制等,其性能也有差异,因此,需要进一步分析代码结构和执行效率等性能问题,并将自己新设计的代码与可复用代码进行对比。
代码的相似度是代码对比分析中的重要指标,目前主流的代码相似性计算方法可以分为三类:基于调用结构、基于静态特征、基于二进制代码的代码相似性计算方法。
基于调用结构的代码相似性计算方法主要是依据代码的逻辑结构来计算代码之间的相似度,逻辑结构一般包括抽象语法树和程序调用图等,例如:公开号为CN110737469A的发明专利公开一种功能粒度上基于语义信息的源代码相似度评估方法,通过计算功能对应的标识符和控制流图的嵌入向量,该方法考虑了控制流图的结构和节点信息,但是该方法没有考虑代码导入的内置类等技术特征的语义信息。
基于静态特征的代码相似性计算方法是通过对源代码抽取一些度量值形成特征向量,然后将代码特征向量之间的相似度作为代码的相似度,例如:公开号为CN111290784A的发明专利公开了适用于大规模样本的程序源代码相似度检测方法,对各待检测样本的文本特征序列和特征权重序列计算局部敏感哈希值,将该值作为样本特征向量,这类方法一般适用于大部分程序代码,但是这类方法一般没有考虑代码技术特征的调用信息和结构语义。
基于二进制的代码相似性计算方法,一般是对二进制代码进行反汇编后得到每个函数的指令序列,然后对指令特征进行向量化,最后通过特征向量来计算代码相似度,例如:公开号为CN113554101A的中国专利公开一种基于深度学习的二进制代码相似度检测方法,使用Structure2Vec来生成二进制函数的控制流图的图嵌入,引入CNN来处理控制流图基本块间的顺序结构信息,从而更好的明确函数内部块间的先后关系,该方法能够很好的适应跨架构和跨版本相似度检测工作,但是没有考虑代码的函数名等技术特征的语义信息。
针对上述问题,本发明方法综合考虑技术特征的语义信息,使用了基于函数调用结构的语义编码方法,从函数调用结构、函数名称和内置类等方面分析代码相似性;采用基于图卷积神经网络的自编码器方法进行图语义编码,基于语义向量对比代码结构语义;基于函数和内置类名称的调用信息向量进行函数相似性和内置类的相似性对比;最后将结构向量、函数向量和内置类向量进行拼接作为整体技术特征向量,比对代码相似度。
发明内容
针对现有技术存在的技术问题,本发明公开一种面向技术特征的源代码对比方法。
本发明还公开实现上述对比方法的系统。
本发明还公开一种加载有上述方法的程序产品。
本发明还公开一种加载有上述方法的计算机可读存储介质。
本发明公开一种利用上述方法的应用方法。
发明概述:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于山东大学,未经山东大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210808406.7/2.html,转载请声明来源钻瓜专利网。





