[发明专利]基于抽象语法树的冗余变量和冗余方法的检测方法及系统在审

专利信息
申请号: 202011579248.X 申请日: 2020-12-28
公开(公告)号: CN112650680A 公开(公告)日: 2021-04-13
发明(设计)人: 张智轶;熊超;黄志球;陶传奇;周玉倩 申请(专利权)人: 南京航空航天大学
主分类号: G06F11/36 分类号: G06F11/36
代理公司: 南京苏高专利商标事务所(普通合伙) 32204 代理人: 李淑静
地址: 210016 江*** 国省代码: 江苏;32
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 基于 抽象 语法 冗余 变量 方法 检测 系统
【权利要求书】:

1.一种基于抽象语法树的冗余变量和冗余方法的检测方法,其特征在于,包括以下步骤:

(1)根据Java语言的抽象语法树的节点结构对Java源文件进行解析,得到当前文件的抽象语法树;

(2)根据抽象语法树,将所有由用户定义的变量与方法分解出来,生成对应的变量数组与方法数组;

(3)从函数main方法入口出发,遍历遇到的所有变量与方法,并在对应变量数组与方法数组中添加其他变量或者方法的依赖;

(4)将主函数调用位做上标记,并以此推断变量数组与方法数组中冗余的节点;

(5)根据得到的冗余变量和冗余方法节点,删除对应的冗余的变量和方法。

2.根据权利要求1所述的基于抽象语法树的冗余变量和冗余方法的检测方法,其特征在于,所述步骤(1)包括:将Java源代码作为字符串提取出来并转变为字符数组,采用字符串分解技术以及字符串匹配技术将整个Java源代码字符串分解为多个Token序列,然后进行词法分析,匹配Java关键字,并对匹配的Token序列进行分析,同时构造树节,其中不同语句类型的匹配解析包括:

11)对于变量定义,定义形式为“变量类型变量名;”或者“变量类型变量名=表达式语句;”,因此,首先对于字符串进行拆分,将字符串分为两个部分,分别为变量类型与剩余字符串,然后,创建一个抽象语法树节点,将类型定义为变量类型节点,将值置为拆分后的剩余字符串;

12)对于其他类型语句进行关键字匹配解析,类格式为“class类名”,匹配关键字class;包格式为“package包名”,匹配package;引用库格式为“import库名”,匹配import;方法格式为“public/private/protected修饰符号方法名(参数字符串)”,在类匹配的下一级匹配这些关键字;对于条件判断语句,匹配if-else,对于循环语句分支语句,匹配for/while/do/switch,匹配后转到相应访问函数处理。

3.根据权利要求1所述的基于抽象语法树的冗余变量和冗余方法的检测方法,其特征在于,所述步骤(2)中变量数组的建立方法为:定义一个值为空的字符串变量,用来记录变量名,先对表达式语句进行字符遍历,将遍历的字符一次追加到字符串变量中,直至遍历到‘=’时,将该字符串变量添加到变量数组中;

方法数组的建立方法为:在解析java源文件时,在构建类结点的同时,将其中包含的方法名逐一添加至方法数组中。

4.根据权利要求1所述的基于抽象语法树的冗余变量和冗余方法的检测方法,其特征在于,所述步骤(3)中变量和方法依赖关系的分析包括:

31)对于表达式语句val1=val2+fun(val3)/fun2(val4),val1、val2、val3、val4为变量,fun与fun2为函数,根据字符串拆分技术将字符串分为val1与val2+fun(val3)/fun2(val4),然后将第二个字符串拆分成val2、fun(val3)与fun2(val4);

32)在val1的变量关系依赖数组中添加val2,由于解析后两个字符串会匹配不成功,因此,将其分别拆分为fun与val3、fun2与val4,然后在val1的变量关系依赖数组中添加val3与val4,在方法关系依赖数组中添加fun与fun2;

33)在fun的调用变量数组中添加val3,在fun2的调用变量数组中添加val4。

5.根据权利要求1所述的基于抽象语法树的冗余变量和冗余方法的检测方法,其特征在于,所述步骤(4)中推断变量数组与方法数组中冗余的节点的方法为:先检测哪些是非冗余变量和非冗余方法,其余的就是冗余的变量和方法,对于非冗余变量和非冗余方法的判断方法如下:

i)如果一个变量被一个非冗余方法调用,这个方法可以是用户定义的方法,也可以是系统方法,那么这个变量就是非冗余变量;

ii)如果一个变量依赖于非冗余变量,则这个变量就是非冗余变量;

iii)如果在main方法中的methodExpressionString与其自定义方法名相同,则该自定义方法为非冗余方法。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京航空航天大学,未经南京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/202011579248.X/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top