[发明专利]基于静态程序分析的源代码编码序列表示方法有效
| 申请号: | 201910981926.6 | 申请日: | 2019-10-16 |
| 公开(公告)号: | CN110737466B | 公开(公告)日: | 2021-04-02 |
| 发明(设计)人: | 黄志球;喻垚慎;李伟湋;沈国华;张静;艾磊 | 申请(专利权)人: | 南京航空航天大学 |
| 主分类号: | G06F8/75 | 分类号: | G06F8/75;G06F8/36 |
| 代理公司: | 常州佰业腾飞专利代理事务所(普通合伙) 32231 | 代理人: | 李珍 |
| 地址: | 211106 江苏省南京市江宁区*** | 国省代码: | 江苏;32 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 基于 静态 程序 分析 源代码 编码 序列 表示 方法 | ||
1.一种基于静态程序分析的源代码编码序列表示方法,其特征在于,包括:
获取源代码文本;
对所述源代码文本进行转换,以得到所述源代码文本对应的原始抽象语法树;
对所述原始抽象语法树进行精简;
对精简后的原始抽象语法树进行遍历编码,以得到所述源代码文本的编码序列表示,
在所述源代码文本包含头文件申明行时,对所述源代码文本进行转换,以得到所述源代码文本对应的原始抽象语法树包括:对所述源代码文本进行预处理以删除所述源代码文本的所述头文件申明行;采用源代码分析工具解析并导出所述源代码文本对应的原始抽象语法树,
在所述源代码文本不包含头文件申明行时,对所述源代码文本进行转换,以得到所述源代码文本对应的原始抽象语法树包括:对所述源代码文本采用源代码分析工具解析并导出所述源代码文本对应的原始抽象语法树,
对所述原始抽象语法树进行精简包括:结合所述原始抽象语法树节点类型对所述原始抽象语法树的冗余信息进行删除,
所述精简后的原始抽象语法树包括所述原始抽象语法树的树形结构和节点类型,对精简后的原始抽象语法树进行遍历编码,以得到所述源代码文本的编码序列表示包括:对所述精简后的原始抽象语法树的所有节点类型进行顺序编码,以得到所述所有节点类型的类型编码,该类型编码通过每个节点类型前的三个数字标识替换序列化表示中的类型字段;对所述精简后的原始抽象语法树的所有节点从根节点开始进行前序遍历,以得到所述所有节点的遍历顺序;根据所述遍历顺序对所述精简后的原始抽象语法树的所有节点结构进行编码,以得到所述所有节点结构的结构编码,其中,前节点所在层级与前一节点所在层级的差值构成当前节点的结构编码,其中,通过节点层级差替换序列化表示中的层级字段,通过“+”或“-”表示层级差的正负值,通过三位数字编码表示层级差的绝对值;对所述精简后的原始抽象语法树进行全文编码,并根据所述类型编码和所述结构编码对所述前序遍历的节点进行编码,以得到所述源代码文本的编码序列表示,所述编码序列同时包括所述类型编码和所述结构编码。
2.根据权利要求1所述的基于静态程序分析的源代码编码序列表示方法,其特征在于,所述头文件申明行包括“#include”字符串。
3.根据权利要求2所述的基于静态程序分析的源代码编码序列表示方法,其特征在于,所述源代码文本为C语言文本。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京航空航天大学,未经南京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910981926.6/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种函数调用路径获取的方法和相关装置
- 下一篇:一种业务迁移的方法和设备





