CN113688045A - 一种二进制接口兼容性自动检查方法及装置 - Google Patents
一种二进制接口兼容性自动检查方法及装置 Download PDFInfo
- Publication number
- CN113688045A CN113688045A CN202110987655.2A CN202110987655A CN113688045A CN 113688045 A CN113688045 A CN 113688045A CN 202110987655 A CN202110987655 A CN 202110987655A CN 113688045 A CN113688045 A CN 113688045A
- Authority
- CN
- China
- Prior art keywords
- interface
- binary
- compatibility
- database
- checked
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 61
- 238000007689 inspection Methods 0.000 claims abstract description 13
- 238000012545 processing Methods 0.000 claims abstract description 13
- 230000015654 memory Effects 0.000 claims description 15
- 230000001960 triggered effect Effects 0.000 claims description 13
- 238000003672 processing method Methods 0.000 claims description 4
- 229910002056 binary alloy Inorganic materials 0.000 abstract description 3
- 230000010354 integration Effects 0.000 description 12
- 230000008569 process Effects 0.000 description 11
- 238000004458 analytical method Methods 0.000 description 8
- 238000010276 construction Methods 0.000 description 8
- 230000002085 persistent effect Effects 0.000 description 8
- 230000008859 change Effects 0.000 description 5
- 239000000047 product Substances 0.000 description 5
- 238000011161 development Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 230000006872 improvement Effects 0.000 description 3
- 230000007547 defect Effects 0.000 description 2
- 206010029412 Nightmare Diseases 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3608—Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种二进制接口兼容性自动检查方法及装置,方法包括:建立兼容性检查的数据库,所述数据库中预设二进制接口的兼容性信息和接口定义详情;建立二进制接口兼容性检查任务,并关联待检查二进制目标信息表;解析出所述待检查二进制目标列表内兼容性信息,执行检查任务;将待检查二进制目标列表内的接口版本与所述数据库中预设二进制接口的接口版本进行对比;若对比结果判定为兼容,检查结束;若对比结果判定为不兼容,通知任务相关人进行兼容性处理;若对比结果判定为待定,将待检查二进制目标列表内解析出的接口定义信息与所述数据库中预设二进制接口的接口定义详情进行兼容性判断。
Description
技术领域
本发明属于计算机通信领域,更具体地,涉及一种二进制接口兼容性自动检查方法及装置。
背景技术
在大型复杂的由C语言构建的产品中,二进制接口不兼容问题经常是产品级的噩梦,为产品的开发,工程升级,日常维护带来非常大的隐患。影响产品的快速迭代和交付,从而降低了产品整体的竞争力。
举例来说,二进制接口不兼容,虽然有可能在代码编译的时候能够通过,但在代码执行的时候,导致程序异常崩溃;延伸到软件模块的管理上,二进制不兼容导致无法只通过替换部分模块就修正软件系统中的BUG;二进制不兼容的问题,导致没有采取包管理的可行性,软件构建无可信赖的现有组件复用。
鉴于此,克服该现有技术所存在的缺陷是本技术领域亟待解决的问题。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种二进制接口兼容性自动检查方法及装置,其目的在于保障在软件项目开发阶段能够快速识别接口不兼容的情况,由此解决对接口兼容性的自动化检查,保证接口的兼容性能够得到有效监控的技术问题。
为实现上述目的,按照本发明的一个方面,提供了一种二进制接口兼容性自动检查方法,方法包括:
建立兼容性检查的数据库,所述数据库中预设二进制接口的兼容性信息和接口定义详情;
建立二进制接口兼容性检查任务,并关联待检查二进制目标信息表;
解析出所述待检查二进制目标列表内兼容性信息,执行检查任务;
将待检查二进制目标列表内的接口版本与所述数据库中预设二进制接口的接口版本进行对比;
若对比结果判定为兼容,检查结束;
若对比结果判定为不兼容,通知任务相关人进行兼容性处理;
若对比结果判定为待定,将待检查二进制目标列表内解析出的接口定义信息与所述数据库中预设二进制接口的接口定义详情进行兼容性判断。
作为对上述方案进一步的完善和补充,本发明还包括以下附加技术特征。
优选地,所述将待检查二进制目标列表的兼容性信息与所述数据库中预设二进制接口的兼容性信息进行对比,具体方法包括:
待检查二进制目标列表的主版本号与所述数据库中预设二进制接口的主版本号进行对比;
若待检查二进制目标列表的主版本号高于所述数据库预设二进制接口的主版本号,对比结果判定为兼容,则检查结束;
若待检查二进制目标列表的主版本号与所述数据库预设二进制接口的主版本号相同,对比结果判定为待定,将待检查二进制目标列表内解析出的接口定义信息与所述所述数据库中预设二进制接口的接口定义详情进行兼容性判断;
若待检查二进制目标列表的主版本号低于所述数据库预设二进制接口的主版本号,对比结果判定为不兼容,等待出具软件补丁或者补录遗留项目的兼容性信息。
优选地,所述将待检查二进制目标列表内解析出的接口定义信息与所述数据库中预设二进制接口的接口定义详情进行兼容性判断,具体方法包括:
若待检查二进制目标列表内解析出的接口定义信息与所述数据库中预设二进制接口的接口定义详情相同,则对比结果判定为兼容,检查结束;
若待检查二进制目标列表内解析出的接口定义信息与所述数据库中预设二进制接口的接口定义详情不相同,则对比结果判定为不兼容,通知任务相关人员进行兼容性处理。
优选地,所述待检查二进制目标列表的主版本号与所述数据库中预设二进制接口的主版本号进行对比,具体方法包括:
若所述数据库中预设二进制接口的兼容性信息和接口信息为空,则将待检查二进制目标的兼容性信息录入所述数据库中,并判定检查结果为兼容,检查结束。
优选地,所述建立兼容性检查的数据库,所述数据库中预设二进制接口的兼容性信息和接口定义详情,其中:
兼容性信息包括:接口名称、接口版本号、接口主版本号、接口次版本号、接口修订号;
接口定义详情包括:接口定义、接口地址、接口参数位置、接口参数类型、接口返回类型,接口参数数量。
优选地,所述关联待检查二进制目标列表,其中,关联待检查二进制目标列表的同时,检查任务中还关联待检查的软件源码在版本管理器中的地址。
优选地,所述解析待检查二进制目标的兼容性信息,具体方法包括:
对于Windows操作系统下的二进制目标,按照PE格式进行分析,并读取对应二进制目标相关的PDB文件,解析出二进制目标的兼容性信息;
对于Linux操作系统下的二进制目标,按照ELF格式进行分析,解析出二进制目标的兼容性信息。
优选地,所述执行检查任务,具体方法包括:执行检查任务由人工控制触发或定时自动触发。
优选地,所述若对比结果判定为不兼容,则通知任务相关人进行兼容性处理,具体处理方法包括:
消除不兼容的代码或者将不兼容的二进制目标主版本号升级到高于所述数据库内的最大主版本号。
按照本发明的另一方面,提供了一种二进制接口兼容性自动检查装置,装置包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被程序设置为执行权利要求1-9任一所述的二进制接口兼容性自动检查方法。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有如下有益效果:
基于Windows和Linux操作系统下二进制可执行文件的文件格式定义以及持续集成装置,在开发阶段实现了二进制目标的接口兼容性检查,通过技术手段自动识别不兼容的更改,解决了二进制编写的二进制模块版本号与实际兼容性管控困难的问题。
附图说明
图1是本实施例一中提供的一种二进制接口兼容性自动检查方法流程图;
图2是本实施例一中提供的一种二进制接口兼容性自动检查方法流程示意图;
图3是本实施例一中提供的一种二进制接口兼容性自动检查方法中对二进制目标兼容性信息进行版本匹配比较的流程示意图;
图4是本实施例一中提供的一种二进制接口兼容性自动检查方法中对接口信息进行对比的流程示意图;
图5是本实施例一中提供的一种二进制接口兼容性自动检查方法中解析出二进制目标接口参数的流程示意图;
图6是本实施例一中提供的一种二进制接口兼容性自动检查方法中发送兼容结果的流程示意图;
图7是本实施例一中提供的一种二进制接口兼容性自动检查方法的原理图;
图8是本实施例二中提供的一种二进制接口兼容性自动检查装置结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
在本发明的描述中,术语“内”、“外”、“纵向”、“横向”、“上”、“下”、“顶”、“底”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明而不是要求本发明必须以特定的方位构造和操作,因此不应当理解为对本发明的限制。
在本发明中,除非另有明确的规定和限定,第一特征在第二特征之“上”或之“下”可以包括第一和第二特征直接接触,也可以包括第一和第二特征不是直接接触而是通过它们之间的另外的特征接触。而且,第一特征在第二特征“之上”、“上方”和“上面”包括第一特征在第二特征正上方和斜上方,或仅仅表示第一特征水平高度高于第二特征。第一特征在第二特征“之下”、“下方”和“下面”包括第一特征在第二特征正下方和斜下方,或仅仅表示第一特征水平高度小于第二特征。
实施例一:
本实施例一提供了一种二进制接口兼容性自动检查方法,能够在软件项目开发阶段快速识别二进制接口是否与前一版本接口兼容。当发现二进制接口与前一版本不兼容后,兼容性检查系统立即向代码提交者以及项目中的关键角色发送邮件通知并阻止后续软件构建直到兼容性问题被修正。本实施例一中的数据库指代的是兼容性自动检查的数据库。本实施例一中兼容性自动检查的数据库存在于兼容性检查系统中,兼容性检查系统还包括兼容性检查模块,持续集成装置以及兼容性信息分析装置等。
本实施例一中的兼容性检查系统需要提前设置兼容性检查数据库,以及项目中待检查的目标二进制文件以及配置好持续集成装置中的检查任务。通过持续集成装置识别项目中代码文件的提交,持续集成装置取出对应版本管理器中最新的代码文件,执行项目中二进制文件的构建。
当完成项目二进制文件的构建后,基于二进制包管理装置,调用二进制接口兼容性模块进行软件项目中待检查的目标二进制兼容性分析。依据分析结果判定代码文件的变更是否具备二进制接口的二进制兼容性。依据上述方法达到对项目中二进制模块接口兼容性的自动化检查,保证兼容性检查系统中二进制接口的兼容性得到高效监控。本实施例一中的项目是指一个完整的软件项目。
所述方法包括以下步骤,如图1所示:
S101:建立兼容性检查的数据库,所述数据库中预设二进制接口的兼容性信息和接口定义详情。
首先在兼容性检查系统内配置一个兼容性检查数据库,在第一次检查前,在兼容性检查系统的数据库中建立好兼容性信息和接口信息,例如:项目信息表,二进制目标信息表,二进制目标接口信息表,二进制目标接口详细信息表。同时在该数据库中设置兼容性检查的专用用户名和密码。在第一次检查前建立好这个数据库后,后续的检查均不需要再重复配置该数据库。
管理员可以在兼容性检查系统中建立多个检查任务,每个检查任务可以定时执行、自动触发、也可以人工触发。每个检查任务存在区别,每个任务检查的是不同版本管理器上的代码,每个任务各自关联不同的版本管理器地址,当任务失败时,各自只阻断各自对应版本管理器地址上的构建,不影响其他任务关联的构建任务。
兼容性信息包括:二进制目标名称、二进制目标版本号(主版本号、次版本号和修订号)、二进制目标内的所有的接口定义名称和对应的接口地址。
接口定义详情包括:上述接口定义名称对应的详情,二进制目标内的接口定义包含:接口名称、接口返回类型,接口内所有接口参数类型定义。
S102:建立二进制接口兼容性检查任务,并关联待检查二进制目标列表。
在兼容性检查系统中的持续集成装置中建立二进制接口兼容性检查任务。检查任务中需要关联:待检查的软件源码在版本管理器中的地址以及待检查的二进制目标列表。
本实施例一中,建立兼容性检查的数据库时,待检查二进制目标信息表为空表,在建立了若干个检查任务之后,每个检查任务从版本管理器对应地址获取代码,任务执行触发对应的二进制目标构建,构建完成后,将二进制目标中的兼容性信息保存在了待检查二进制目标信息表中,上述过程中实现了任务,版本管理器,与待检查二进制目标信息表的关联。
为了持续集成装置取出该项目的源码,每个检查任务可以针对不同的项目。
S103:解析出所述待检查二进制目标列表内的兼容性信息,执行检查任务。
通过兼容性检查系统中的兼容性信息分析装置提取要执行检查任务的二进制目标列表内的兼容性信息,检查任务针对。这些信息包括:二进制目标名称、二进制目标版本号(主版本号、次版本号和修订号)、二进制目标内的接口定义、接口地址。其中,二进制目标内的接口定义包含:接口名称、接口返回类型,接口内所有接口参数类型定义。对于基于整型、短整型、长整型、单精度浮点型、双精度浮点型、字符型、布尔型和由上述类型构成的数组以及指针类型,视为基本参数类型。对于基本参数类型外的参数类型定义视为复杂类型。简单参数类型可以直接进行判断,复杂参数类型在实现上还需要进一步的查找符号表以及调试信息库。
检查任务的执行可以由人工在持续集成装置上触发,也可以由持续集成装置定时触发,还可以由持续集成装置检查版本管理器有代码提交后自动触发,所有二进制目标完成检查后生成任务兼容性检查结果。
S104:将待检查二进制目标列表内的接口版本与所述数据库中预设二进制接口的接口版本进行对比。
S105:若对比结果判定为兼容,则检查结束。
S106:若对比结果判定为不兼容,则通知任务相关人进行兼容性处理。
S107:若对比结果判定为待定,将待检查二进制目标列表内解析出的接口定义信息与所述数据库中预设二进制接口的接口定义详情进行兼容性判断。
待检查二进制目标列表的兼容性信息与兼容性检查数据库中预设二进制接口的兼容性信息以遍历的方式进行对比。
如果任意一个二进制目标检查结果是不兼容,那么认为当前检查任务执行结果是不兼容,通知任务相关的人员进行处理。对于不兼容的二进制目标,开发人员进行兼容性处理:消除不兼容的代码或者将二进制目标的主版本号升级到该模块当前最大主版本号+1。如果所有二进制目标检查结果都是兼容的,那么将本次所有的兼容性检查结果更新到数据库。通过邮件通知任务相关人,本次检查成功。
如图2所示,兼容性检查系统中完整的处理流程,包括以下步骤。
S201:首先建立数据库。并且预设二进制接口的兼容性信息和接口信息。
S202:建立二进制接口兼容性检查任务。
S203:触发检查任务执行。
S204:判断是否完成遍历。若是,执行步骤S205,若不是,执行步骤S206。
S205:通知检查结果。继续执行步骤S211。
S206:提取二进制目标兼容性信息。
S207:兼容性版本比较。
S208:判断兼容性是否为待定。若是,执行步骤S210,若不是,执行步骤S209。
S209:更新任务兼容性检查状态。
S210:接口定义详情兼容性比较。
S211:判断结果是否兼容。若是,执行步骤S213,若不是,执行步骤S212。
S212:设置标志,阻止构建。
S213:结束检查。
以上步骤作为图1的补充说明。管理员可以在兼容性检查数据库中建立多个检查任务,每个检查任务可以定时执行、自动触发、也可以人工触发。每个任务各自关联不同的版本管理器地址,当任务失败时,各自只阻断各自对应版本管理器地址上的构建,不影响其他任务关联的构建任务。
为了对单个二进制目标兼容性信息进行版本匹配比较,结合本发明实施例,还存在一种优选的实现方案,具体的,如图4所示,所述将待检查二进制目标列表的兼容性信息与兼容性检查数据库中预设二进制接口的兼容性信息进行对比,具体方法包括:
待检查二进制目标列表的主版本号与兼容性检查数据库中预设二进制接口的主版本号进行对比。
若待检查二进制目标列表的主版本号高于兼容性检查数据库预设二进制接口的主版本号,对比结果判定为兼容,则检查结束。
若待检查二进制目标列表的主版本号与兼容性检查数据库预设二进制接口的主版本号相同,对比结果判定为待定,将待检查二进制目标列表内解析出的接口定义信息与所述数据库中预设二进制接口的接口定义详情进行兼容性判断。
若待检查二进制目标列表的主版本号低于兼容性检查数据库预设二进制接口的主版本号,对比结果判定为不兼容,等待出具软件补丁或者补录遗留项目的兼容性信息。
当兼容性检查系统中检查任务,在获取了当前构建二进制目标的兼容性信息后,就与数据库中对应二进制目标的接口定义进行对比,过程如图4所示。如果数据库中没有被检查二进制目标的兼容性信息,则将本次检查的兼容性信息C1记入到数据库中,并判定该二进制目标兼容性检查通过。如果数据库中有对应二进制目标的兼容性记录C0,如果C1的主版本号高于C0中的主版本号,那么认为二进制目标的兼容性已主动变更,判定该二进制目标兼容性检查通过。如果C1的主版本号低于C0的主版本号,数据库中必然没有C1的主版本号+次版本号+补丁版本号(全版本号)作为关键字的记录,判定该二进制目标兼容性检查不通过,通知任务相关人员进行兼容性处理,此场景是相关人员需要出具软件补丁或者补录遗留项目的兼容性信息。软件补丁是对软件缺陷的修复,通常给出补丁以后,对应软件模块版本发生更新,以便管理。
如图3所示,二进制目标的接口版本进行对比流程包括以下步骤:
S301:检查开始。
S302:获取数据库中二进制兼容信息主版本号C0。
S303:判断数据库中是否已经存在有C0版本。若是,执行S305,若否,执行S304。
S304:将当前二进制目标兼容性信息C1录入数据库中,执行S310。
S305:比较C0和C1主版本号的大小。
S306:判断C1主版本号是否大于C0。若是,执行S310,若否,执行S307。
S307:判断C1主版本号是否小于C0。若是,执行S308,若否,执行S309。
S308:查询数据库中是否存在C1版本对应的记录。若是,执行S310,若否,执行S309。
S309:C1主版本号与C0主版本号相同,执行S311。
S310:判定通过,结果兼容。
S311:判定待定。
对于C1和C0的主版本号相同的情况,同样判定为兼容性待定,则需要进一步的进行二进制目标接口定义兼容性比较。
为了进行二进制目标接口定义兼容性比较,结合本发明实施例,还存在一种优选的实现方案,具体的,如图4所示,所述将待检查二进制目标列表内解析出的接口定义信息与所述数据库中预设二进制接口的接口定义详情进行兼容性判断,具体方法包括:
若待检查二进制目标列表内解析出的接口定义信息与所述数据库中预设二进制接口的接口定义详情相同,则对比结果判定为兼容,检查结束;
若待检查二进制目标列表内解析出的接口定义信息与所述数据库中预设二进制接口的接口定义详情不相同,则对比结果判定为不兼容,通知任务相关人员进行兼容性处理。
如图4所示,当C1和C0的主版本号相同的情况下,进行二进制目标接口定义兼容性比较包括以下步骤:
S401:检查开始。
S402:确定当前二进制目标的接口定义,并且与对比数据库中的接口定义进行对比。
S403:判断是否缺少接口定义。若是,执行S407,若否,执行S404。
S404:判断接口返回类型是否相同。若是,执行S405,若否,执行S407。
S405:判断接口参数是否相同。若是,执行S406,若否,执行S407。
S406:判定兼容。执行S408。
S407:判定不兼容。执行S408。
S408:检查结束。
对于二进制目标接口定义兼容性比较采取图4所示方法。将前一阶段获得的当前二进制目标兼容性信息C1与数据库中对应兼容性信息记录C0对比。如果两者完全一致,那么认为是前后兼容的;如果C1中缺少C0中的接口定义,或者C1中同一个接口名称的定义相比C0中的接口定义出现接口参数类型变更、接口参数位置变更、接口参数数量变更,接口地址变更中任一情况,那么认为C1与C0是不兼容的。兼容性检查系统会逐一比较上述条件,如果不匹配,则立即判断不兼容,兼容性检查系统会记录导致第一个不兼容结果的比较项。
为了不影响兼容性检查数据库中二进制接口的兼容性信息和接口信息最开始或者为空时的判定结果,结合本发明实施例,还存在一种优选的实现方案,具体的,所述待检查二进制目标列表的主版本号与兼容性检查数据库中预设二进制接口的主版本号进行对比,具体方法包括:
若兼容性检查数据库中预设二进制接口的兼容性信息和接口信息为空,则将待检查二进制目标的兼容性信息录入兼容性检查数据库中,并判定检查结果为兼容,检查结束。
结合本发明实施例,还存在一种优选的实现方案,具体的,所述建立兼容性检查的数据库,所述数据库中预设二进制接口的兼容性信息和接口定义详情,其中:
所述建立兼容性检查的数据库,数据库中预设二进制接口的兼容性信息和接口定义详情,其中:
兼容性信息包括:接口名称、接口版本号、接口主版本号、接口次版本号、接口修订号;
接口定义详情包括:接口定义、接口地址、接口参数位置、接口参数类型、接口返回类型,接口参数数量。
本实施例一中,兼容性信息具体包括:接口名称、接口版本号、接口主版本号、接口次版本号、接口修订号、二进制目标名称、二进制目标版本号(主版本号、次版本号和修订号)、二进制目标内的所有的接口定义名称和对应的接口地址。
本实施例一中,接口定义详情具体包括:接口定义、接口地址、接口参数位置、接口参数类型、接口返回类型,接口参数数量、二进制目标接口定义名称对应的详情,二进制目标内的接口定义包含:接口名称、接口返回类型,接口内所有接口参数类型定义。
为了从持续集成装置取出该项目的源码,使得每个检查任务针对不同的项目。结合本发明实施例,还存在一种优选的实现方案,具体的,所述在兼容性检查系统中建立二进制接口兼容性检查任务,并关联待检查二进制目标列表,其中,关联待检查二进制目标列表的同时,检查任务中还关联待检查的软件源码在版本管理器中的地址。
取出源码,是因为检测过程依赖将源码构建生成的二进制目标与数据库中原先的兼容性数据进行对比。
为了适应不同的操作系统,结合本发明实施例,还存在一种优选的实现方案,具体的,如图5所示,所述解析待检查二进制目标的兼容性信息,具体方法包括:
对于Windows操作系统下的二进制目标,按照PE格式进行分析,并读取对应二进制目标相关的PDB文件,解析出二进制目标的兼容性信息。
对于Linux操作系统下的二进制目标,按照ELF格式进行分析,解析出二进制目标的兼容性信息。
本实施例一中,如图5所示,对于Windows操作系统下的二进制目标,兼容性检查系统中的兼容性信息分析装置按照PE格式(Portable Executable可移植可执行文件格式,本文后续统一称为PE格式)进行分析,并读取对应二进制目标相关的PDB文件(ProgramDataBase程序数据库文件,本文后续统称PDB文件),解析出二进制目标的兼容性信息。
对于Linux操作系统下的二进制目标,兼容性检查系统中的兼容性信息分析装置按照ELF格式(Executable and Linkable File可移植可链接文件格式,本文后续统一称为ELF格式)进行分析,解析出二进制目标的兼容性信息。
如图5所示,解析待检查二进制目标的兼容性信息包括以下步骤:
S501:解析开始。
S502:判断是否是PE格式。若是,执行S503,若否,执行S506。
主流操作系统为Windows操作系统,判断二进制目标文件是否是PE格式即可判断操作系统的类型。
S503:解析PE文件格式。
S504:解析PE文件中接口类型。
S505:解析PDB文件中接口参数。
S506:解析ELF文件格式。
S507:解析ELF文件中接口类型。
S508:解析ELF文件中接口参数。
S509:解析结束。
解析的过程中首先对文件格式进行判断,若文件格式是PE格式,解析PE文件版本,再解析PE文件中接口的类型,继续解析对应二进制目标相关的PDB文件中接口参数,直至得到接口定义详情,解析结束。
若文件格式是ELF格式,需要首先解析ELF文件版本,再解析ELF文件中接口类型,直至得到接口定义详情,解析结束。
为了便于执行检查任务,结合本发明实施例,还存在一种优选的实现方案,具体的,所述执行检查任务,具体方法包括:
执行检查任务由人工控制触发或定时自动触发。
检查任务的执行可以由人工在持续集成装置上触发,也可以由持续集成装置定时触发,还可以由持续集成装置检查版本管理器有代码提交后自动触发,对所有待检查二进制目标完成检查后生成任务兼容性检查结果。
为了消除不兼容的问题,结合本发明实施例,还存在一种优选的实现方案,具体的,所述若对比结果判定为不兼容,则通知任务相关人进行兼容性处理,具体处理方法包括:
消除不兼容的代码或者将不兼容的二进制目标主版本号升级到高于兼容性检查数据库内的最大主版本号。
如图6所示,对于兼容性的检查流程包括以下步骤:
S601:检查开始。
本实施例一中,兼容性检查系统中的兼容性检查模块用于检查版本管理器上取出的代码模块。
S602:判断代码模块是否完成兼容性检查。如没有完成兼容性检查,执行S603。若完成兼容性检查,执行S606。
S603:比较代码模块的兼容性。
兼容性的比较内容包括二进制接口主版本的兼容性信息判断和接口信息兼容性判断两部分。
S604:判断结果是否兼容。若每个代码模块结果是兼容的,执行S602。若有任一代码模块结果不是兼容的,执行S605。
S605:发送不兼容通知,执行S607。如果任意一个代码模块的二进制目标检查结果是不兼容,那么认为当前检查任务执行失败,通过兼容性检查系统中的持续集成装置可以采取例如邮件、短信或电话的方式通知任务相关的人员进行处理。对于不兼容的二进制目标,需要开发人员将二进制目标的主版本号升级。
当步骤检查结果为不兼容时,本实施例一中的兼容性检查系统在持续集成装置中设置兼容性警告标志,阻止当前任务关联的其他构建任务执行,直到这个任务后续检查结果为兼容或者兼容性警告标志被人工清除。
S606:发送兼容通知,执行S607。
如果所有代码模块的二进制目标检查结果都是兼容的,那么将本次所有的兼容性检查结果更新到数据库。通过兼容性检查系统中的持续集成装置可以采取例如邮件、短信或电话的方式通知任务相关人,本次检查成功。
S607:兼容性检查流程结束,执行S607。
如图7所示,描述了兼容性检查系统整体构成原理图,由管理员用户在兼容性检查系统初次运行前建立好兼容性检查数据库,然后管理员用户在数据库中配置兼容性检查任务,设置好对应版本管理器配置。管理员用户完成配置上述数据后,保持到持续集成装置。持续集成装置基于对版本管理器的自动触发或者管理员用户手动触发兼容性检查。当总体检查结果为兼容,那么更新兼容性数据库,允许后续构建;如果不兼容则通知兼容性检查系统管理员和开发人员。兼容性检查系统管理员和开发人员确认后,由开发人员调整二进制目标的版本,解决兼容性检查系统报告的兼容性问题。解决问题后,兼容性检查系统检查确认后,放行后续的构建。
实施例二:
如图8所示,是本发明实施例的基于一种二进制接口兼容性自动检查装置示意图。本实施例的一种二进制接口兼容性自动检查装置包括一个或多个处理器21以及存储器22。其中,图8中以一个处理器21为例。
处理器21和存储器22可以通过总线或者其他方式连接,图8中以通过总线连接为例。
存储器22作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序和非易失性计算机可执行程序,如实施例一中的二进制接口兼容性自动检查方法。处理器21通过运行存储在存储器22中的非易失性软件程序和指令,从而执行二进制接口兼容性自动检查方法。
存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器22可选包括相对于处理器21远程设置的存储器,这些远程存储器可以通过网络连接至处理器21。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
所述程序指令/模块存储在所述存储器22中,当被所述一个或者多个处理器21执行时,执行上述实施例一中的一种二进制接口兼容性自动检查方法,例如,执行以上描述的图1至图7所示的各个步骤。
值得说明的是,上述装置和兼容性检查系统内的模块、单元之间的信息交互、执行过程等内容,由于与本发明的处理方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
本领域普通技术人员可以理解实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,Random AccessMemory)、磁盘或光盘等。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种二进制接口兼容性自动检查方法,其特征在于,方法包括:
建立兼容性检查的数据库,所述数据库中预设二进制接口的兼容性信息和接口定义详情;
建立二进制接口兼容性检查任务,并关联待检查二进制目标信息表;
解析出所述待检查二进制目标列表内兼容性信息,执行检查任务;
将待检查二进制目标列表内的接口版本与所述数据库中预设二进制接口的接口版本进行对比;
若对比结果判定为兼容,检查结束;
若对比结果判定为不兼容,通知任务相关人进行兼容性处理;
若对比结果判定为待定,将待检查二进制目标列表内解析出的接口定义信息与所述数据库中预设二进制接口的接口定义详情进行兼容性判断。
2.如权利要求1所述的二进制接口兼容性自动检查方法,其特征在于,所述将待检查二进制目标列表的兼容性信息与所述数据库中预设二进制接口的兼容性信息进行对比,具体方法包括:
待检查二进制目标列表的主版本号与所述数据库中预设二进制接口的主版本号进行对比;
若待检查二进制目标列表的主版本号高于所述数据库预设二进制接口的主版本号,对比结果判定为兼容,则检查结束;
若待检查二进制目标列表的主版本号与所述数据库预设二进制接口的主版本号相同,对比结果判定为待定,将待检查二进制目标列表内解析出的接口定义信息与所述所述数据库中预设二进制接口的接口定义详情进行兼容性判断;
若待检查二进制目标列表的主版本号低于所述数据库预设二进制接口的主版本号,对比结果判定为不兼容,等待出具软件补丁或者补录遗留项目的兼容性信息。
3.如权利要求2所述的二进制接口兼容性自动检查方法,其特征在于,所述将待检查二进制目标列表内解析出的接口定义信息与所述数据库中预设二进制接口的接口定义详情进行兼容性判断,具体方法包括:
若待检查二进制目标列表内解析出的接口定义信息与所述数据库中预设二进制接口的接口定义详情相同,则对比结果判定为兼容,检查结束;
若待检查二进制目标列表内解析出的接口定义信息与所述数据库中预设二进制接口的接口定义详情不相同,则对比结果判定为不兼容,通知任务相关人员进行兼容性处理。
4.如权利要求2所述的二进制接口兼容性自动检查方法,其特征在于,所述待检查二进制目标列表的主版本号与所述数据库中预设二进制接口的主版本号进行对比,具体方法包括:
若所述数据库中预设二进制接口的兼容性信息和接口信息为空,则将待检查二进制目标的兼容性信息录入所述数据库中,并判定检查结果为兼容,检查结束。
5.如权利要求1所述的二进制接口兼容性自动检查方法,其特征在于,所述建立兼容性检查的数据库,所述数据库中预设二进制接口的兼容性信息和接口定义详情,其中:
兼容性信息包括:接口名称、接口版本号、接口主版本号、接口次版本号、接口修订号;
接口定义详情包括:接口定义、接口地址、接口参数位置、接口参数类型、接口返回类型,接口参数数量。
6.如权利要求1所述的二进制接口兼容性自动检查方法,其特征在于,所述关联待检查二进制目标列表,其中,关联待检查二进制目标列表的同时,检查任务中还关联待检查的软件源码在版本管理器中的地址。
7.如权利要求1所述的二进制接口兼容性自动检查方法,其特征在于,所述解析待检查二进制目标的兼容性信息,具体方法包括:
对于Windows操作系统下的二进制目标,按照PE格式进行分析,并读取对应二进制目标相关的PDB文件,解析出二进制目标的兼容性信息;
对于Linux操作系统下的二进制目标,按照ELF格式进行分析,解析出二进制目标的兼容性信息。
8.如权利要求1所述的二进制接口兼容性自动检查方法,其特征在于,所述执行检查任务,具体方法包括:
执行检查任务由人工控制触发或定时自动触发。
9.如权利要求1所述的二进制接口兼容性自动检查方法,其特征在于,所述若对比结果判定为不兼容,则通知任务相关人进行兼容性处理,具体处理方法包括:
消除不兼容的代码或者将不兼容的二进制目标主版本号升级到高于所述数据库内的最大主版本号。
10.一种二进制接口兼容性自动检查装置,其特征在于,装置包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被程序设置为执行权利要求1-9任一所述的二进制接口兼容性自动检查方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110987655.2A CN113688045B (zh) | 2021-08-26 | 2021-08-26 | 一种二进制接口兼容性自动检查方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110987655.2A CN113688045B (zh) | 2021-08-26 | 2021-08-26 | 一种二进制接口兼容性自动检查方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113688045A true CN113688045A (zh) | 2021-11-23 |
CN113688045B CN113688045B (zh) | 2024-03-22 |
Family
ID=78582881
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110987655.2A Active CN113688045B (zh) | 2021-08-26 | 2021-08-26 | 一种二进制接口兼容性自动检查方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113688045B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114328270A (zh) * | 2022-01-20 | 2022-04-12 | 重庆长安汽车股份有限公司 | 基于soa服务化的ota升级检测方法及可读存储介质 |
CN114510267A (zh) * | 2022-04-20 | 2022-05-17 | 麒麟软件有限公司 | 基于Linux系统的程序ABI接口兼容性计算方法 |
CN115934157A (zh) * | 2022-12-28 | 2023-04-07 | 中国人民解放军国防科技大学 | 软件依赖范围自动推断方法、装置、计算机设备和存储器 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6971093B1 (en) * | 2001-05-14 | 2005-11-29 | Cisco Technology, Inc. | Techniques for maintaining compatibility of a software core module and an interacting module |
US20070168957A1 (en) * | 2005-11-08 | 2007-07-19 | Red Hat, Inc. | Certifying a software application based on identifying interface usage |
CN105843614A (zh) * | 2016-03-22 | 2016-08-10 | 东南大学 | 一种面向软件演化的代码可兼容性评估方法 |
CN110750460A (zh) * | 2019-10-24 | 2020-02-04 | 深圳前海微众银行股份有限公司 | 浏览器兼容性的检测方法、装置、设备及可读存储介质 |
CN111897687A (zh) * | 2020-08-19 | 2020-11-06 | 百度时代网络技术(北京)有限公司 | 接口校验方法、装置、设备及存储介质 |
CN112148540A (zh) * | 2020-08-27 | 2020-12-29 | 云账户技术(天津)有限公司 | 接口参数校验方法、装置、电子设备和可读存储介质 |
-
2021
- 2021-08-26 CN CN202110987655.2A patent/CN113688045B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6971093B1 (en) * | 2001-05-14 | 2005-11-29 | Cisco Technology, Inc. | Techniques for maintaining compatibility of a software core module and an interacting module |
US20070168957A1 (en) * | 2005-11-08 | 2007-07-19 | Red Hat, Inc. | Certifying a software application based on identifying interface usage |
CN105843614A (zh) * | 2016-03-22 | 2016-08-10 | 东南大学 | 一种面向软件演化的代码可兼容性评估方法 |
CN110750460A (zh) * | 2019-10-24 | 2020-02-04 | 深圳前海微众银行股份有限公司 | 浏览器兼容性的检测方法、装置、设备及可读存储介质 |
CN111897687A (zh) * | 2020-08-19 | 2020-11-06 | 百度时代网络技术(北京)有限公司 | 接口校验方法、装置、设备及存储介质 |
CN112148540A (zh) * | 2020-08-27 | 2020-12-29 | 云账户技术(天津)有限公司 | 接口参数校验方法、装置、电子设备和可读存储介质 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114328270A (zh) * | 2022-01-20 | 2022-04-12 | 重庆长安汽车股份有限公司 | 基于soa服务化的ota升级检测方法及可读存储介质 |
CN114328270B (zh) * | 2022-01-20 | 2024-05-03 | 重庆长安汽车股份有限公司 | 基于soa服务化的ota升级检测方法及可读存储介质 |
CN114510267A (zh) * | 2022-04-20 | 2022-05-17 | 麒麟软件有限公司 | 基于Linux系统的程序ABI接口兼容性计算方法 |
CN115934157A (zh) * | 2022-12-28 | 2023-04-07 | 中国人民解放军国防科技大学 | 软件依赖范围自动推断方法、装置、计算机设备和存储器 |
CN115934157B (zh) * | 2022-12-28 | 2024-04-16 | 中国人民解放军国防科技大学 | 软件依赖范围自动推断方法、装置、计算机设备和存储器 |
Also Published As
Publication number | Publication date |
---|---|
CN113688045B (zh) | 2024-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113688045A (zh) | 一种二进制接口兼容性自动检查方法及装置 | |
US7676804B2 (en) | Systems and method for remotely modifying software on a work machine | |
CN101268620B (zh) | 用于管理设备管理对象的设备管理系统和方法 | |
CN108196878B (zh) | 应用程序安装包的生成方法、装置、电子设备及存储介质 | |
US9575830B2 (en) | Run-time error repairing method, device and system | |
CN107748668B (zh) | 一种应用程序升级的方法及装置 | |
US20150220318A1 (en) | Wireless firmware upgrades to an alarm security panel | |
CN110442371B (zh) | 一种发布代码的方法、装置、介质及计算机设备 | |
CN109088773B (zh) | 故障自愈方法、装置、服务器及存储介质 | |
CN113434180B (zh) | 应用的数据处理方法、装置、服务器和存储介质 | |
JP2007241872A (ja) | ネットワーク上のコンピュータ資源の変更監視プログラム | |
CN105159718A (zh) | 固件升级方法及装置 | |
CN108280347A (zh) | 一种病毒扫描的方法及装置 | |
CN106815051A (zh) | 一种嵌入式设备的固件升级方法、装置及验钞器 | |
CN115543429A (zh) | 项目环境的搭建方法、电子设备及计算机可读存储介质 | |
CN106529281B (zh) | 一种可执行文件处理方法及装置 | |
US11327740B2 (en) | Method and device for managing aircraft equipment software configurations | |
CN116775061A (zh) | 微服务应用的部署方法、装置、设备及存储介质 | |
CN111061642B (zh) | 一种基于用户数据的全自动竞赛数据处理系统以及方法 | |
CN110659052B (zh) | 网络设备中系统软件的更新方法、系统及可读存储介质 | |
TWI850664B (zh) | 用於核心帳務主機的程式碼輔助管理裝置與方法 | |
CN113127027A (zh) | 一种基于分布式版本控制系统的版本更新方法及装置 | |
KR100910802B1 (ko) | 장치관리 시스템 및 장치관리 객체 관리 방법 | |
CN115167886B (zh) | 一种自动适配方法、装置、存储介质及电子设备 | |
US20240098144A1 (en) | Communication apparatus, information processing method, and information processing apparatus |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |