[发明专利]用于分布式静态检测系统的Java文件依赖性分析方法及模块有效

专利信息
申请号: 201810869157.6 申请日: 2018-08-02
公开(公告)号: CN109033843B 公开(公告)日: 2022-06-10
发明(设计)人: 韩承锋;唐云善;邹旎彬;朱春雷;王强;陈皓立 申请(专利权)人: 南瑞集团有限公司;南京南瑞信息通信科技有限公司;国网江苏省电力有限公司
主分类号: G06F21/57 分类号: G06F21/57;G06F8/75;G06F8/41
代理公司: 南京纵横知识产权代理有限公司 32224 代理人: 朱妃;董建林
地址: 211106 江*** 国省代码: 江苏;32
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 用于 分布式 静态 检测 系统 java 文件 依赖性 分析 方法 模块
【权利要求书】:

1.一种用于分布式静态检测系统的Java文件依赖性分析方法,其特征在于,包括以下步骤:

1)针对程序包中的所有文件进行信息处理,记录Java源代码文件为待分析对象;

2)读取所有文件中的一个Java源代码文件;

3)生成该文件的抽象语法树;

4)基于该文件的抽象语法树,对该文件所有语句进行依赖性分析,找出该文件依赖的其他文件;

5)记录该文件与其他文件的依赖关系;

其中,该文件与其他文件的依赖关系使用有向图记录;

6)判断程序包中的所有文件是否已依赖性分析完毕;

若已依赖性分析完毕、则执行下一步,若否、则跳转执行步骤2);

7)根据程序包中的所有文件的依赖关系,生成该程序包的依赖性关系图;

根据该依赖性关系图进行分析,得到所有不可再分的独立文件集合;

8)根据分布式检测系统对程序检测包的要求,对所有不可再分的独立文件集合进行合并,得到若干个符合系统需求的相互独立的Java源代码文件集合;

9)根据Java源代码文件集合,对程序包进行解耦拆分,获取所有程序子包,从而得到程序包解耦拆分的结果;

所述步骤1)中的信息处理,具体为,对程序包中的Java源代码文件和该Java源代码文件依赖的jar包进行分类处理;其中,Java源代码文件被视为待分析对象,依赖的jar包则作为依赖项引入分析过程;

所述步骤3)生成该文件的抽象语法树,具体为,使用JavaParser对待分析对象Java源代码文件以特定结构生成抽象语法树;

其中,生成的抽象语法树包括三大类节点,分别是声明节点、表达式节点和块节点;

所述声明节点,用于记录文本中与声明有关的语句或块,包括Package声明、import声明、类声明、方法声明和变量声明;

所述表达式节点,用于记录一切除了声明节点以及块节点的语句,包括方法调用语句、类创建语句和赋值语句;

所述块节点,用于表示带有花括号{}中的语句,包括类声明的类内容、方法声明中的方法内容、if语句、try语句、catch语句和for语句;

所述步骤4)中的依赖性分析,具体包括以下步骤:

4-1)Package声明以及import声明分析;

首先,分析文件所在的Package以及Import的Package,得到本文件所依赖的Package;

然后,直接遍历依赖的Package中的类以及Import的类,得到该文件所有可能依赖的类,以缩小下一步分析中类遍历范围;

最后,记录Import Static引入的静态变量;

4-2)类声明分析;

针对该文件的public类以及文件的内部类进行分析,若public类以及文件的内部类存在父类或者实现的接口类,则将找到的父类以及实现的接口类记录下来;

4-3)变量声明分析;

分析所有变量声明语句,记录所有是类对象变量所属的类,若这些类对象变量同时初始化,同时检查初始化的值是否是类的静态成员变量,若是、则记录下该成员变量所属的类;

4-4)方法声明分析;

分析方法声明中的返回类型、输入参数类型以及抛出错误类型;

若方法返回类型非void或者非Java基本类型,则记录下方法返回类型所属的类;

若方法声明存在大于等于一个输入参数,则依次分析每个输入参数,记录下每个非Java基本类型输入参数所属的类;

若方法存在抛出错误,记录下方法所有抛出错误所属的类;

4-5)特定语句分析;

遍历所感兴趣的特定语句,记录特定语句中存在的类或者类的静态成员;

其中,特定语句是指可能存在类符号的语句,包括赋值语句、类创建语句、for语句和catch语句;

4-6)方法调用分析;

分析方法调用的输入参数,若方法调用存在大于等于一个输入参数,则依次分析每个输入参数,记录下每个非Java基本类型输入参数所属的类;

分析该方法调用是否是静态成员方法,若是,则记录下该方法调用所属的类;若否,则查询该方法调用是否属于该文件public类或者内部类,若属于,则忽略该方法调用所属于的类;若不属于,则查询并记录下该方法调用所属的外部类;

4-7)注解分析;

分析文件中的注解,若存在自定义注解,则把该注解所属的自定义注解类记录下来;

4-8)搜索依赖类所在文件;

搜索定位根据步骤4-1)至步骤4-7)中所得到的依赖类所在的文件;

其中,包含依赖类的jar包为该文件所依赖的jar包,包含依赖类的Java源文件为该文件所依赖的Java 源代码文件;

所述步骤8)中的对所有不可再分的独立文件集合进行合并,具体是,根据分布式检测系统所需求的文件包大小,在不超过系统要求大小之内,遵循合并规则,对所有不可再分的独立文件集合进行合并,得到若干个符合系统需求的相互独立的Java源代码文件集合;

其中,合并规则包括第一规则和第二规则;所述第一规则为交集集合先合并,无交集集合后合并;所述第二规则为存在多个有交集集合时,交集大的两个集合先合并;

所述步骤9),具体为,通过获取Java源代码文件集合中每个Java源代码文件依赖的jar包,得到每个Java源代码文件集合所依赖的jar包;最后,把每个Java源代码文件集合中的Java源代码文件和该集合所依赖的jar包归为一个程序子包,获得的所有程序子包为程序包解耦拆分的结果。

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

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南瑞集团有限公司;南京南瑞信息通信科技有限公司;国网江苏省电力有限公司,未经南瑞集团有限公司;南京南瑞信息通信科技有限公司;国网江苏省电力有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

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

×

专利文献下载

说明:

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

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

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

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

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

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

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

钻瓜专利网在线咨询

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

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