[发明专利]一种源代码特征提取方法及装置有效
申请号: | 202011031611.4 | 申请日: | 2020-09-27 |
公开(公告)号: | CN112162777B | 公开(公告)日: | 2022-11-18 |
发明(设计)人: | 笋大伟;华嘉仪 | 申请(专利权)人: | 北京智联安行科技有限公司 |
主分类号: | G06F8/75 | 分类号: | G06F8/75;G06F11/36 |
代理公司: | 北京德琦知识产权代理有限公司 11018 | 代理人: | 梁少微;王丽琴 |
地址: | 100088 北京市海*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 源代码 特征 提取 方法 装置 | ||
本发明公开了一种源代码特征提取方法及装置,该方法包括:确定源代码文件中的每一个敏感点;对于每一敏感点,根据每个敏感点的初始敏感变量,追踪所述初始敏感变量的数据流,获取其他敏感变量,得到与每一敏感变量语义相关的代码行集合;将获取到的各个代码行集合按源代码文件中的顺序排列,得到包含源代码敏感点特征信息的特征代码片段。采用本发明能够充分提取与敏感点相关的代码行。
技术领域
本发明涉及软件检测技术领域,特别涉及一种源代码特征提取方法及装置。
背景技术
近年来人工智能技术手段被越来越多的尝试应用于代码缺陷检测领域,如何提取源代码的特征以进行训练和检测成为了应用过程中的一大问题。目前的提取手段大多只包含代码内容属性,代码前后顺序等信息,遗失了许多源码信息。
现有的源代码特征提取方法主要有以下几种:代码浅层特征提取,如提取源代码的文件级特征和函数级特征。其中,源代码文件的文件级特征包括文件大小、文件哈希值和有效代码行数等,函数级特征包括函数大小、函数哈希值和函数代码行数等;序列描述法,如使用系统调用序列、系统消息序列描述特征代码。或将代码理解转换为自动机来描述特征;其他方法,如使用操作码频率分布等信息描述特征,使用系统调用及系统调用间的数据依赖图描述特征,将二进制代码转化为图像,或从二进制代码中提取出控制流图,再将控制流图转化为向量,采用图像、文本处理方法获得特征。
现有技术存在的问题在于:特征包含的信息不充分,或易受干扰。代码浅层特征提取只涉及到文件大小,行数,哈希值等有限的信息,对代码内容和逻辑的特征提取十分有限。序列描述法可以获取代码或行为的先后顺序,但容易受到无关代码行的影响。其他一些方法存在代码上下文信息获取不足等问题。
发明内容
有鉴于此,本发明的发明目的是:能够充分提取与敏感点相关的代码行。
为达到上述目的,本发明的技术方案具体是这样实现的:
本发明提供了一种源代码特征提取方法,该方法包括:确定源代码文件中的每一个敏感点;
对于每一敏感点,根据每个敏感点的初始敏感变量,追踪所述初始敏感变量的数据流,获取其他敏感变量,得到与每一敏感变量语义相关的代码行集合;
将获取到的各个代码行集合按源代码文件中的顺序排列,得到包含源代码敏感点特征信息的特征代码片段。
本发明还提供了一种源代码特征提取装置,该装置包括:
确定模块,确定源代码文件中的每一个敏感点;
解析模块,对于每一敏感点,根据每个敏感点的初始敏感变量,追踪所述初始敏感变量的数据流,获取其他敏感变量,得到与每一敏感变量语义相关的代码行集合;
处理模块,将获取到的各个代码行集合按源代码文件中的顺序排列,得到包含源代码敏感点特征信息的特征代码片段。
由上述的技术方案可见,本发明确定源代码文件中的每一个敏感点;对于每一敏感点,根据每个敏感点的初始敏感变量,追踪所述初始敏感变量的数据流,获取其他敏感变量,得到与每一敏感变量语义相关的代码行集合;将获取到的各个代码行集合按源代码文件中的顺序排列,得到包含源代码敏感点特征信息的特征代码片段。与现有技术相比,本发明以敏感点为切入点,充分提取与敏感点相关的代码行,因此,对代码内容和逻辑的特征提取更加充分,而且由于提取的是与敏感点相关的代码行,所以不会受到无关代码行的影响,而且代码行上下文信息获取也很充分。
附图说明
图1为本发明实施例一提出的一种源代码特征提取方法的流程示意图。
图2为本发明实施例二提出的一种源代码特征提取的方法流程示意图。
图3为本发明实施例简化的抽象语法树示意图。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京智联安行科技有限公司,未经北京智联安行科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011031611.4/2.html,转载请声明来源钻瓜专利网。
- 上一篇:控制语音助手的方法以及使用该方法的电子装置
- 下一篇:一种隧道挖掘机钻头