[发明专利]一种面向对象程序的控制流图构造方法有效
申请号: | 201810221528.X | 申请日: | 2018-03-17 |
公开(公告)号: | CN109408034B | 公开(公告)日: | 2022-02-15 |
发明(设计)人: | 李必信;朱玲媛 | 申请(专利权)人: | 东南大学 |
主分类号: | G06F8/20 | 分类号: | G06F8/20 |
代理公司: | 南京众联专利代理有限公司 32206 | 代理人: | 杜静静 |
地址: | 210096 *** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 面向 对象 程序 控制 构造 方法 | ||
本发明提出一种面向对象程序的控制流图构造方法,该方法包括以下步骤:1)根据源代码构造抽象语法树;2)基于抽象语法树构造类继承关系图;3)根据语句位置关系为方法构造粗粒度的控制流子图,进而利用节点拆解以及虚拟Finally节点方法来构造细粒度的控制流子图;4)采用异常上浮方法来分析异常抛出点以及嵌套异常处理结构的控制流;5)解析方法调用信息,构造基于语句的控制流图;6)合并不引起程序执行顺序改变的语句集合形成基本模块,构造基于基本模块的控制流图。该发明的构造方法不但支持分析多态特征对控制流的影响,而且支持多层嵌套的异常处理结构的控制流分析。
技术领域
本发明涉及一种面向对象程序的控制流图构造方法,属于程序静态分析技术领域。
背景技术
控制流图是一个过程或程序的抽象表现,代表了一个程序执行过程中会遍历到的所有路径。对某个过程或程序P,通常用四元组G=(N,E,Entry,Exit)表示P的控制流图。其中, N是节点的集合,这里节点包含基本模块和简单语句两种,前者是指不引起程序执行顺序改变的语句集合,后者是将每一个简单语句都看成一个控制流节点;E是边的集合,每条边是一个有序节点对ni,nj,它表示从ni到nj可能存在的控制转移(即语句ni执行完后可能立即执行nj);Entry和Exit分别表示子程序的入口和出口节点。控制流分析是软件静态分析领域的重要组成部分,更是静态分析的重要基础,广泛应用于程序理解、软件分析、软件测试等领域。
控制流图的课题研究主要集中于控制流图的构造以及对控制流分析结果的显示。目前主要的控制流图构造方法有:
1996年单永明等人提出的有限自动机构造方法。该方法在识别和提取结构化程序的控制流图时建立了一个自动机模型,但是在这个模型中没有考虑goto、break、continue、return 等跳转语句对控制流图的影响,而实际的程序控制流图构造工具却不能回避这个问题。
2005年Rothermel G等人提出的leader指令构造方法。该方法定义leader指令为程序入口点、过程的第一条指令、分支指令的目标指令以及紧跟分支指令的指令,并提出通过 leader指令来识别控制流图中的基本模块,以及通过基本模块之间的程序位置关系和分支跳转关系来识别控制流边。但这里的leader指令的定义适应于结构化程序,在面向对象的语言中leader指令的定义将愈发难以定义清晰,故leader指令构造方法难以适应于面向对象的控制流图的构造。
2010年孙永新、吴家培、闫大顺等人提出的语法制导翻译方法。该方法提出通过语法制导翻译标识基本模块的方式来构造控制流图。该方法解决了非结构程序中goto等语句的控制流分析问题,但未对嵌套异常处理结构的控制流分析进行深入探索。
2012年张艳梅等人提出的异常匹配构造方法。该方法提出匹配异常的类型来分析异常处理结构的控制流,但是该方法仅能支持不包含Finally关键字的非嵌套的异常控制流分析。然而在不少面向对象语言中异常处理结构是允许多层嵌套的,且Finally关键字对控制流的影响远超异常捕获catch部分。
面向对象程序的控制流图构造方法中如何解决多层嵌套的异常处理结构对控制流的影响是构造的重点。现有的研究成果主要集中于结构化语法特性和简单异常处理结构的控制流分析,而且这些研究成果难以迁移到包含复杂异常处理结构的面向对象程序的控制流图构造工作中来。因此,对面向对象程序的控制流图的深入研究十分重要。
发明内容
本发明正是针对现有技术中存在的技术问题,提供一种基于抽象语法树来构造面向对象程序的控制流图方法,本发明基于抽象语法树来对源代码进行语法解析,在分析过程中使用节点拆解、异常匹配、异常上浮、虚拟Finally、类继承关系分析等方法来构造基于语句的控制流图,最后使用基本模块识别方法来将其转化为基于基本模块的控制流图。该发明不但支持分析多态特征对控制流的影响,而且支持多层嵌套的异常处理结构的控制流分析
本发明的面向对象程序的控制流图构造方法,包括如下步骤:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东南大学,未经东南大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810221528.X/2.html,转载请声明来源钻瓜专利网。