CN108334335B - 一种软件源代码版本确定方法及装置 - Google Patents
一种软件源代码版本确定方法及装置 Download PDFInfo
- Publication number
- CN108334335B CN108334335B CN201810304326.1A CN201810304326A CN108334335B CN 108334335 B CN108334335 B CN 108334335B CN 201810304326 A CN201810304326 A CN 201810304326A CN 108334335 B CN108334335 B CN 108334335B
- Authority
- CN
- China
- Prior art keywords
- version
- software
- subset
- source code
- version number
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明实施例提供的一种软件源代码版本确定方法及装置,属于计算机技术领域。该方法包括获取待检测源代码版本的软件所输出的检测文件;基于预设版本集合中的每个版本号所对应的软件对检测文件分别进行识别;获取版本集合中满足预设要求的一个或多个版本号,并将一个或多个版本号生成第一子集合;判断第一子集合是否符合预设规则;若是,获取预设版本集合中的每个版本号所对应的软件所输出的识别文件;记录待检测源代码版本的软件能够识别所述识别文件所对应的第二子集合,第二子集合包括至少一个版本号;基于第一子集合与所述第二子集合生成目标版本号,并将所述目标版本号作为所述待检测源代码版本的软件的目标版本。
Description
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种软件源代码版本确定方法及装置。
背景技术
随着开源模式的大量普及,许多厂商通常会采用两种策略去发布其程序:
A.开源+闭源模式:将程序的部分源代码使用一个特定的开源许可协议(如GNUGeneral Public License,GPL)进行开源;并且同时发布一个完整的版本,这个版本的源代码并不对外提供;
B.基于开源模式:程序的一部分代码直接使用开源的代码,最终对外提供的程序不提供源代码。
然而不管使用上面的哪一种模式进行发布,上述程序的部分代码存在公开的源代码,另一方面,其他厂商在发布程序时,需要对这个未开发源代码的产品进行兼容,其需要明确所使用的开源代码的版本。然而现有的定位源代码版本的方法:要么是直接通过程序中包含的“版本号”等信息进行确认,要么是通过对源代码的版本进行持续的跟踪,了解每一个版本的变更,然而无论采用什么方式,都无法在节约人力的前提下快速准确确定源代码的版本。
发明内容
本发明提供的一种软件源代码版本确定方法及装置,旨在改善上述问题。
本发明提供的一种软件源代码版本确定方法,包括:获取待检测源代码版本的软件所输出的检测文件;基于预设版本集合中的每个版本号所对应的软件对所述检测文件分别进行识别;获取所述版本集合中满足预设要求的一个或多个版本号,并将所述一个或多个版本号生成第一子集合;判断所述第一子集合是否符合预设规则;若是,获取所述预设版本集合中的每个版本号所对应的软件所输出的识别文件;记录所述待检测源代码版本的软件能够识别所述识别文件所对应的第二子集合,所述第二子集合包括至少一个版本号;基于所述第一子集合与所述第二子集合生成目标版本号,并将所述目标版本号作为所述待检测源代码版本的软件的目标版本。
可选地,所述的判断所述第一子集合是否符合预设规则,之后还包括:若否,获取所述第一子集合中的每个版本号所对应的软件所输出的第二识别文件;记录所述待检测源代码版本的软件能够识别所述第二识别文件所对应的版本号;将所述版本号作为所述待检测源代码版本的软件所对应的目标版本号。
可选地,所述的基于预设版本集合中的每个版本号所对应的软件对所述检测文件分别进行识别,包括:获取预设版本集合中的每个版本号所对应的源代码;将每个所述版本号所对应的源代码编译为可执行文件;调用每个所述可执行文件对所述检测文件分别进行处理。
可选地,所述的获取所述版本集合中满足预设要求的一个或多个版本号,并将所述一个或多个版本号生成第一子集合,包括:获取每个所述可执行文件对所述检测文件分别进行处理后的M个处理结果,所述M为整数;获取所述M个处理结果中的N个目标匹配信息,所述N小于或等于所述M;获取N个所述目标匹配信息所对应的N个版本号;将N个所述版本号生成第一子集合。
可选地,所述的基于所述第一子集合与所述第二子集合生成目标版本号,并将所述目标版本号作为所述待检测源代码版本的软件的目标版本,包括:获取所述第一子集合与所述第二子集合的交集;将所述交集所对应的版本号作为所述待检测源代码版本的软件所对应的目标版本。
本发明提供的一种软件源代码版本确定装置,包括:数据输入单元,用于获取待检测源代码版本的软件所输出的检测文件;第一处理单元,用于基于预设版本集合中的每个版本号所对应的软件对所述检测文件分别进行识别;第一获取单元,用于获取所述版本集合中满足预设要求的一个或多个版本号,并将所述一个或多个版本号生成第一子集合;第二处理单元,用于判断所述第一子集合是否符合预设规则;第三处理单元,用于若是,获取所述预设版本集合中的每个版本号所对应的软件所输出的识别文件;第二获取单元,用于记录所述待检测源代码版本的软件能够识别所述识别文件所对应的第二子集合,所述第二子集合包括至少一个版本号;第四数据处理单元,用于基于所述第一子集合与所述第二子集合生成目标版本号,并将所述目标版本号作为所述待检测源代码版本的软件的目标版本。
可选地,所述第二处理单元,之后还包括:第五数据处理单元,用于若否,获取所述第一子集合中的每个版本号所对应的软件所输出的第二识别文件;数据识别单元,用于记录所述待检测源代码版本的软件能够识别所述第二识别文件所对应的版本号;数据标记单元,用于将所述版本号作为所述待检测源代码版本的软件所对应的目标版本号。
可选地,所述第一处理单元具体用于:获取预设版本集合中的每个版本号所对应的源代码;将每个所述版本号所对应的源代码编译为可执行文件;调用每个所述可执行文件对所述检测文件分别进行处理。
可选地,所述第一获取单元具体用于:获取每个所述可执行文件对所述检测文件分别进行处理后的M个处理结果,所述M为整数;获取所述M个处理结果中的N个目标匹配信息,所述N小于或等于所述M;获取N个所述目标匹配信息所对应的N个版本号;将N个所述版本号生成第一子集合。
可选地,所述第四数据处理单元具体用于:获取所述第一子集合与所述第二子集合的交集;将所述交集所对应的版本号作为所述待检测源代码版本的软件所对应的目标版本。
上述本发明提供的一种软件源代码版本确定方法及装置,通过获取待检测源代码版本的软件所输出的检测文件;再基于预设版本集合中的每个版本号所对应的软件对所述检测文件分别进行识别;并获取所述版本集合中满足预设要求的一个或多个版本号,并将所述一个或多个版本号生成第一子集合;再判断所述第一子集合是否符合预设规则;在第一子集合符合预设规则时,获取所述预设版本集合中的每个版本号所对应的软件所输出的识别文件;然后记录所述待检测源代码版本的软件能够识别所述识别文件所对应的第二子集合,所述第二子集合包括至少一个版本号;最后基于所述第一子集合与所述第二子集合生成目标版本号,并将所述目标版本号作为所述待检测源代码版本的软件的目标版本。从而实现自动对待检测软件的版本号进行确定的同时,提高了准确性以及效率,大大降低了人工处理的时间,进而实现了在节约人力的前提下,提高了对待检测软件的版本号的准确确定。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明实施例提供的一种电子设备的结构框图;
图2为本发明第一实施例提供的软件源代码版本确定方法的流程图;
图3为本发明第二实施例提供的软件源代码版本确定方法的流程图;
图4为本发明第三实施例提供的软件源代码版本确定装置的功能模块示意图;
图5为本发明第四实施例提供的软件源代码版本确定装置的功能模块示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,为本发明实施例提供的一种电子设备的结构框图。所述电子设备300包括软件源代码版本确定装置、存储器302、存储控制器303、处理器304及外设接口305。
所述存储器302、存储控制器303、处理器304及外设接口305各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。所述软件源代码版本确定装置包括至少一个可以软件或固件(firmware)的形式存储于所述存储器302中或固化在所述电子设备300的操作系统(operating system,OS)中的软件功能模块。所述处理器304用于执行存储器302中存储的可执行模块,例如所述软件源代码版本确定装置包括的软件功能模块或计算机程序。
其中,存储器302可以是,但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-Only Memory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。其中,存储器302用于存储程序,所述处理器304在接收到执行指令后,执行所述程序,前述本发明实施例任一实施例揭示的流过程定义的服务器100所执行的方法可以应用于处理器304中,或者由处理器304实现。
处理器304可能是一种集成电路芯片,具有信号的处理能力。上述的处理器304可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述外设接口305将各种输入/输入装置耦合至处理器304以及存储器302。在一些实施例中,外设接口305、处理器304以及存储控制器303可以在单个芯片中实现。在其他一些实例中,他们可以分别由独立的芯片实现。
请参阅图2,是本发明第一实施例提供的软件源代码版本确定方法的流程图。下面将对图2所示的具体流程进行详细阐述。
步骤S101,获取待检测源代码版本的软件所输出的检测文件。
例如,当该待检测源代码版本的软件为office里面的word程序时,其输出的为docx文件,即该docx文件为该检测文件。又如,当该待检测源代码版本的软件为Xcode的编译器时,其输出一个bitcode文件,即所述bitcode文件即为该检测文件。在此,不作具体限定。
步骤S102,基于预设版本集合中的每个版本号所对应的软件对所述检测文件分别进行识别。
其中,所述预设版本集合为待检测源代码版本的软件所对应的已经公的所有版本的版本号的集合。例如,待检测源代码版本的软件X已经有的版本号包括s1,s2..sn,则该版本集合即为{s1,s2..sn}。
作为一种实施方式,获取预设版本集合中的每个版本号所对应的源代码,如通过从源代码的仓库(git、svn等)获取预设版本集合中的每个版本号所对应的源代码;将每个所述版本号所对应的源代码编译为可执行文件;调用每个所述可执行文件对所述检测文件分别进行处理。
步骤S103,获取所述版本集合中满足预设要求的一个或多个版本号,并将所述一个或多个版本号生成第一子集合。
其中,所述预设要求是指能够正常读取所述检测文件,如程序正常结束、日志输出正常、文件创建正常、输出文件大小正常等。
作为一种实施方式,获取每个可执行文件对所述检测文件分别进行处理后的M个处理结果,所述M为整数,其中,该可执行文件是指每个所述版本号所对应的源代码所编译的;获取所述M个处理结果中的N个目标匹配信息,所述N小于或等于所述M;获取N个所述目标匹配信息所对应的N个版本号;将N个所述版本号生成第一子集合。其中,所述目标匹配信息为处理结果中显示为正常或正确的信息所对应的处理结果。如当前输出的处理结果有10个,其中5个处理结果显示为正常,则该5个中的每个处理结果所显示的信息即为目标匹配信息。
步骤S104,判断所述第一子集合是否符合预设规则。
作为一种实施方式,当所述第一子集合中的版本号的个数大于或等于预设值,如大于或等于版本集合中版本号的总数的一半时,表示该第一子集合符合预设规则。反之,则该第一子集合不符合预设规则。
作为另一种实施方式,获取用户输入的控制指令,基于所述控制指令判断该第一子集合是否符合预设规则,如当控制指令所携带的信息为否时,表示该第一子集合符合预设规则。当控制指令所携带的信息为是时,则该第一子集合不符合预设规则。在此,不作具体限定。
步骤S105,若是,获取所述预设版本集合中的每个版本号所对应的软件所输出的识别文件。
作为一种实施方式,在所述第一子集合符合预设规则时,将预设版本集合中的每个版本号所对应的软件分别进行处理,如创建,并输出识别文件。例如,当该待检测源代码版本的软件为office里面的word程序时,将word的每个版本分别创建该版本的word所对应的格式的文件,即为识别文件。
作为另一种实施方式,在所述第一子集合符合预设规则时,将预设版本集合中的每个版本号所对应的软件对所述检测文件分别进行处理,如读取,并输出识别文件。例如,当该待检测源代码版本的软件为office里面的word程序时,将word的每个版本分别用来打开该检测文件,在打开后,进行另存为该版本的word所对应的格式的文件,即为识别文件。
作为一种实施方式,步骤S105与步骤S103可以采用同步执行方式进行执行,如多线程同步执行,从而加快处理速度,节约了处理时间。
步骤S106,记录所述待检测源代码版本的软件能够识别所述识别文件所对应的第二子集合,所述第二子集合包括至少一个版本号。
通过所述待检测源代码版本的软件来对每个识别文件进行识别处理,如打开该识别文件的方式进行处理,获取能够正常打开该识别文件所对应的版本号,并一一记录该版本号,将所记录的版本号作为第二子集合。其中,正常打开是指打开该识别文件时不会报错或者是打开后的数据格式与原来的一样,或者是排版等。在此,不作具体限定。
步骤S107,基于所述第一子集合与所述第二子集合生成目标版本号,并将所述目标版本号作为所述待检测源代码版本的软件的目标版本。
作为一种实施方式,获取所述第一子集合与所述第二子集合的交集;将所述交集所对应的版本号作为所述待检测源代码版本的软件所对应的目标版本。
本发明实施例提供的软件源代码版本确定方法,通过获取待检测源代码版本的软件所输出的检测文件;再基于预设版本集合中的每个版本号所对应的软件对所述检测文件分别进行识别;并获取所述版本集合中满足预设要求的一个或多个版本号,并将所述一个或多个版本号生成第一子集合;再判断所述第一子集合是否符合预设规则;在第一子集合符合预设规则时,获取所述预设版本集合中的每个版本号所对应的软件所输出的识别文件;然后记录所述待检测源代码版本的软件能够识别所述识别文件所对应的第二子集合,所述第二子集合包括至少一个版本号;最后基于所述第一子集合与所述第二子集合生成目标版本号,并将所述目标版本号作为所述待检测源代码版本的软件的目标版本。从而实现自动对待检测软件的版本号进行确定的同时,提高了准确性以及效率,大大降低了人工处理的时间,进而实现了在节约人力的前提下,提高了对待检测软件的版本号的准确确定。
请参阅图3,是本发明第二实施例提供的软件源代码版本确定方法的流程图。下面将对图3所示的具体流程进行详细阐述。
步骤S201,获取待检测源代码版本的软件所输出的检测文件。
步骤S202,基于预设版本集合中的每个版本号所对应的软件对所述检测文件分别进行识别。
步骤S203,获取所述版本集合中满足预设要求的一个或多个版本号,并将所述一个或多个版本号生成第一子集合。
步骤S204,判断所述第一子集合是否符合预设规则。
步骤S205,若是,获取所述预设版本集合中的每个版本号所对应的软件所输出的识别文件。
步骤S206,记录所述待检测源代码版本的软件能够识别所述识别文件所对应的第二子集合,所述第二子集合包括至少一个版本号。
步骤S207,基于所述第一子集合与所述第二子集合生成目标版本号,并将所述目标版本号作为所述待检测源代码版本的软件的目标版本。
步骤S201至步骤S207的具体实施方式请参照第一实施例所对应的步骤,在此,不再赘述。
步骤S208,若否,获取所述第一子集合中的每个版本号所对应的软件所输出的第二识别文件。
作为一种实施方式,在所述第一子集合不符合预设规则时,将将所述第一子集合中的每个版本号所对应的软件分别进行处理,如创建,并输出识别文件。例如,当该待检测源代码版本的软件为office里面的word程序时,将word的每个版本分别创建该版本的word所对应的格式的文件,即为识别文件。
作为另一种实施方式,在所述第一子集合不符合预设规则时,将所述第一子集合中的每个版本号所对应的软件分别对所述检测文件进行识别,并输出第二识别文件。
其中,所述第二识别文件与第一实施例中的识别文件为同一原理,在此,不再赘述。
步骤S209,记录所述待检测源代码版本的软件能够识别所述第二识别文件所对应的版本号。
其中,该版本号的数量为多个,也可以是一个。例如,当有多个版本时,取其中任意一个即可。
步骤S210,将所述版本号作为所述待检测源代码版本的软件所对应的目标版本号。
在本发明实施例提供的软件源代码版本确定方法,通过在获取到第一子集合后,对第一子集合进行遍历的方式将所述第一子集合中的每个版本号所对应的软件分别对所述检测文件进行识别,并输出第二识别文件,从而减少了数据量的处理,进而降低了处理时间,以及提高了处理效率,再通过记录所述待检测源代码版本的软件能够识别所述第二识别文件所对应的版本号,并将所述版本号作为所述待检测源代码版本的软件所对应的目标版本号,从而实现了在降低人力情况的前提下,准确识别所述待检测源代码版本的软件的版本号。
请参阅图4,是本发明第三实施例提供的软件源代码版本确定装置的功能模块示意图。所述软件源代码版本确定装置400包括数据输入单元410、第一处理单元420、第一获取单元430、第二处理单元440、第三处理单元450、第二获取单元460和第四数据处理单元470。
数据输入单元410,用于获取待检测源代码版本的软件所输出的检测文件。
第一处理单元420,用于基于预设版本集合中的每个版本号所对应的软件对所述检测文件分别进行识别。
作为一种实施方式,所述第一处理单元420具体用于:获取预设版本集合中的每个版本号所对应的源代码;将每个所述版本号所对应的源代码编译为可执行文件;调用每个所述可执行文件对所述检测文件分别进行处理。
第一获取单元430,用于获取所述版本集合中满足预设要求的一个或多个版本号,并将所述一个或多个版本号生成第一子集合。
作为一种实施方式,所述第一获取单元430具体用于:获取每个所述可执行文件对所述检测文件分别进行处理后的M个处理结果,所述M为整数;获取所述M个处理结果中的N个目标匹配信息,所述N小于或等于所述M;获取N个所述目标匹配信息所对应的N个版本号;将N个所述版本号生成第一子集合。
第二处理单元440,用于判断所述第一子集合是否符合预设规则。
第三处理单元450,用于若是,获取所述预设版本集合中的每个版本号所对应的软件所输出的识别文件。
第二获取单元460,用于记录所述待检测源代码版本的软件能够识别所述识别文件所对应的第二子集合,所述第二子集合包括至少一个版本号。
第四数据处理单元470,用于基于所述第一子集合与所述第二子集合生成目标版本号,并将所述目标版本号作为所述待检测源代码版本的软件的目标版本。
作为一种实施方式,所述第四数据处理单元470具体用于:获取所述第一子集合与所述第二子集合的交集;将所述交集所对应的版本号作为所述待检测源代码版本的软件所对应的目标版本。
本实施例对软件源代码版本确定装置400的各功能模块实现各自功能的过程,请参见第一实施例中描述的内容,此处不再赘述。
请参阅图5,是本发明第四实施例提供的软件源代码版本确定装置的功能模块示意图。所述软件源代码版本确定装置500包括数据输入单元510、第一处理单元520、第一获取单元530、第二处理单元540、第五数据处理单元550、数据识别单元560和数据标记单元570。
数据输入单元510,用于获取待检测源代码版本的软件所输出的检测文件。
第一处理单元520,用于基于预设版本集合中的每个版本号所对应的软件对所述检测文件分别进行识别。
作为一种实施方式,所述第一处理单元520具体用于:获取预设版本集合中的每个版本号所对应的源代码;将每个所述版本号所对应的源代码编译为可执行文件;调用每个所述可执行文件对所述检测文件分别进行处理。
第一获取单元530,用于获取所述版本集合中满足预设要求的一个或多个版本号,并将所述一个或多个版本号生成第一子集合。
作为一种实施方式,所述第一获取单元530具体用于:获取每个所述可执行文件对所述检测文件分别进行处理后的M个处理结果,所述M为整数;获取所述M个处理结果中的N个目标匹配信息,所述N小于或等于所述M;获取N个所述目标匹配信息所对应的N个版本号;将N个所述版本号生成第一子集合。
第二处理单元540,用于判断所述第一子集合是否符合预设规则。
第五数据处理单元550,用于若否,获取所述第一子集合中的每个版本号所对应的软件所输出的第二识别文件。
数据识别单元560,用于记录所述待检测源代码版本的软件能够识别所述第二识别文件所对应的版本号。
数据标记单元570,用于将所述版本号作为所述待检测源代码版本的软件所对应的目标版本号。
本实施例对软件源代码版本确定装置500的各功能模块实现各自功能的过程,请参见第二实施例中描述的内容,此处不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
Claims (8)
1.一种软件源代码版本确定方法,其特征在于,包括:
获取待检测源代码版本的软件所输出的检测文件;
基于预设版本集合中的每个版本号所对应的软件对所述检测文件分别进行识别;
获取所述版本集合中满足预设要求的一个或多个版本号,并将所述一个或多个版本号生成第一子集合;
判断所述第一子集合是否符合预设规则;
若是,获取所述预设版本集合中的每个版本号所对应的软件所输出的识别文件;
记录所述待检测源代码版本的软件能够识别所述识别文件所对应的第二子集合,所述第二子集合包括至少一个版本号;
基于所述第一子集合与所述第二子集合生成目标版本号,并将所述目标版本号作为所述待检测源代码版本的软件的目标版本;
其中,所述预设要求是指能够正常读取所述检测文件;
其中,所述的基于所述第一子集合与所述第二子集合生成目标版本号,并将所述目标版本号作为所述待检测源代码版本的软件的目标版本,包括:
获取所述第一子集合与所述第二子集合的交集;
将所述交集所对应的版本号作为所述待检测源代码版本的软件所对应的目标版本。
2.根据权利要求1所述的方法,其特征在于,所述的判断所述第一子集合是否符合预设规则,之后还包括:
若否,获取所述第一子集合中的每个版本号所对应的软件所输出的第二识别文件;
记录所述待检测源代码版本的软件能够识别所述第二识别文件所对应的版本号;
将所述版本号作为所述待检测源代码版本的软件所对应的目标版本号。
3.根据权利要求1所述的方法,其特征在于,所述的基于预设版本集合中的每个版本号所对应的软件对所述检测文件分别进行识别,包括:
获取预设版本集合中的每个版本号所对应的源代码;
将每个所述版本号所对应的源代码编译为可执行文件;
调用每个所述可执行文件对所述检测文件分别进行处理。
4.根据权利要求3所述的方法,其特征在于,所述的获取所述版本集合中满足预设要求的一个或多个版本号,并将所述一个或多个版本号生成第一子集合,包括:
获取每个所述可执行文件对所述检测文件分别进行处理后的M个处理结果,所述M为整数;
获取所述M个处理结果中的N个目标匹配信息,所述N小于或等于所述M;
获取N个所述目标匹配信息所对应的N个版本号;
将N个所述版本号生成第一子集合。
5.一种软件源代码版本确定装置,其特征在于,包括:
数据输入单元,用于获取待检测源代码版本的软件所输出的检测文件;
第一处理单元,用于基于预设版本集合中的每个版本号所对应的软件对所述检测文件分别进行识别;
第一获取单元,用于获取所述版本集合中满足预设要求的一个或多个版本号,并将所述一个或多个版本号生成第一子集合;
第二处理单元,用于判断所述第一子集合是否符合预设规则;
第三处理单元,用于若是,获取所述预设版本集合中的每个版本号所对应的软件所输出的识别文件;
第二获取单元,用于记录所述待检测源代码版本的软件能够识别所述识别文件所对应的第二子集合,所述第二子集合包括至少一个版本号;
第四数据处理单元,用于基于所述第一子集合与所述第二子集合生成目标版本号,并将所述目标版本号作为所述待检测源代码版本的软件的目标版本;
其中,所述预设要求是指能够正常读取所述检测文件;
其中,所述第四数据处理单元具体用于:
获取所述第一子集合与所述第二子集合的交集;
将所述交集所对应的版本号作为所述待检测源代码版本的软件所对应的目标版本。
6.根据权利要求5所述的装置,其特征在于,所述第二处理单元,之后还包括:
第五数据处理单元,用于若否,获取所述第一子集合中的每个版本号所对应的软件所输出的第二识别文件;
数据识别单元,用于记录所述待检测源代码版本的软件能够识别所述第二识别文件所对应的版本号;
数据标记单元,用于将所述版本号作为所述待检测源代码版本的软件所对应的目标版本号。
7.根据权利要求5所述的装置,其特征在于,所述第一处理单元具体用于:
获取预设版本集合中的每个版本号所对应的源代码;
将每个所述版本号所对应的源代码编译为可执行文件;
调用每个所述可执行文件对所述检测文件分别进行处理。
8.根据权利要求7所述的装置,其特征在于,所述第一获取单元具体用于:
获取每个所述可执行文件对所述检测文件分别进行处理后的M个处理结果,所述M为整数;
获取所述M个处理结果中的N个目标匹配信息,所述N小于或等于所述M;
获取N个所述目标匹配信息所对应的N个版本号;
将N个所述版本号生成第一子集合。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810304326.1A CN108334335B (zh) | 2018-04-04 | 2018-04-04 | 一种软件源代码版本确定方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810304326.1A CN108334335B (zh) | 2018-04-04 | 2018-04-04 | 一种软件源代码版本确定方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108334335A CN108334335A (zh) | 2018-07-27 |
CN108334335B true CN108334335B (zh) | 2021-06-08 |
Family
ID=62932811
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810304326.1A Active CN108334335B (zh) | 2018-04-04 | 2018-04-04 | 一种软件源代码版本确定方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108334335B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110362316A (zh) * | 2019-07-23 | 2019-10-22 | 北京首汽智行科技有限公司 | 一种源代码管理方法 |
CN115469916B (zh) * | 2022-08-19 | 2023-06-20 | 武汉烽火技术服务有限公司 | 一种兼容多版本的南向接口的实现方法、系统和装置 |
CN116820556B (zh) * | 2023-08-30 | 2023-12-01 | 深圳开源互联网安全技术有限公司 | 一种检测可执行文件引用的开源组件的方法及相关产品 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8352445B2 (en) * | 2008-05-23 | 2013-01-08 | Microsoft Corporation | Development environment integration with version history tools |
CN104750469A (zh) * | 2013-12-30 | 2015-07-01 | 中国银联股份有限公司 | 源代码统计分析方法和系统 |
CN105975284A (zh) * | 2016-05-31 | 2016-09-28 | 京东方科技集团股份有限公司 | 一种软件版本自动检查装置及检查方法 |
CN106372511A (zh) * | 2016-08-24 | 2017-02-01 | 北京奇虎测腾安全技术有限公司 | 一种源代码检测系统及方法 |
-
2018
- 2018-04-04 CN CN201810304326.1A patent/CN108334335B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8352445B2 (en) * | 2008-05-23 | 2013-01-08 | Microsoft Corporation | Development environment integration with version history tools |
CN104750469A (zh) * | 2013-12-30 | 2015-07-01 | 中国银联股份有限公司 | 源代码统计分析方法和系统 |
CN105975284A (zh) * | 2016-05-31 | 2016-09-28 | 京东方科技集团股份有限公司 | 一种软件版本自动检查装置及检查方法 |
CN106372511A (zh) * | 2016-08-24 | 2017-02-01 | 北京奇虎测腾安全技术有限公司 | 一种源代码检测系统及方法 |
Non-Patent Citations (1)
Title |
---|
"对我国政府机构推行开源软件的探索";张浩斌;《经济论坛》;20120229;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN108334335A (zh) | 2018-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108334335B (zh) | 一种软件源代码版本确定方法及装置 | |
US10489591B2 (en) | Detection system and method thereof | |
CN108170656B (zh) | 模板创建方法、文档创建方法、渲染方法和装置 | |
CN110223682B (zh) | 一种语音指令仲裁方法和装置 | |
CN111414377B (zh) | 结构化查询语句的处理方法、装置及存储介质 | |
CN108241720B (zh) | 数据处理方法、装置和计算机可读存储介质 | |
CN110895544B (zh) | 一种接口数据处理方法、装置、系统及存储介质 | |
CN111680960A (zh) | 一种考勤统计方法及设备 | |
CN113010116A (zh) | 一种数据处理方法、装置、终端设备及可读存储介质 | |
CN110837727B (zh) | 一种文档模板生成方法、装置、终端设备及介质 | |
CN108874379B (zh) | 页面的处理方法及装置 | |
CN114359533B (zh) | 一种基于页面文本的页码识别方法和计算机设备 | |
CN111368902A (zh) | 一种数据标注的方法及装置 | |
US10678514B2 (en) | Method and device for generating code assistance information | |
CN111984666A (zh) | 数据库访问方法、装置、计算机可读存储介质和计算机设备 | |
CN114816772B (zh) | 基于兼容层运行的应用的排错方法、排错系统及计算设备 | |
CN116303820A (zh) | 标签生成方法、装置、计算机设备及介质 | |
WO2022262240A1 (zh) | 数据处理方法、电子设备及存储介质 | |
CN114065858A (zh) | 一种模型训练方法、装置、电子设备及存储介质 | |
CN112416444A (zh) | 一种板卡切换控制方法、装置、设备及介质 | |
CN110908876B (zh) | 一种硬件性能数据的获取方法及装置 | |
CN110717131B (zh) | 页面改版的监控方法及相关系统 | |
CN110018868B (zh) | 对象处理方法及装置 | |
CN110083839B (zh) | 文本导入方法、装置及设备 | |
CN111488737A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |