一种资源流图的构建方法技术

技术编号:26170062 阅读:28 留言:0更新日期:2020-10-31 13:35
本发明专利技术公开了一种资源流图的构建方法,包括以下步骤:S100、将源代码文件通过转换器生成相应的抽象语法树;S200、对每个方法中需要分析的变量和语句分别定义,其中,变量定义为未赋值变量、赋值变量和参数变量;S300、遍历所有的抽象语法树,并找到抽象语法树中的每一个方法,建立一个以它的名称和参数类型为主键值的索引;S400、对于方法内的每一个参数变量进行处理;S500、对于方法内的所有赋值变量进行处理;S600、对于方法内的所有未赋值变量进行处理。本发明专利技术的资源流图构建不需要通过生成大量中间的结果,可通过语法树直接生成,并且能够通过该资源流图分析数据的流向,节省了大量的时间和空间。

A construction method of resource flow graph

【技术实现步骤摘要】
一种资源流图的构建方法
本专利技术属于计算机
,具体涉及一种资源流图的构建方法。
技术介绍
在静态分析领域,通常我们对程序分析的步骤都是先对代码进行解析生成相应的语法树,然后将语法树再生成中间代码表示,通过中间代码来生成基本块,再在基本块的基础上构建控制流图。通过控制流图构造出数据流图。大部分构建的控制流图主要是为之后生成数据流图做准备。这种构建方式生成了很多中间的结果,而这些中间结果在后续的分析中并不重要,这浪费了大量的储存空间和计算资源。
技术实现思路
本专利技术的目的在于避免现有技术中的不足而提供一种资源流图的构建方法,其构建不需要通过生成大量中间的结果,可通过语法树直接生成,并且能够通过该资源流图分析数据的流向,节省了大量的时间和空间。本专利技术的目的通过以下技术方案实现:提供一种资源流图的构建方法,包括以下步骤:S100、将源代码文件通过转换器生成相应的抽象语法树;S200、对每个方法中需要分析的变量和语句分别定义,其中,变量定义为未赋值变量、赋值变量和参数变量;<br>S300、遍历本文档来自技高网...

【技术保护点】
1.一种资源流图的构建方法,其特征在于,包括以下步骤:/nS100、将源代码文件通过转换器生成相应的抽象语法树;/nS200、对每个方法中需要分析的变量和语句分别定义,其中,变量定义为未赋值变量、赋值变量和参数变量;/nS300、遍历所有的抽象语法树,并找到抽象语法树中的每一个方法,建立一个以它的名称和参数类型为主键值的索引;/nS400、对于方法内的每一个参数变量进行处理;/nS500、对于方法内的所有赋值变量进行处理;/nS600、对于方法内的所有未赋值变量进行处理。/n

【技术特征摘要】
1.一种资源流图的构建方法,其特征在于,包括以下步骤:
S100、将源代码文件通过转换器生成相应的抽象语法树;
S200、对每个方法中需要分析的变量和语句分别定义,其中,变量定义为未赋值变量、赋值变量和参数变量;
S300、遍历所有的抽象语法树,并找到抽象语法树中的每一个方法,建立一个以它的名称和参数类型为主键值的索引;
S400、对于方法内的每一个参数变量进行处理;
S500、对于方法内的所有赋值变量进行处理;
S600、对于方法内的所有未赋值变量进行处理。


2.根据权利要求1所述的资源流图的构建方法,其特征在于,所述步骤S200中未赋值变量为只初始化了但是未赋值的变量,参数变量为方法的入参且不包括基本类型的变量,赋值变量为在方法内声明了并初始化的变量。


3.根据权利要求2所述的资源流图的构建方法,其特征在于,每个方法中需要分析的语句定义为跳转、返回值、If分支、try块、结束和其他普通语句六种类型,其中,跳转类型为在try语句中会抛出异常的语句,返回值类型为含有return的语句,If分支类型为语句if块的入口点,try块类型为try块的入口点,结束类型为方法结束的位置。


4.根据权利要求3所述的资源流图的构建方法,其特征在于,所述步骤S400具体包括以下过程:
S401、判断方法内的参数变量的类型是否为基本类型,若是,则返回步骤S200,反之,则进入步骤S402;
S402、对方法中的参数变量相关所有语句进行遍历。


5.根据权利要求4所述的资源流图的构建方法,其特征在于,所述步骤S402中参数变量相关所有语句进行遍历时,语句类型判断的具体表现为:
A)判断是否为返回值类型,如果为返回值类型,则把该语句的类型设置为返回值后返回步骤S402;
B)判断是否为try块类型,如果为try块,则对于try块中的语句逐一分析后返回步骤S402;
C)判断是否为If分支类型,如果为if分支类型,首先,判断if分支的...

【专利技术属性】
技术研发人员:欧鹏程
申请(专利权)人:湖南泛联新安信息科技有限公司
类型:发明
国别省市:湖南;43

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

1