当前位置: 首页 > 专利查询>北京大学专利>正文

一种基于守卫计算的区间信息分析方法技术

技术编号:19745610 阅读:29 留言:0更新日期:2018-12-12 04:48
本发明专利技术提供一种基于守卫计算的区间信息分析方法,包括:S1,对于值依赖图中任一结点,根据该结点与该结点的任一前驱结点间的守卫条件获取守卫条件对应的条件判断结点;S2,根据条件判断结点的前驱结点的区间信息,计算条件判断结点的区间信息,进一步确认条件判断结点的属性;属性为假、真和可满足中的一种;S3,根据条件判断结点的属性,确认条件判断结点对应的守卫条件的区间信息;S4,根据该结点的各前驱结点的区间信息和该结点与该结点的各前驱结点间的守卫条件的区间信息,获取该结点的区间信息。本发明专利技术提供的方法,补偿了值依赖图缺少控制流信息的不足,提高了分析精度。

【技术实现步骤摘要】
一种基于守卫计算的区间信息分析方法
本专利技术涉及值依赖图
,尤其涉及一种基于守卫计算的区间信息分析方法。
技术介绍
值依赖图(ValueDependenceGraph)是一种有向图,可表示为VDG=(N,N_s,E,E_i)。其中,N为结点集,每个结点对应程序中的一条语句,N_s为选择语句结点集,包含分支选择语句以及循环选择语句,边集E={<n1,ns1,…,nsi,n2>|n1,n2∈N,ns1,nsi∈N_s,n1为n2在值依赖源点,ns为可选结点即n1可以直接到达n2}。上述值依赖图是对流值图的一种扩展。值依赖图本身是通过定值使用分析和数据流分析等构造的反应变量之间守卫条件的图,所有可能影响当前结点值域范围的结点都是当前结点的前驱结点,并且每个前驱结点到当前结点都有相应的逻辑条件进行约束。目前,基于值依赖图的传统区间分析方法,由于值依赖图缺少控制流信息,对于前驱结点到当前结点的逻辑条件,仅考虑逻辑条件自身中变量之间的约束关系,而忽略了逻辑条件自身的区间信息,导致了分析精度的缺失。
技术实现思路
本专利技术为解决现有技术中存在的基于值依赖图的区间分析忽略逻辑条件的区间信息导致的分析精度缺失问题,提供了一种基于守卫计算的区间信息分析方法。一方面,本专利技术提出一种区间信息分析方法,包括:S1,对于值依赖图中任一结点,根据该结点与该结点的任一前驱结点间的守卫条件获取所述守卫条件对应的条件判断结点;S2,根据所述条件判断结点的区间信息和所述条件判断结点的前驱结点的区间信息,确认所述条件判断结点的属性;所述属性为假、真和可满足中的一种;S3,根据所述条件判断结点的属性,确认所述条件判断结点对应的守卫条件的区间信息;S4,根据该结点的各前驱结点的区间信息和该结点与该结点的各前驱结点间的守卫条件的区间信息,获取该结点的区间信息。优选地,所述步骤S2进一步包括:取所述条件判断结点的区间信息和所述条件判断结点的前驱结点的区间信息的交集;若所述交集为空集,则将所述条件判断结点的属性设置为假;若所述交集不为空集,且所述条件判断结点的前驱结点的区间信息属于所述条件判断结点的区间信息,则将所述条件判断结点的属性设置为真;否则,将所述条件判断结点的属性设置为可满足。优选地,所述步骤S3进一步包括:若所述条件判断结点的属性为假,则所述条件判断结点对应的守卫条件的区间信息为空集;若所述条件判断结点的属性为真,则所述条件判断结点对应的守卫条件的区间信息为全集;若所述条件判断结点的属性为可满足,则所述条件判断结点对应的守卫条件的区间信息为所述交集。优选地,所述步骤S4进一步包括:根据该结点的各前驱结点的区间信息和该结点与该结点的各前驱结点间的守卫条件的区间信息,应用下式获取流入该结点的区间信息:式中,inMap(vnode)为流入该结点的区间信息,outMap[i]为该结点的第i个前驱结点的区间信息,guardMap[i]为该结点与该结点的第i个前驱结点间的守卫条件的区间信息,n为该结点的前驱结点数;根据所述流入该结点的区间信息,获取该结点的区间信息。优选地,所述根据所述流入该结点的区间信息,获取该结点的区间信息,进一步包括:若所述流入该结点的区间信息为空集,则该结点的区间信息为空集;否则,若该结点的前驱结点中包括该结点,则根据所述流入该结点的区间信息和该结点的类型,获取该结点循环前信息,应用所述循环前信息和自循环的守卫条件获取该结点的区间信息;若该结点的前驱结点不包括该结点,则基于所述流入该结点的区间信息和该结点的类型获取该结点的区间信息。优选地,该结点的类型为赋值结点、函数调用结点、函数入口结点、条件判断结点或返回语句结点。优选地,若该结点为赋值结点,则根据所述流入该结点的区间信息模拟计算,获取该结点的区间信息;若该结点为函数调用结点,则根据所述流入该结点的区间信息获取该结点中的函数调用的参数的区间信息,将所述参数的区间信息作为该结点的区间信息;若该结点为函数入口结点,且函数调用为变量,则从所述流入该结点的区间信息中提取所述变量的区间信息,并将所述变量的区间信息作为该结点的区间信息;若该结点为函数入口结点,且函数调用为常量,则将该常量的区间信息作为该结点的区间信息;若该结点为条件判断结点或返回语句结点,则该结点的区间信息为所述流入该结点的区间信息。优选地,任一结点的区间信息如下式所示:outMap={<var,isLeft,VRI>}式中,outMap为结点的区间信息,var为变量,isLeft为true或false,true和false分别用于表示变量var位于所述结点对应的语句中等号的左边和右边,VRI为变量var对应的值域信息。优选地,所述流入该结点的区间信息如下式所示:inMap={<var,VRI>}式中,inMap为流入该结点的区间信息,var为变量,VRI为变量var对应的值域信息。本专利技术提供的一种基于守卫计算的区间信息分析方法,将条件判断结点的属性反馈给对应的守卫条件,补偿了值依赖图缺少控制流信息的不足,在对前驱结点到当前结点的逻辑条件进行考虑时加入了逻辑条件自身的区间信息,提高了分析精度。附图说明图1为本专利技术具体实施例的一种区间信息分析方法的流程示意图;图2为本专利技术具体实施例的值依赖图中结点存在形式示意图;图3为本专利技术具体实施例的一种值依赖图;图4为本专利技术具体实施例的一种单变量循环的值依赖图;图5为本专利技术具体实施例的一种值依赖图。具体实施方式下面结合附图和实施例,对本专利技术的具体实施方式作进一步详细描述。以下实施例用于说明本专利技术,但不用来限制本专利技术的范围。图1为本专利技术具体实施例的一种区间信息分析方法的流程示意图,如图1所示,一种区间信息分析方法,包括:S1,对于值依赖图中任一结点,根据该结点与该结点的任一前驱结点间的守卫条件获取所述守卫条件对应的条件判断结点;S2,根据所述条件判断结点的区间信息和所述条件判断结点的前驱结点的区间信息,确认所述条件判断结点的属性;所述属性为假、真和可满足中的一种;S3,根据所述条件判断结点的属性,确认所述条件判断结点对应的守卫条件的区间信息;S4,根据该结点的各前驱结点的区间信息和该结点与该结点的各前驱结点间的守卫条件的区间信息,获取该结点的区间信息。具体地,图2为本专利技术具体实施例的值依赖图中结点存在形式示意图,如图2所示,值依赖图中,任一结点与其前驱结点之间存在依赖关系(dependence),守卫条件(guard)为所述依赖关系的属性,所述守卫条件,包括了该结点与其前驱结点间所含的变量从定义到使用的关系、数组从定义到其数组元素使用的关系等。所述前驱结点的值依赖信息能够传递到该结点的条件即所述守卫条件得到满足。根据前驱结点的区间信息获取该结点的区间信息,具体步骤如下:首先,对于值依赖图中的任一结点,根据该结点与其任一前驱结点间的守卫条件,遍历所述值依赖图,获取所述守卫条件对应的条件判断结点。其次,分别提取所述条件判断结点及其前驱结点的区间信息,根据所述条件判断结点的区间信息和所述条件判断结点的各前驱结点的区间信息,确认所述条件判断结点的属性。此处,所述条件判断结点的属性为“假”、“真”和“本文档来自技高网...

【技术保护点】
1.一种区间信息分析方法,其特征在于,包括:S1,对于值依赖图中任一结点,根据该结点与该结点的任一前驱结点间的守卫条件获取所述守卫条件对应的条件判断结点;S2,根据所述条件判断结点的区间信息和所述条件判断结点的前驱结点的区间信息,确认所述条件判断结点的属性;所述属性为假、真和可满足中的一种;S3,根据所述条件判断结点的属性,确认所述条件判断结点对应的守卫条件的区间信息;S4,根据该结点的各前驱结点的区间信息和该结点与该结点的各前驱结点间的守卫条件的区间信息,获取该结点的区间信息。

【技术特征摘要】
1.一种区间信息分析方法,其特征在于,包括:S1,对于值依赖图中任一结点,根据该结点与该结点的任一前驱结点间的守卫条件获取所述守卫条件对应的条件判断结点;S2,根据所述条件判断结点的区间信息和所述条件判断结点的前驱结点的区间信息,确认所述条件判断结点的属性;所述属性为假、真和可满足中的一种;S3,根据所述条件判断结点的属性,确认所述条件判断结点对应的守卫条件的区间信息;S4,根据该结点的各前驱结点的区间信息和该结点与该结点的各前驱结点间的守卫条件的区间信息,获取该结点的区间信息。2.根据权利要求1所述的方法,其特征在于,所述步骤S2进一步包括:取所述条件判断结点的区间信息和所述条件判断结点的前驱结点的区间信息的交集;若所述交集为空集,则将所述条件判断结点的属性设置为假;若所述交集不为空集,且所述条件判断结点的前驱结点的区间信息属于所述条件判断结点的区间信息,则将所述条件判断结点的属性设置为真;否则,将所述条件判断结点的属性设置为可满足。3.根据权利要求2所述的方法,其特征在于,所述步骤S3进一步包括:若所述条件判断结点的属性为假,则所述条件判断结点对应的守卫条件的区间信息为空集;若所述条件判断结点的属性为真,则所述条件判断结点对应的守卫条件的区间信息为全集;若所述条件判断结点的属性为可满足,则所述条件判断结点对应的守卫条件的区间信息为所述交集。4.根据权利要求1所述的方法,其特征在于,所述步骤S4进一步包括:根据该结点的各前驱结点的区间信息和该结点与该结点的各前驱结点间的守卫条件的区间信息,应用下式获取流入该结点的区间信息:式中,inMap(vnode)为流入该结点的区间信息,outMap[i]为该结点的第i个前驱结点的区间信息,guardMap[i]为该结点与该结点的第i个前驱结点间的守卫条件的区间信息,n为该结点的前驱结点数;根据所述流入该结点的区间信息,获取该结点的区间信息。5.根据权利要求4所述的方法,其特征在于,根据所述流入该结点的区...

【专利技术属性】
技术研发人员:张世琨马森邵思豪高庆
申请(专利权)人:北京大学北京北大软件工程股份有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1