CN115080012A - class文件冲突识别方法、装置、电子设备和存储介质 - Google Patents

class文件冲突识别方法、装置、电子设备和存储介质 Download PDF

Info

Publication number
CN115080012A
CN115080012A CN202210744107.1A CN202210744107A CN115080012A CN 115080012 A CN115080012 A CN 115080012A CN 202210744107 A CN202210744107 A CN 202210744107A CN 115080012 A CN115080012 A CN 115080012A
Authority
CN
China
Prior art keywords
class
file
files
class file
conflict
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210744107.1A
Other languages
English (en)
Inventor
周小亮
邹亮亮
杨坤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ping An Bank Co Ltd
Original Assignee
Ping An Bank Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ping An Bank Co Ltd filed Critical Ping An Bank Co Ltd
Priority to CN202210744107.1A priority Critical patent/CN115080012A/zh
Publication of CN115080012A publication Critical patent/CN115080012A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/72Code refactoring

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

本申请提供一种class文件冲突识别方法、装置、电子设备和存储介质,其中,class文件冲突识别方法包括:构建目标项目的jar包,目标项目的jar包由不同依赖jar包构成;基于解压指令对目标项目的jar包进行解压,得到若干个解压文件;遍历若干个解压文件,得到目标项目的所有文件路径列表;基于目标项目的所有文件路径列表,筛选出若干个class文件的路径信息;基于每个class文件的路径信息判断每个class文件是否与其他class文件重复,若是则计算重复class文件中每个class文件的Md5;基于重复class文件中每个class文件的Md5验证重复class文件是否冲突。本申请能够识别不同依赖jar包中的冲突class文件。

Description

class文件冲突识别方法、装置、电子设备和存储介质
技术领域
本申请涉及计算机技术领域,具体而言,涉及一种class文件冲突识别方法、装置、电子设备和存储介质。
背景技术
在java项目的第三方依赖包升个级过程中,不同的jar包可能存在相同的class,java的父类委托加载机制,再带来巨大便利性和效率提升的同时的同时也带来不少麻烦,最直接的就是类冲突造成的问题.
目前,传统处理方式通过使用maven插件的方式可以排除掉相同的jar包,不同的版本在同一个项目中被引用引起的冲突,但是对于不同的jar包,可能存在的class冲突目前并没有很好的解决办法,只有等到程序运行后,调用到class后,出现相关异常,根据异常排查相关class冲突。
发明内容
本申请实施例的目的在于提供一种class文件冲突识别方法、装置、电子设备和存储介质,用以识别不同依赖jar包中的冲突class文件。
第一方面,本发明提供一种class文件冲突识别方法,该方法包括:
构建目标项目的jar包,目标项目的jar包由不同依赖jar包构成;
基于解压指令对目标项目的jar包进行解压,得到若干个解压文件;
遍历若干个解压文件,得到目标项目的所有文件路径列表;
基于目标项目的所有文件路径列表,筛选出若干个class文件的路径信息;
基于每个class文件的路径信息判断每个class文件是否与其他class文件重复,若是则计算重复class文件中每个class文件的Md5;
基于重复class文件中每个class文件的Md5验证重复class文件是否冲突。
在本申请实施例中,通过构建目标项目的jar包,并对对目标项目的jar包进行解压,进而得到若干个解压文件,其中,目标项目的jar包由不同依赖jar包构成;遍历若干个解压文件,得到目标项目的所有文件路径列表;进而基于目标项目的所有文件路径列表,能够筛选出若干个class文件的路径信息,进而能够基于每个class文件的路径信息判断每个class文件是否与其他class文件重复,其中,若是则计算重复class文件中每个class文件的Md5,进而基于重复class文件中每个class文件的Md5验证重复class文件是否冲突,最终实现识别class文件之间是否冲突,从而对存在的class冲突进行快速准确定位,从而提升研发效果、提升代码安全性和稳定性。
同时,与现有技术相比,本申请能够在基于每个class文件的路径信息判断每个class文件是否与其他class文件重复的基础上,结合class文件的Md5验证重复class文件是否冲突,进而能够将Md5不一样的class文件排除,从而能够缩小class重复的排查范围。
在可选的实施方式中,基于每个class文件的路径信息判断每个class文件是否与其他class文件重复,包括:
基于每个class文件的路径信息提取每个class文件的文件名称和每个class文件的依赖包名称;
基于每个class文件的文件名称和每个class文件的依赖包名称,判断每个class文件是否与其他class文件重复;
当class文件的依赖包名称和class文件的文件名称分别与其他class文件的依赖包名称、其他class文件的文件名称相同时,确定class文件与其他class文件重复。
在本可选的实施方式中,基于每个class文件的路径信息能够提取每个class文件的文件名称和每个class文件的依赖包名称,进而能够基于每个class文件的文件名称和每个class文件的依赖包名称,判断每个class文件是否与其他class文件重复,进而当class文件的依赖包名称和class文件的文件名称分别与其他class文件的依赖包名称、其他class文件的文件名称相同时,能够确定class文件与其他class文件重复。
在可选的实施方式中,计算重复class文件中每个class文件的Md5,包括:
调用第三方依赖库提供的Md5计算指令计算重复class文件中每个class文件的Md5。
在本可选的实施方式中,通过调用第三方依赖库提供的Md5计算指令能够计算重复class文件中每个class文件的Md5。
在可选的实施方式中,基于每个class文件的路径信息提取每个class文件的文件名称和每个class文件的依赖包名称,包括:
查询每个class文件的路径信息中的最后一个路径表示符号,并截取每个class文件的路径信息中的最后一个路径表示符号之后的首个信息,以作为每个class文件的文件名称;
查询每个class文件的路径信息中的倒数第二个路径表示符号;
截取每个class文件的路径信息中的最后一个路径表示符号,与每个class文件的路径信息中的倒数第二个路径表示符号之间的信息,以作为每个class文件的依赖包名称。
在本可选的实施方式中,通过查询每个class文件的路径信息中的最后一个路径表示符号,并截取每个class文件的路径信息中的最后一个路径表示符号之后的首个信息,能够得到每个class文件的文件名称;同时,通过查询每个class文件的路径信息中的倒数第二个路径表示符号和截取每个class文件的路径信息中的最后一个路径表示符号,与每个class文件的路径信息中的倒数第二个路径表示符号之间的信息,能够得到每个class文件的依赖包名称。
在可选的实施方式中,在基于重复class文件中每个class文件的Md5验证重复class文件是否冲突之后,方法还包括:
当重复class文件冲突时,基于每个class文件的文件名称、每个class文件的依赖包名称,每个class文件的Md5,生成冲突列表;
将冲突列表与存储在云端的历史冲突列表进行比对;
当冲突列表与历史冲突列表相同时,确定历史冲突列表的线上运行时间和历史冲突列表的异常产生记录;
当历史冲突列表的线上运行时间大于等于预设阈值,且历史冲突列表的异常产生记录表征历史冲突列表在运行时无异常产生时,则将冲突列表标注为历史存在的低风险低优先级列表。
在本可选的实施方式中,通过将冲突列表与存储在云端的历史冲突列表进行比对,进而当冲突列表与历史冲突列表相同时,能够确定历史冲突列表的线上运行时间和历史冲突列表的异常产生记录,进而当历史冲突列表的线上运行时间大于等于预设阈值,且历史冲突列表的异常产生记录表征历史冲突列表在运行时无异常产生时,能够将冲突列表标注为历史存在的低风险低优先级列表。
在可选的实施方式中,本申请的方法方法还包括:
当冲突列表与历史冲突列表不相同时,将冲突列表标注为历史不存在的高风险高优先级列表。
在可选的实施方式中,构建目标项目的jar包,包括:
读取项目对象模型提供的操作指令;
基于项目对象模型提供的操作指令构建目标项目的jar包;
以及,在基于解压指令对目标项目的jar包进行解压之前,方法还包括:
基于python脚本引入zipFile依赖库;
基于zipFile依赖库调用解压指令。
在本可选的实施方式中,通过读取项目对象模型提供的操作指令,进而能够基于项目对象模型提供的操作指令构建目标项目的jar包。另一方面,利用基于python脚本引入zipFile依赖库,能够基于调用解压指令。
第二方面,本发明提供一种class文件冲突识别装置,本申请实施例的装置包括:
构建模块,用于构建目标项目的jar包,目标项目的jar包由不同依赖jar包构成;
解压模块,用于基于解压指令对目标项目的jar包进行解压,得到若干个解压文件;
遍历模块,用于遍历若干个解压文件,得到目标项目的所有文件路径列表;
筛选模块,用于基于目标项目的所有文件路径列表,筛选出若干个class文件的路径信息;
判断模块,用于基于每个class文件的路径信息判断每个class文件是否与其他class文件重复,若是则计算重复class文件中每个class文件的Md5;
验证模块,用于基于重复class文件中每个class文件的Md5验证重复class文件是否冲突。
本申请第二方面的装置通过执行本申请的方法,能够构建目标项目的jar包,并对对目标项目的jar包进行解压,进而得到若干个解压文件,其中,目标项目的jar包由不同依赖jar包构成;遍历若干个解压文件,得到目标项目的所有文件路径列表;进而基于目标项目的所有文件路径列表,能够筛选出若干个class文件的路径信息,进而能够基于每个class文件的路径信息判断每个class文件是否与其他class文件重复,其中,若是则计算重复class文件中每个class文件的Md5,进而基于重复class文件中每个class文件的Md5验证重复class文件是否冲突,最终实现识别class文件之间是否冲突,从而对存在的class冲突进行快速准确定位,从而提升研发效果、提升代码安全性和稳定性。
同时,与现有技术相比,本申请能够在基于每个class文件的路径信息判断每个class文件是否与其他class文件重复的基础上,结合class文件的Md5验证重复class文件是否冲突,进而能够将Md5不一样的class文件排除,从而能够缩小class重复的排查范围。
第三方面,本发明提供一种电子设备,包括:
处理器;以及
存储器,配置用于存储机器可读指令,指令在由处理器执行时,执行如前述实施方式任一项的class文件冲突识别方法。
本申请第三方面电子设备通过执行本申请的方法,能够构建目标项目的jar包,并对对目标项目的jar包进行解压,进而得到若干个解压文件,其中,目标项目的jar包由不同依赖jar包构成;遍历若干个解压文件,得到目标项目的所有文件路径列表;进而基于目标项目的所有文件路径列表,能够筛选出若干个class文件的路径信息,进而能够基于每个class文件的路径信息判断每个class文件是否与其他class文件重复,其中,若是则计算重复class文件中每个class文件的Md5,进而基于重复class文件中每个class文件的Md5验证重复class文件是否冲突,最终实现识别class文件之间是否冲突,从而对存在的class冲突进行快速准确定位,从而提升研发效果、提升代码安全性和稳定性。
同时,与现有技术相比,本申请能够在基于每个class文件的路径信息判断每个class文件是否与其他class文件重复的基础上,结合class文件的Md5验证重复class文件是否冲突,进而能够将Md5不一样的class文件排除,从而能够缩小class重复的排查范围。
第四方面,本发明提供一种存储介质,存储介质存储有计算机程序,计算机程序被处理器执行如前述实施方式任一项的class文件冲突识别方法。
本申请第四方面的存储介质通过执行本申请的方法,能够构建目标项目的jar包,并对对目标项目的jar包进行解压,进而得到若干个解压文件,其中,目标项目的jar包由不同依赖jar包构成;遍历若干个解压文件,得到目标项目的所有文件路径列表;进而基于目标项目的所有文件路径列表,能够筛选出若干个class文件的路径信息,进而能够基于每个class文件的路径信息判断每个class文件是否与其他class文件重复,其中,若是则计算重复class文件中每个class文件的Md5,进而基于重复class文件中每个class文件的Md5验证重复class文件是否冲突,最终实现识别class文件之间是否冲突,从而对存在的class冲突进行快速准确定位,从而提升研发效果、提升代码安全性和稳定性。
同时,与现有技术相比,本申请能够在基于每个class文件的路径信息判断每个class文件是否与其他class文件重复的基础上,结合class文件的Md5验证重复class文件是否冲突,进而能够将Md5不一样的class文件排除,从而能够缩小class重复的排查范围。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1是本申请实施例公开的一种class文件冲突识别方法的流程示意图;
图2是本申请实施例公开的一种class文件冲突识别装置的结构示意图;
图3是本申请实施例公开的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
请参阅图1,图1是本申请实施例公开的一种class文件冲突识别方法的流程示意图,其中,。如图1所示,本申请实施例的class文件冲突识别方法包括以下步骤:
101、构建目标项目的jar包,目标项目的jar包由不同依赖jar包构成;
102、基于解压指令对目标项目的jar包进行解压,得到若干个解压文件;
103、遍历若干个解压文件,得到目标项目的所有文件路径列表;
104、基于目标项目的所有文件路径列表,筛选出若干个class文件的路径信息;
105、基于每个class文件的路径信息判断每个class文件是否与其他class文件重复,若是则计算重复class文件中每个class文件的Md5;
106、基于重复class文件中每个class文件的Md5验证重复class文件是否冲突。
在本申请实施例中,通过构建目标项目的jar包,并对对目标项目的jar包进行解压,进而得到若干个解压文件,其中,目标项目的jar包由不同依赖jar包构成;遍历若干个解压文件,得到目标项目的所有文件路径列表;进而基于目标项目的所有文件路径列表,能够筛选出若干个class文件的路径信息,进而能够基于每个class文件的路径信息判断每个class文件是否与其他class文件重复,其中,若是则计算重复class文件中每个class文件的Md5,进而基于重复class文件中每个class文件的Md5验证重复class文件是否冲突,最终实现识别class文件之间是否冲突,从而对存在的class冲突进行快速准确定位,从而提升研发效果、提升代码安全性和稳定性。
同时,与现有技术相比,本申请能够在基于每个class文件的路径信息判断每个class文件是否与其他class文件重复的基础上,结合class文件的Md5验证重复class文件是否冲突,进而能够将Md5不一样的class文件排除,从而能够缩小class重复的排查范围。
在本申请实施例中,针对步骤101,目标项目是指采用JAVA编程语言生成JAVA项目。
在本申请实施例中,针对步骤101,目标项目可以引用多个依赖jar包,例如,目标项目可以引用A jar包、B jar包、C jar包,其中,A jar包、B jar包、C jar包存储在云端,并通过maven工具可被目标项目所应用。需要说明的是,关于maven工具请参阅现有技术,本申请实施例对其不作赘述。
在本申请实施例中,针对步骤102,示例性,假设,目标项目引用A jar包、B jar包、C jar包,则通过对A jar包、B jar包、C jar包进行解压,能够得到A jar包中的文件、B jar包中的文件、C jar包中的文件,具体地,如果A jar包包括a1、a2文件,B jar包包括b1、b2、b3、C jar包包括c1文件,则最终得到a1、a2、b1、b2、b3、c1文件,其中,a1、a2、b1、b2、b3、c1文件为解压文件。
在本申请实施例中,针对步骤103,示例性地,由于a1、a2、b1、b2、b3、c1文件中的每个文件都有文件路径,例如,a1文件的文件路径可以://project/test/a1.class,因此没通过依次读取a1、a2、b1、b2、b3、c1中每个文件的路径,可得到目标项目的所有文件路径列表。
在本申请实施例中,针对步骤104,由于目标项目可能引用了采用其他编程语言或基于其他编译环境的文件,例如,目标项目引用test.h文件,因此需要对这类文件进行过滤,从而筛选出若干个class文件并得到若干个class文件的路径信息,其中,由于class文件以“.class”为后缀,因此,通过判断文件的后缀能够筛选出class文件。
在本申请实施例中,class文件的Md5是指class文件的Md5码,其中,每个class文件的Md5码具有唯一性,因此,通过class文件的Md5码,能够判断两个class文件是否冲突,其中,如果两个class文件的Md5码相同,则两个class文件冲突,如果两个class文件的Md5码不相同,则两个class文件不冲突。
在可选的实施方式中,步骤105:基于每个class文件的路径信息判断每个class文件是否与其他class文件重复,包括以下子步骤:
基于每个class文件的路径信息提取每个class文件的文件名称和每个class文件的依赖包名称;
基于每个class文件的文件名称和每个class文件的依赖包名称,判断每个class文件是否与其他class文件重复;
当class文件的依赖包名称和class文件的文件名称分别与其他class文件的依赖包名称、其他class文件的文件名称相同时,确定class文件与其他class文件重复。
在本可选的实施方式中,基于每个class文件的路径信息能够提取每个class文件的文件名称和每个class文件的依赖包名称,进而能够基于每个class文件的文件名称和每个class文件的依赖包名称,判断每个class文件是否与其他class文件重复,进而当class文件的依赖包名称和class文件的文件名称分别与其他class文件的依赖包名称、其他class文件的文件名称相同时,能够确定class文件与其他class文件重复。
在可选的实施方式中,计算重复class文件中每个class文件的Md5,包括:
调用第三方依赖库提供的Md5计算指令计算重复class文件中每个class文件的Md5。
在本可选的实施方式中,通过调用第三方依赖库提供的Md5计算指令能够计算重复class文件中每个class文件的Md5。
在可选的实施方式中,步骤:基于每个class文件的路径信息提取每个class文件的文件名称和每个class文件的依赖包名称,包括以下子步骤:
查询每个class文件的路径信息中的最后一个路径表示符号,并截取每个class文件的路径信息中的最后一个路径表示符号之后的首个信息,以作为每个class文件的文件名称;
查询每个class文件的路径信息中的倒数第二个路径表示符号;
截取每个class文件的路径信息中的最后一个路径表示符号,与每个class文件的路径信息中的倒数第二个路径表示符号之间的信息,以作为每个class文件的依赖包名称。
在本可选的实施方式中,具体地,class文件的路径信息中的路径表示符号为“/”。
在本可选的实施方式中,通过查询每个class文件的路径信息中的最后一个路径表示符号,并截取每个class文件的路径信息中的最后一个路径表示符号之后的首个信息,能够得到每个class文件的文件名称;同时,通过查询每个class文件的路径信息中的倒数第二个路径表示符号和截取每个class文件的路径信息中的最后一个路径表示符号,与每个class文件的路径信息中的倒数第二个路径表示符号之间的信息,能够得到每个class文件的依赖包名称。
在可选的实施方式中,在步骤:基于重复class文件中每个class文件的Md5验证重复class文件是否冲突之后,本申请实施例的方法还包括以下步骤:
当重复class文件冲突时,基于每个class文件的文件名称、每个class文件的依赖包名称,每个class文件的Md5,生成冲突列表;
将冲突列表与存储在云端的历史冲突列表进行比对;
当冲突列表与历史冲突列表相同时,确定历史冲突列表的线上运行时间和历史冲突列表的异常产生记录;
当历史冲突列表的线上运行时间大于等于预设阈值,且历史冲突列表的异常产生记录表征历史冲突列表在运行时无异常产生时,则将冲突列表标注为历史存在的低风险低优先级列表。
在本可选的实施方式中,预设阈值可以是5天,也可以是1个月。进一步地,冲突列表可以是[{class的文件名称,classd的MD5码,依赖jar名字};{其他class}],进一步地,如果冲突列表已经存在了相同的class文件的信息,则将后一个class文件的信息摒弃,避免冲突列表中包括相同的class文件的信息。
在可选的实施方式中,具体地,通过预设的API(Application ProgrammingInterface,应用程序编程接口),能够获取存储在云端的历史冲突列表。
在本可选的实施方式中,通过将冲突列表与存储在云端的历史冲突列表进行比对,进而当冲突列表与历史冲突列表相同时,能够确定历史冲突列表的线上运行时间和历史冲突列表的异常产生记录,进而当历史冲突列表的线上运行时间大于等于预设阈值,且历史冲突列表的异常产生记录表征历史冲突列表在运行时无异常产生时,能够将冲突列表标注为历史存在的低风险低优先级列表,从而能够便于相关人员将历史存在的低风险低优先级列表筛选出。
在可选的实施方式中,本申请实施例的方法还包括以下步骤:
调用预设的API将当前的冲突列表上传至云端,使得云端将当前的冲突列表作为历史冲突列表。
在可选的实施方式中,本申请实施例的方法还包括以下步骤:
当冲突列表与历史冲突列表不相同时,将冲突列表标注为历史不存在的高风险高优先级列表。
在本可选的实施方式中,通过将冲突列表标注为历史不存在的高风险高优先级列表,便于相关人员优选处理高风险高优先级列表。
在可选的实施方式中,构建目标项目的jar包,包括:
读取项目对象模型提供的操作指令;
基于项目对象模型提供的操作指令构建目标项目的jar包;
以及,在基于解压指令对目标项目的jar包进行解压之前,本申请实施例的方法还包括:
基于python脚本引入zipFile依赖库;
基于zipFile依赖库调用解压指令。
在本可选的实施方式中,通过读取项目对象模型提供的操作指令,进而能够基于项目对象模型提供的操作指令构建目标项目的jar包。另一方面,利用基于python脚本引入zipFile依赖库,能够基于调用解压指令。
需要说明的是,项目对象模型是指maven工具,其中,maven工具提供了mvn cleanpackage这一操作指令,通过基于该操作指令能够构建目标项目的jar包。
实施例二
请参阅图2,图2是本申请实施例公开的一种class文件冲突识别装置的结构示意图,其中,如图2所示,本申请实施例的装置包括以下功能模块:
构建模块201,用于构建目标项目的jar包,目标项目的jar包由不同依赖jar包构成;
解压模块202,用于基于解压指令对目标项目的jar包进行解压,得到若干个解压文件;
遍历模块203,用于遍历若干个解压文件,得到目标项目的所有文件路径列表;
筛选模块204,用于基于目标项目的所有文件路径列表,筛选出若干个class文件的路径信息;
判断模块205,用于基于每个class文件的路径信息判断每个class文件是否与其他class文件重复,若是则计算重复class文件中每个class文件的Md5;
验证模块206,用于基于重复class文件中每个class文件的Md5验证重复class文件是否冲突。
本申请实施例的装置通过执行本申请的方法,能够构建目标项目的jar包,并对对目标项目的jar包进行解压,进而得到若干个解压文件,其中,目标项目的jar包由不同依赖jar包构成;遍历若干个解压文件,得到目标项目的所有文件路径列表;进而基于目标项目的所有文件路径列表,能够筛选出若干个class文件的路径信息,进而能够基于每个class文件的路径信息判断每个class文件是否与其他class文件重复,其中,若是则计算重复class文件中每个class文件的Md5,进而基于重复class文件中每个class文件的Md5验证重复class文件是否冲突,最终实现识别class文件之间是否冲突,从而对存在的class冲突进行快速准确定位,从而提升研发效果、提升代码安全性和稳定性。
同时,与现有技术相比,本申请能够在基于每个class文件的路径信息判断每个class文件是否与其他class文件重复的基础上,结合class文件的Md5验证重复class文件是否冲突,进而能够将Md5不一样的class文件排除,从而能够缩小class重复的排查范围。
实施例三
请参阅图3,图3是本申请实施例公开的一种电子设备的结构示意图,如图3所示,本申请实施例的电子设备包括:
处理器301;以及
存储器302,配置用于存储机器可读指令,指令在由处理器301执行时,执行如前述实施方式任一项的class文件冲突识别方法。
本申请实施例的电子设备通过执行本申请的方法,能够构建目标项目的jar包,并对对目标项目的jar包进行解压,进而得到若干个解压文件,其中,目标项目的jar包由不同依赖jar包构成;遍历若干个解压文件,得到目标项目的所有文件路径列表;进而基于目标项目的所有文件路径列表,能够筛选出若干个class文件的路径信息,进而能够基于每个class文件的路径信息判断每个class文件是否与其他class文件重复,其中,若是则计算重复class文件中每个class文件的Md5,进而基于重复class文件中每个class文件的Md5验证重复class文件是否冲突,最终实现识别class文件之间是否冲突,从而对存在的class冲突进行快速准确定位,从而提升研发效果、提升代码安全性和稳定性。
同时,与现有技术相比,本申请能够在基于每个class文件的路径信息判断每个class文件是否与其他class文件重复的基础上,结合class文件的Md5验证重复class文件是否冲突,进而能够将Md5不一样的class文件排除,从而能够缩小class重复的排查范围。
实施例四
本申请实施例提供一种存储介质,存储介质存储有计算机程序,计算机程序被处理器执行如前述实施方式任一项的class文件冲突识别方法。
本申请实施例的存储介质通过执行本申请的方法,能够构建目标项目的jar包,并对对目标项目的jar包进行解压,进而得到若干个解压文件,其中,目标项目的jar包由不同依赖jar包构成;遍历若干个解压文件,得到目标项目的所有文件路径列表;进而基于目标项目的所有文件路径列表,能够筛选出若干个class文件的路径信息,进而能够基于每个class文件的路径信息判断每个class文件是否与其他class文件重复,其中,若是则计算重复class文件中每个class文件的Md5,进而基于重复class文件中每个class文件的Md5验证重复class文件是否冲突,最终实现识别class文件之间是否冲突,从而对存在的class冲突进行快速准确定位,从而提升研发效果、提升代码安全性和稳定性。
同时,与现有技术相比,本申请能够在基于每个class文件的路径信息判断每个class文件是否与其他class文件重复的基础上,结合class文件的Md5验证重复class文件是否冲突,进而能够将Md5不一样的class文件排除,从而能够缩小class重复的排查范围。
在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
需要说明的是,功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
以上仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (10)

1.一种class文件冲突识别方法,其特征在于,所述方法包括:
构建目标项目的jar包,所述目标项目的jar包由不同依赖jar包构成;
基于解压指令对所述目标项目的jar包进行解压,得到若干个解压文件;
遍历所述若干个解压文件,得到所述目标项目的所有文件路径列表;
基于所述目标项目的所有文件路径列表,筛选出若干个class文件的路径信息;
基于每个所述class文件的路径信息判断每个所述class文件是否与其他所述class文件重复,若是则计算重复class文件中每个所述class文件的Md5;
基于所述重复class文件中每个所述class文件的Md5验证所述重复class文件是否冲突。
2.如权利要求1所述的方法,其特征在于,所述基于每个所述class文件的路径信息判断每个所述class文件是否与其他所述class文件重复,包括:
基于每个所述class文件的路径信息提取每个所述class文件的文件名称和每个所述class文件的依赖包名称;
基于每个所述class文件的文件名称和每个所述class文件的依赖包名称,判断每个所述class文件是否与其他所述class文件重复;
当所述class文件的依赖包名称和所述class文件的文件名称分别与其他所述class文件的依赖包名称、其他所述class文件的文件名称相同时,确定所述class文件与其他所述class文件重复。
3.如权利要求1所述的方法,其特征在于,所述计算重复class文件中每个所述class文件的Md5,包括:
调用第三方依赖库提供的Md5计算指令计算重复class文件中每个所述class文件的Md5。
4.如权利要求3所述的方法,其特征在于,所述基于每个所述class文件的路径信息提取每个所述class文件的文件名称和每个所述class文件的依赖包名称,包括:
查询每个所述class文件的路径信息中的最后一个路径表示符号,并截取每个所述class文件的路径信息中的最后一个路径表示符号之后的首个信息,以作为每个所述class文件的文件名称;
查询每个所述class文件的路径信息中的倒数第二个路径表示符号;
截取每个所述class文件的路径信息中的最后一个路径表示符号,与每个所述class文件的路径信息中的倒数第二个路径表示符号之间的信息,以作为每个所述class文件的依赖包名称。
5.如权利要求4所述的方法,其特征在于,在所述基于所述重复class文件中每个所述class文件的Md5验证所述重复class文件是否冲突之后,所述方法还包括:
当所述重复class文件冲突时,基于每个所述class文件的文件名称、每个所述class文件的依赖包名称,每个所述class文件的Md5,生成冲突列表;
将所述冲突列表与存储在所述云端的历史冲突列表进行比对;
当所述冲突列表与所述历史冲突列表相同时,确定所述历史冲突列表的线上运行时间和所述历史冲突列表的异常产生记录;
当所述历史冲突列表的线上运行时间大于等于预设阈值,且所述历史冲突列表的异常产生记录表征所述历史冲突列表在运行时无异常产生时,则将所述冲突列表标注为历史存在的低风险低优先级列表。
6.如权利要求5所述的方法,其特征在于,所述方法还包括:
当所述冲突列表与所述历史冲突列表不相同时,将所述冲突列表标注为历史不存在的高风险高优先级列表。
7.如权利要求1所述的方法,其特征在于,所述构建目标项目的jar包,包括:
读取项目对象模型提供的操作指令;
基于所述项目对象模型提供的操作指令构建所述目标项目的jar包;
以及,在所述基于解压指令对所述目标项目的jar包进行解压之前,所述方法还包括:
基于python脚本引入zipFile依赖库;
基于所述zipFile依赖库调用所述解压指令。
8.一种class文件冲突识别装置,其特征在于,所述装置包括:
构建模块,用于构建目标项目的jar包,所述目标项目的jar包由不同依赖jar包构成;
解压模块,用于基于解压指令对所述目标项目的jar包进行解压,得到若干个解压文件;
遍历模块,用于遍历所述若干个解压文件,得到所述目标项目的所有文件路径列表;
筛选模块,用于基于所述目标项目的所有文件路径列表,筛选出若干个class文件的路径信息;
判断模块,用于基于每个所述class文件的路径信息判断每个所述class文件是否与其他所述class文件重复,若是则计算重复class文件中每个所述class文件的Md5;
验证模块,用于基于所述重复class文件中每个所述class文件的Md5验证所述重复class文件是否冲突。
9.一种电子设备,其特征在于,包括:
处理器;以及
存储器,配置用于存储机器可读指令,所述指令在由所述处理器执行时,执行如权利要求1-7任一项所述的class文件冲突识别方法。
10.一种存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序被处理器执行如权利要求1-7任一项所述的class文件冲突识别方法。
CN202210744107.1A 2022-06-27 2022-06-27 class文件冲突识别方法、装置、电子设备和存储介质 Pending CN115080012A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210744107.1A CN115080012A (zh) 2022-06-27 2022-06-27 class文件冲突识别方法、装置、电子设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210744107.1A CN115080012A (zh) 2022-06-27 2022-06-27 class文件冲突识别方法、装置、电子设备和存储介质

Publications (1)

Publication Number Publication Date
CN115080012A true CN115080012A (zh) 2022-09-20

Family

ID=83256555

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210744107.1A Pending CN115080012A (zh) 2022-06-27 2022-06-27 class文件冲突识别方法、装置、电子设备和存储介质

Country Status (1)

Country Link
CN (1) CN115080012A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117436086A (zh) * 2023-10-26 2024-01-23 华中科技大学 一种基于知识图谱的软件供应链安全分析方法及系统

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117436086A (zh) * 2023-10-26 2024-01-23 华中科技大学 一种基于知识图谱的软件供应链安全分析方法及系统

Similar Documents

Publication Publication Date Title
CN110474900B (zh) 一种游戏协议测试方法及装置
JP2007148728A (ja) ポリシ制御方法、装置及びプログラム
CN113287096A (zh) 用于失败代码验证的测试结果分类
JP2016099857A (ja) 不正プログラム対策システムおよび不正プログラム対策方法
CN112817935A (zh) 基于字段类型的数据处理方法、装置、设备及存储介质
CN115080012A (zh) class文件冲突识别方法、装置、电子设备和存储介质
CN111695093A (zh) 基于iOS应用的加固方法、电子装置及存储介质
CN110287700B (zh) 一种iOS应用安全分析方法及装置
CN109543409B (zh) 用于检测恶意应用及训练检测模型的方法、装置及设备
CN113297357B (zh) 业务流程数据的异步处理方法和装置
CN110888791A (zh) 一种日志处理方法、装置、设备和存储介质
CN114661423A (zh) 集群配置检测方法、装置、计算机设备及存储介质
CN116107789A (zh) 一种监测、分析应用故障原因的方法及存储介质
CN108536577B (zh) 程序代码信息处理方法及装置
CN114021133A (zh) 代码处理方法、装置、电子设备和存储介质
CN114021127A (zh) 入侵防御数据处理方法、装置及计算机设备、存储介质
CN110648219B (zh) 一种银行交易系统标准化输入区的方法和装置
CN114492324A (zh) 组件数据统计方法及装置
CN110674491B (zh) 用于安卓应用的实时取证的方法、装置和电子设备
CN111736848A (zh) 包冲突定位方法、装置、电子设备及可读存储介质
CN113760765B (zh) 代码测试方法、装置、电子设备和存储介质
CN117076546B (zh) 数据处理方法、终端设备及计算机可读存储介质
CN116483735B (zh) 一种代码变更的影响分析方法、装置、存储介质及设备
CN115328920A (zh) 批量数据异常处理方法、装置、计算机设备及存储介质
CN115509543A (zh) 确定文档有效性的方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination