[发明专利]基于静态程序分析的源代码编码序列表示方法有效
| 申请号: | 201910981926.6 | 申请日: | 2019-10-16 |
| 公开(公告)号: | CN110737466B | 公开(公告)日: | 2021-04-02 |
| 发明(设计)人: | 黄志球;喻垚慎;李伟湋;沈国华;张静;艾磊 | 申请(专利权)人: | 南京航空航天大学 |
| 主分类号: | G06F8/75 | 分类号: | G06F8/75;G06F8/36 |
| 代理公司: | 常州佰业腾飞专利代理事务所(普通合伙) 32231 | 代理人: | 李珍 |
| 地址: | 211106 江苏省南京市江宁区*** | 国省代码: | 江苏;32 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 基于 静态 程序 分析 源代码 编码 序列 表示 方法 | ||
本发明提供了一种基于静态程序分析的源代码编码序列表示方法,包括:获取源代码文本;对源代码文本进行转换,以得到源代码文本对应的原始抽象语法树;对原始抽象语法树进行精简;对精简后的原始抽象语法树进行遍历编码,以得到源代码文本的编码序列表示。本发明能够简化源代码文本对应的原始抽象语法树的树形结构,并能够较好的将原始抽象语法树的树形结构转换为编码序列,同时能够保证编码序列具有较好的检索性能和匹配性能。
技术领域
本发明涉及代码静态程序分析技术领域,具体涉及一种基于静态程序分析的源代码编码序列表示方法。
背景技术
在软件行业中,通常将能够完成既定功能的编程语言有序集合作为代码段,因此在软件行业中具有大量代码段。并且随着软件行业的发展,私有代码库和开源软件项目的快速增加进一步积累了大量能实现各种功能的代码段,因此,在目前的软件开发中,对现有代码段的有效复用,已成为一种快速高效的软件开发活动。如何从现有代码库中找到符合开发人员需求的已有代码段,并通过复用和修改来加速软件开发过程,是代码推荐的主要工作;如何找出代码中的克隆关系,提高复用代码的维护效率、降低其维护成本,是代码克隆检测的主要应用场景。在代码推荐、代码克隆检测等领域,如何对代码段进行有效表达,是影响代码推荐和克隆检测效果的重要影响因素。
目前广泛应用的代码表示方法有基于符号、基于抽象语法树、基于图结构等方法。其中,基于符号的方法是将代码段切分成具有符号表意的有序序列,将代码语句中的每一个用于表示同一意义的连续字符作为一个符号表示,并组合为有序的符号序列来表达完整的代码段;基于抽象语法树的方法是将代码段解析为抽象语法树,用节点类型和树形结构关系表示代码语句的意义和顺序,利用抽象语法树的节点及结构表达完整的代码段;基于图结构的方法是将程序解析为控制流图或数据依赖图等图结构,并利用图结构的相关信息来表达完整的代码段。
其中,更为常用的代码表示方法是基于抽象语法树的方法。这是因为基于抽象语法树的方法能够兼顾文本特征和程序语言顺序结构特征;而基于符号的方法主要使用了代码段中的文本特征,仅能利用语言中词的性质,却忽略掉了部分语义的信息,基于图结构的方法仅考虑了代码段中蕴含的关联关系表示,却忽略了程序语句的结构顺序和文本信息。
但是,目前在应用基于抽象语法树的方法时,大多直接使用抽象语法树,而忽略对抽象语法树的进一步处理,导致针对树结构的数据处理方法通常需要较多的计算资源和时间。
发明内容
本发明旨在至少在一定程度上解决上述技术中的技术问题之一。为此,本发明的目的在于提出一种基于静态程序分析的源代码编码序列表示方法,能够简化源代码文本对应的原始抽象语法树的树形结构,并能够较好的将原始抽象语法树的树形结构转换为编码序列,同时能够保证编码序列具有较好的检索性能和匹配性能。
为达到上述目的,本发明实施例提出了一种基于静态程序分析的源代码编码序列表示方法,包括:获取源代码文本;对所述源代码文本进行转换,以得到所述源代码文本对应的原始抽象语法树;对所述原始抽象语法树进行精简;对精简后的原始抽象语法树进行遍历编码,以得到所述源代码文本的编码序列表示。
根据本发明实施例的基于静态程序分析的源代码编码序列表示方法,通过获取源代码文本,然后对源代码文本进行转换,以得到源代码文本对应的原始抽象语法树,并对原始抽象语法树进行精简,最后对精简后的原始抽象语法树进行遍历编码,以得到源代码文本的编码序列表示,由此,能够简化源代码文本对应的原始抽象语法树的树形结构,并能够较好的将原始抽象语法树的树形结构转换为编码序列,同时能够保证编码序列具有较好的检索性能和匹配性能。
另外,根据本发明上述实施例提出的基于静态程序分析的源代码编码序列表示方法还可以具有如下附加的技术特征:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京航空航天大学,未经南京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910981926.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种函数调用路径获取的方法和相关装置
- 下一篇:一种业务迁移的方法和设备





