[发明专利]一种源代码特征提取方法及装置有效
申请号: | 202011031611.4 | 申请日: | 2020-09-27 |
公开(公告)号: | CN112162777B | 公开(公告)日: | 2022-11-18 |
发明(设计)人: | 笋大伟;华嘉仪 | 申请(专利权)人: | 北京智联安行科技有限公司 |
主分类号: | G06F8/75 | 分类号: | G06F8/75;G06F11/36 |
代理公司: | 北京德琦知识产权代理有限公司 11018 | 代理人: | 梁少微;王丽琴 |
地址: | 100088 北京市海*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 源代码 特征 提取 方法 装置 | ||
1.一种源代码特征提取方法,该方法包括:
确定源代码文件中的每一个敏感点;
对于每一敏感点,根据每个敏感点的初始敏感变量,追踪所述初始敏感变量的数据流,获取其他敏感变量,得到与每一敏感变量语义相关的代码行集合;
将获取到的各个代码行集合按源代码文件中的顺序排列,得到包含源代码敏感点特征信息的特征代码片段。
2.如权利要求1所述的方法,其特征在于,所述敏感点包括敏感函数调用、数组敏感操作或指针敏感操作;其中,敏感函数包括库函数或者API函数;数组敏感操作包括对数组元素的访问或赋值;指针敏感操作包括对指针的访问或赋值;
当敏感点是敏感函数调用时,初始敏感变量为敏感函数调用的参数;
当敏感点是数组敏感操作时,初始敏感变量为该数组;
当敏感点是指针敏感操作时,初始敏感变量为该指针。
3.如权利要求1所述的方法,其特征在于,在确定源代码文件中的每一个敏感点之前,该方法还包括对源代码文件进行预处理,包括对源代码文件进行规范化和宏定义展开。
4.如权利要求1所述的方法,其特征在于,在将获取到的各个代码行集合按源代码文件中的顺序排列之后,该方法还包括对所述源代码文件进行后处理,获取特征代码片段编号、源代码文件路径、敏感点所在行号。
5.如权利要求1所述的方法,其特征在于,所述确定源代码文件中的每一个敏感点,包括:
将源代码文件生成抽象语法树;
对所述抽象语法树进行解析,记录源代码文件中的每一个敏感点位置,形成敏感点列表;存储用户自定义函数调用的函数名及参数,用户自定义函数的函数名及参数,以及函数间的调用关系。
6.如权利要求1所述的方法,其特征在于,所述对于每一敏感点,根据每个敏感点的初始敏感变量,追踪所述初始敏感变量的数据流,获取其他敏感变量,得到与每一敏感变量语义相关的代码行集合,具体包括:
循环遍历敏感点列表,对于每一个敏感点,获取其初始敏感变量加入到敏感变量列表中,通过解析所述抽象语法树,追踪所述初始敏感变量的数据流,记录与初始敏感变量语义相关的代码行集合;
以所述初始敏感变量为起点迭代追踪其他敏感变量,在追踪所述初始敏感变量的数据流的过程中,
当所述代码行集合中的一代码行中存在第一变量传递到敏感变量时,将所述第一变量作为第一敏感变量加入到敏感变量列表,通过解析所述抽象语法树,追踪所述第一敏感变量的数据流,记录与第一敏感变量语义相关的代码行集合;
或者,根据函数间的调用关系,用户自定义函数调用的函数名及参数,用户自定义函数的函数名及参数,确定第二敏感变量并加入到敏感变量列表,通过解析所述抽象语法树,追踪所述第二敏感变量的数据流,记录与第二敏感变量语义相关的代码行集合。
7.如权利要求6所述的方法,其特征在于,根据函数间的调用关系,用户自定义函数调用的函数名及参数,用户自定义函数的函数名及参数,确定第二敏感变量,具体包括:
根据函数间的调用关系,获取用户自定义函数调用的函数与用户自定义函数相同;
根据相同的用户自定义函数调用的函数的参数为实际参数,且为敏感变量,以及根据相同的用户自定义函数的参数为形式参数,确定所述形式参数与实际参数相对应,为第二敏感变量。
8.如权利要求1所述的方法,其特征在于,当存在函数间的调用关系时,将获取到的各个代码行集合按源代码文件中的顺序排列之后,该方法进一步包括:将代码行按照函数执行顺序进行拼接。
9.一种源代码特征提取装置,该装置包括:
确定模块,确定源代码文件中的每一个敏感点;
解析模块,对于每一敏感点,根据每个敏感点的初始敏感变量,追踪所述初始敏感变量的数据流,获取其他敏感变量,得到与每一敏感变量语义相关的代码行集合;
处理模块,将获取到的各个代码行集合按源代码文件中的顺序排列,得到包含源代码敏感点特征信息的特征代码片段。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京智联安行科技有限公司,未经北京智联安行科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011031611.4/1.html,转载请声明来源钻瓜专利网。
- 上一篇:控制语音助手的方法以及使用该方法的电子装置
- 下一篇:一种隧道挖掘机钻头