一种war包分析器的制造方法

文档序号:10534523阅读:228来源:国知局
一种war包分析器的制造方法
【专利摘要】本发明公开一种war包分析器,包括源码分析模块或字节码分析模块,代码获取模块和前端页面分析模块;代码获取模块用于获取待分析war包中的源码,并将源码输出至源码分析模块或用于获取待分析war包中的字节码,并将字节码输出至字节码分析模块;源码分析模块用于为源码构建抽象语法树,并根据抽象语法树获取源码中的元数据信息和关联数据信息;字节码分析模块用于对字节码进行解析得到元数据信息和关联数据信息;前端页面分析模块用于从待分析war包中获取前端页面代码,并将前端页面代码转换为源码或字节码;将源码输出至源码分析模块或将字节码输出至字节码分析模块。利用war包分析器能够对war包进行分析,并得到war包中相关的元数据信息和关联数据信息。
【专利说明】
一种war包分析器
技术领域
[0001 ]本发明涉及数据处理领域,具体涉及一种war包分析器。
【背景技术】
[0002]jar包是对开发人员写好的类进行打包而生成的,也就是说,jar包一般只包括类文件;而war包是在做好一个web应用后,打成包部署到容器,也就是说,war包不仅包括jar包中的类文件,还包括前端页面文件、开发框架的配置文件等。
[0003]现有技术中存在对jar包的分析器,用于对jar包中的源码、字节码进行分析,但是并不能实现对相对复杂的war包的分析。所以,目前亟需一种能够对war包进行分析的分析器。

【发明内容】

[0004]为解决上述问题,本发明提供了一种war包分析器。
[0005]本发明提供了一种war包分析器,所述war包分析器包括源码分析模块或字节码分析模块,还包括代码获取模块和前端页面分析模块;
[0006]所述代码获取模块,用于获取待分析war包中的源码,并将所述源码输出至所述源码分析模块,或,用于获取待分析war包中的字节码,并将所述字节码输出至所述字节码分析丰吴块;
[0007]所述源码分析模块,用于为源码构建抽象语法树,并根据所述抽象语法树获取所述源码中的元数据信息和关联数据信息;
[0008]所述字节码分析模块,用于对字节码进行解析得到元数据信息和关联数据信息;
[0009]所述前端页面分析模块,用于从所述待分析war包中获取前端页面代码,并将所述前端页面代码转换为源码或字节码;将所述源码输出至所述源码分析模块,或,将所述字节码输出至所述字节码分析模块。
[0010]优选地,所述war包分析器还包括数据表分析模块;
[0011]所述数据表分析模块,用于从所述代码获取模块获取到的源码或字节码中,获取SQL代码片段,并对所述SQL代码片段进行解析得到方法与数据表的映射关系,所述方法与数据表的映射关系属于关联数据信息。
[0012]优选地,所述数据表分析模块,还用于从数据库中,获取所述待分析war包中的数据表的元数据信息。
[0013]优选地,所述war包分析器还包括开发框架分析模块;
[0014]所述开发框架分析模块,用于从所述待分析war包中获取开发框架的配置文件,并从所述配置文件中获取关联数据信息,所述关联数据信息包括类之间的调用关系、类与页面的调用关系。
[0015]优选地,所述开发框架分析模块,具体用于从所述待分析war包中获取开发框架的配置文件,为所述配置文件构建结构树,并根据所述结构树获取关联数据信息,所述关联数据信息包括类之间的调用关系、类与页面的调用关系。
[0016]优选地,所述war包分析器还包括存储模块;
[0017]所述存储模块,用于将所述源码分析模块、所述字节码分析模块、所述数据表分析模块和所述开发框架分析模块中的元数据信息和关联数据信息,按照预设的存储规则存储于数据库中。
[0018]优选地,所述war包分析器还包括显示模块;
[0019]所述显示模块,用于获取存储于数据库中的元数据信息和关联数据信息,并将所述元数据信息和所述关联数据信息转化为视图显示给用户。
[0020]优选地,所述war包分析器还包括生成模块;
[0021]所述生成模块,用于利用所述元数据信息和所述关联数据信息,生成UML图,所述UML图包括类图、状态图和时序图。
[0022]本发明提供的war包分析器包括源码分析模块或字节码分析模块,还包括代码获取模块和前端页面分析模块;所述代码获取模块,用于获取待分析war包中的源码,并将所述源码输出至所述源码分析模块,或,用于获取待分析war包中的字节码,并将所述字节码输出至所述字节码分析模块;所述源码分析模块,用于为源码构建抽象语法树,并根据所述抽象语法树获取所述源码中的元数据信息和关联数据信息;所述字节码分析模块,用于对字节码进行解析得到元数据信息和关联数据信息;所述前端页面分析模块,用于从所述待分析war包中获取前端页面代码,并将所述前端页面代码转换为源码或字节码;将所述源码输出至所述源码分析模块,或,将所述字节码输出至所述字节码分析模块。利用本发明实施例提供的war包分析器能够对war包进行分析,并得到war包中相关的元数据信息和关联数据信息。尤其是,利用本发明实施例提供的war包分析器能够实现对war包中的前端页面代码的分析,得到相关分析数据。
【附图说明】
[0023]为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0024]图1为本发明实施例提供了一种^?^包分析器的结构示意图;
[0025]图2为本发明实施例提供了另一种war包分析器的结构示意图。
【具体实施方式】
[0026]下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0027]代码分析工具是指以发现原始代码的规范性、逻辑性、安全性等方面编程缺陷为目标,不需要执行代码而对其原始代码或编译后代码进行分析并得到评估报告的工具。在进行应用时,代码分析工具通常按照既定的分析规则对存储于软件配置管理库中的代码进行分析并输出结果。
[0028]本发明实施例提供的war包分析器作为一种新的代码分析工具,能够实现对war包中代码的分析功能。
[0029]以下进行实施例具体内容的介绍。
[0030]本发明实施例提供了一种rar包分析器,参考图1,为本发明实施例提供的一种包分析器的结构示意图。
[0031]其中,所述rar包分析器100包括源码分析模块110或字节码分析模块120,还包括代码获取模块130和前端页面分析模块140。
[0032]所述代码获取模块130,用于获取待分析war包中的源码,并将所述源码输出至所述源码分析模块,或,用于获取待分析war包中的字节码,并将所述字节码输出至所述字节码分析模块。
[0033]实际应用中,所述代码获取模块130在获取待分析war包后,首先对其进行解压。由于war包中可能包括源码,所以,在待分析war包中包括源码时,所述代码获取模块130可以用于获取解压后的war包中的源码,并将获取到的源码输出至源码分析模块中。
[0034]另外,war包中还包括字节码,所述代码获取模块130还可以用于获取解压后war包中的字节码,并将其输出至字节码分析模块中。
[0035]值得注意的是,由于对war包中的源码或者字节码进行分析后得到的结果是相同的,所以,在为某个war包进行分析时,本发明实施例提供的war包分析器中的代码获取模块130可以仅用于在war包中包括源码的情况下,获取待分析war包中的源码,并将所述源码输出至所述源码分析模块;或者仅用于获取待分析war包中的字节码,并将所述字节码输出至所述字节码分析模块。
[0036]所述源码分析模块110,用于为源码构建抽象语法树,并根据所述抽象语法树获取所述源码中的元数据信息和关联数据信息。
[0037]实际应用中,源码分析模块110用于对输入的源码进行分析,具体的通过构建抽象语法树的方式,获取war包中源码的完整的元数据信息和关联数据信息。
[0038]本发明实施例中的元数据信息可以包含包名,类名,父类,继承的接口,类所属模块,类中的方法列表,方法的入参,出参方法抛出的异常信息,方法开始行数,方法结束行数,方法可被访问的范围等信息。而关联数据信息可以包括类以及方法间调用关系,一般包含调用类,调用方法,被调用类,被调用方法,访问次数,访问顺序等。值得指出的是,本发明实施例中war包分析器的各个模块获取的元数据信息和关联数据信息包含的内容可能不同。
[0039]实际应用中,所述源码分析模块110可以采用」3¥3(^解析工具实现,用于对」3¥3源码进行分析。具体的,首先利用javacc解析工具将java源码构建成抽象语法树,然后通过预先为抽象语法树编写的访问规则,从构建的抽象语法树中获取元数据信息和关联数据信息。其中,从抽象语法树中获取到的元数据信息包括所述抽象语法树的节点中属于类名、方法名等,关联数据信息包括所述抽象语法树具有连接关系的两个节点中属于方法之间的调用关系、类与方法的调用关系等。
[0040]所述字节码分析模块120,用于对字节码进行解析得到元数据信息和关联数据信息。
[0041]实际应用中,字节码分析模块120可以采用asm解析工具实现,用于对字节码进行分析。具体的,通过在字节码分析模块120中编写Visitor获取所述字节码中的元数据信息和关联数据信息。
[0042]所述前端页面分析模块140,用于从所述待分析war包中获取前端页面代码,并将所述前端页面代码转换为源码或字节码;将所述源码输出至所述源码分析模块,或,将所述字节码输出至所述字节码分析模块。
[0043]由于包中还包括前端页面代码,所以,本发明实施例的包分析器还包括前端页面分析模块140,用于对war包中的前端页面代码进行分析。具体的,所述前端页面分析模块140在获取待分析war包中的前端页面代码后,将其转换为源码或者字节码。如果将前端页面代码转化为源码,则将转化后的源码输出至所述源码分析模块110,以便所述源码分析模块110对其进行分析,得到前端页面代码中的元数据信息和关联数据信息。如果将前端页面代码转化为字节码,则将转化后的字节码输出至所述字节码分析模块120,以便所述字节码分析模块120对其进行分析,得到所述前端页面代码中的元数据信息和关联数据信息。
[0044]实际应用中,war包中通常包括前端JSP页面代码,所述前端页面分析模块140可以用于调用JSPC工具,将前端JSP页面代码转换成servlet的源码或字节码,然后将其输出至对应的分析模块。
[0045]本发明实施例提供的war包分析器中,包括源码分析模块或字节码分析模块,还包括代码获取模块和前端页面分析模块。所述代码获取模块,用于获取待分析war包中的源码,并将所述源码输出至所述源码分析模块,或,用于获取待分析war包中的字节码,并将所述字节码输出至所述字节码分析模块。所述源码分析模块,用于为源码构建抽象语法树,并根据所述抽象语法树获取所述源码中的元数据信息和关联数据信息。所述字节码分析模块,用于对字节码进行解析得到元数据信息和关联数据信息。所述前端页面分析模块,用于从所述待分析war包中获取前端页面代码,并将所述前端页面代码转换为源码或字节码;将所述源码输出至所述源码分析模块,或,将所述字节码输出至所述字节码分析模块。利用本发明实施例提供的war包分析器能够对war包进行分析,并得到war包中相关的元数据信息和关联数据信息。
[0046]尤其是,利用本发明实施例提供的包分析器能够实现对包中的前端页面代码的分析,得到相关分析数据。
[0047]为了进步完善war包分析器的功能,本发明实施例还提供了一种war包分析器,参考图2,为本发明实施例提供的另一种war包分析器的结构示意图。
[0048]其中,所述包分析器不仅包括图1中的各个模块,还包括数据表分析模块210,开发框架分析模块220,存储模块230,显示模块240和生成模块250。
[0049]所述数据表分析模块210,用于从所述代码获取模块130获取到的源码或字节码中,获取SQL代码片段,并对所述SQL代码片段进行解析得到方法与数据表的映射关系,所述方法与数据表的映射关系属于关联数据信息。
[0050]所述数据表分析模块210,还用于从数据库中,获取所述待分析war包中的数据表的元数据信息。
[0051]由于war包中还包括对数据表的调用代码,所以,本发明实施例提供的war包分析器中还包括数据表分析模块210,用于对war包中对数据表调用代码的分析。具体的,所述数据表分析模块210从所述代码获取模块130获取到的源码或字节码中获取SQL代码片段,对获取到的SQL代码片段进行分析,得到方法与数据表的映射关系等关联数据信息。另外,所述数据表分析模块210还可以从数据库中直接获取待分析rar包中数据表相关的元数据信息。
[0052]所述开发框架分析模块220,用于从所述待分析war包中获取开发框架的配置文件,并从所述配置文件中获取关联数据信息,所述关联数据信息包括类之间的调用关系、类与页面的调用关系。
[0053]所述开发框架分析模块220,具体用于从所述待分析war包中获取开发框架的配置文件,为所述配置文件构建结构树,并根据所述结构树获取关联数据信息,所述关联数据信息包括类之间的调用关系、类与页面的调用关系。
[0054]实际应用中,对war包的分析还包括对war包中开发框架的分析,所以,本发明实施例提供的war包分析器还包括开发框架分析模块220,用于获取待分析war包中开发框架的配置文件,并从所述配置文件中读取关联数据信息,具体的可以包括类之间的调用关系、类与页面的调用关系等。
[0055]具体实现过程中,所述开发框架分析模块220在获取待分析war包中开发框架的配置文件后,为该配置文件构建结构树,所述结构树能够体现该配置文件中各个元素的结构关系。然后,根据构建的结构树中各节点的关系,获取关联数据信息。
[0056]实际应用中,war包通常采用spring作为开发框架,所以本发明实施例提供的war包分析器中的开发框架分析模块220可以通过对spring的配置文件进行解析,得到对开发框架的关联数据信息。
[0057]本发明实施例提供的包分析器对war包分析后得到的分析数据是比较杂乱的,为了将其按照一定的格式保存到数据库,本发明实施例提供的war包分析器中还可以包括存储模块230。
[0058]具体的,所述存储模块230,用于将所述源码分析模块、所述字节码分析模块、所述数据表分析模块和所述开发框架分析模块中的元数据信息和关联数据信息,按照预设的存储规则如产品,版本等维度,存储于数据库中。
[0059]另外,为了将分析得到的元数据信息和关联数据信息以视图的形式形象的提供给用户,本发明实施例的war包分析器还包括显示模块240。
[0060]所述显示模块240,用于获取存储于数据库中的元数据信息和关联数据信息,并将所述元数据信息和所述关联数据信息转化为视图显示给用户。
[0061]实际应用中,视图的类型较多,其中包括基础类视图、度量类视图、规范类视图和分析类视图等,基础类视图是用于对war包的产品相关属性进行基础查询的视图。例如获取某方法内部向下的调用链,获取某批次的全量,增量代码等。度量类视图主要是用于对war包的产品的规模,复杂度进行度量。例如:某批次产品或内部的各类与方法个数,某批次产品的全量代码行数,增量代码行数。规范类视图主要是用于对war包的产品的规范性进行分析。例如获取跨层调用的方法,在act1n或jsp中直接调用数据库表,各部门和产品组可以结合本部门产品的具体编码规范,编写相关的分析sql进行数据检索。分析类视图是用于对war包的产品进行分析,该视图通过调用了基础类视图,度量类视图,规范类视图中的基础数据,对产品的各个维度(例如复杂性,可维护性,规范性,开发质量等)相关指标进行分析,便于产品的管理层能从宏观的角度看待某批次产品信息。
[0062]为了使得分析得到的数据信息能够为开发人员所用,本发明实施例的包分析器还包括生成模块250。
[0063]具体的,所述生成模块250,用于利用所述元数据信息和所述关联数据信息,生成UML图,所述UML图包括类图、状态图和时序图。
[0064]总之,本发明实施例提供的rar包分析器能够对wir包中的代码进行全面完整的分析,得到war包中相对全面的数据信息,为后续的产品分析设计奠定基础,且具有参考价值。
[0065]另外,由于jar包中一般仅包括源码或字节码,所以本发明实施例提供的war包分析器也能够完成对jar包的分析。具体的,利用war包分析器中的代码获取模块130,以及源码分析模块110或字节码分析模块120即可。实际应用中,所述代码获取模块130,用于获取jar包中的源码或字节码,并将源码输出至源码分析模块110处理,如果jar包中不包括源码,则将字节码输出至字节码分析模块120即可,最终,源码分析模块110或字节码分析模块120可以分析出该jar包中相关的数据信息。另外,本发明提供的war分析器中的存储模块230、显示模块240和生成模块250也能够分别用于对jar包的相关的数据信息进行存储、转化为视图以及生成UML图等操作。
[0066]需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0067]以上对本发明实施例所提供的一种包分析器进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在【具体实施方式】及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
【主权项】
1.一种war包分析器,其特征在于,所述war包分析器包括源码分析模块或字节码分析模块,还包括代码获取模块和前端页面分析模块; 所述代码获取模块,用于获取待分析war包中的源码,并将所述源码输出至所述源码分析模块,或,用于获取待分析war包中的字节码,并将所述字节码输出至所述字节码分析模块; 所述源码分析模块,用于为源码构建抽象语法树,并根据所述抽象语法树获取所述源码中的元数据信息和关联数据信息; 所述字节码分析模块,用于对字节码进行解析得到元数据信息和关联数据信息; 所述前端页面分析模块,用于从所述待分析war包中获取前端页面代码,并将所述前端页面代码转换为源码或字节码;将所述源码输出至所述源码分析模块,或,将所述字节码输出至所述字节码分析模块。2.根据权利要求1所述的war包分析器,其特征在于,所述war包分析器还包括数据表分析丰吴块; 所述数据表分析模块,用于从所述代码获取模块获取到的源码或字节码中,获取SQL代码片段,并对所述SQL代码片段进行解析得到方法与数据表的映射关系,所述方法与数据表的映射关系属于关联数据信息。3.根据权利要求2所述的war包分析器,其特征在于,所述数据表分析模块,还用于从数据库中,获取所述待分析war包中的数据表的元数据信息。4.根据权利要求1所述的war包分析器,其特征在于,所述war包分析器还包括开发框架分析模块; 所述开发框架分析模块,用于从所述待分析war包中获取开发框架的配置文件,并从所述配置文件中获取关联数据信息,所述关联数据信息包括类之间的调用关系、类与页面的调用关系。5.根据权利要求4所述的war包分析器,其特征在于,所述开发框架分析模块,具体用于从所述待分析war包中获取开发框架的配置文件,为所述配置文件构建结构树,并根据所述结构树获取关联数据信息,所述关联数据信息包括类之间的调用关系、类与页面的调用关系O6.根据权利要求1-5中任一所述的war包分析器,其特征在于,所述war包分析器还包括存储模块; 所述存储模块,用于将所述源码分析模块、所述字节码分析模块、所述数据表分析模块和所述开发框架分析模块中的元数据信息和关联数据信息,按照预设的存储规则存储于数据库中。7.根据权利要求6所述的war包分析器,其特征在于,所述war包分析器还包括显示模块; 所述显示模块,用于获取存储于数据库中的元数据信息和关联数据信息,并将所述元数据信息和所述关联数据信息转化为视图显示给用户。8.根据权利要求7所述的war包分析器,其特征在于,所述war包分析器还包括生成模块; 所述生成模块,用于利用所述元数据信息和所述关联数据信息,生成UML图,所述UML图包括类图、状态图和时序图。
【文档编号】G06F9/44GK105893052SQ201610249051
【公开日】2016年8月24日
【申请日】2016年4月20日
【发明人】操健, 杜宁宁
【申请人】中国银行股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1