[发明专利]一种面向对象程序的控制流图构造方法有效
申请号: | 201810221528.X | 申请日: | 2018-03-17 |
公开(公告)号: | CN109408034B | 公开(公告)日: | 2022-02-15 |
发明(设计)人: | 李必信;朱玲媛 | 申请(专利权)人: | 东南大学 |
主分类号: | G06F8/20 | 分类号: | G06F8/20 |
代理公司: | 南京众联专利代理有限公司 32206 | 代理人: | 杜静静 |
地址: | 210096 *** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 面向 对象 程序 控制 构造 方法 | ||
1.一种面向对象程序的控制流图构造方法,其特征在于,包括如下步骤:
步骤一 根据源代码构造相应的抽象语法树;
步骤二 基于抽象语法树构造类继承关系图;
步骤三 根据语句位置关系为方法构造粗粒度的控制流子图,进而利用节点拆解以及虚拟Finally节点方法来构造细粒度的控制流子图;
步骤四 采用异常匹配方法和异常上浮方法来分析异常抛出点以及嵌套异常处理结构的控制流;
异常上浮方法即将当前异常放到嵌套的异常处理结构中来进行匹配考虑的方法;
步骤五 解析方法调用信息,构造基于语句的控制流图;
步骤六 合并不引起程序执行顺序改变的语句集合形成基本模块,构造基于基本模块的控制流图。
2.根据权利要求1所述的面向对象程序的控制流图构造方法,其特征在于,所述步骤一中根据源代码构造相应的抽象语法树具体如下,根据源代码的语言类型来调用现有的抽象语法树生成工具,并封装现有的工具输出。
3.根据权利要求1所述的面向对象程序的控制流图构造方法,其特征在于,所述步骤二中基于抽象语法树构造类继承关系图,具体步骤为:
(1)从抽象语法树中获取所有的类和接口的类型声明信息及其方法声明信息,创建类继承关系图中的节点,节点包含类名以及该类中定义的方法信息;
(2)进一步解析类型声明中包含的接口类型信息或父类信息来得到类或接口之间的继承实现关系,为类继承关系图中对应的节点添加继承边。
4.根据权利要求1所述的面向对象程序的控制流图构造方法,其特征在于,所述步骤三中根据语句位置关系为方法构造粗粒度的控制流子图,进而利用节点拆解以及虚拟Finally节点方法来构造细粒度的控制流子图,具体步骤为:
(1)获取抽象语法树中方法对应的方法声明信息,构造粗粒度的控制流子图中的入口节点和出口节点;
(2)获取方法声明中包含的语句信息,为每个语句构建控制流节点,并按照语句的位置关系添加控制流边,同时为起点和第一条语句以及最后一条语句和终点分别添加控制流边,以得到粗粒度的控制流图;
(3)递归识别复合语句,将其拆解为条件和子语句块,为子语句块中语句建立新的控制流节点,并根据语句语义更新与原复合语句节点对应的前驱后继节点集合的控制流边,递归拆解子语句块中的复合语句,直至每条语句没有内部结构为止,在递归拆解异常处理语句对应节点时,若不存在Finally部分,则添加虚拟的Finally节点来对异常处理结构的语义进行控制流分析;
(4)根据跳转语句的含义更新对应节点的控制流边。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东南大学,未经东南大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810221528.X/1.html,转载请声明来源钻瓜专利网。