CN114860294A - 一种跨版本功能代码迁移方法、装置及介质 - Google Patents
一种跨版本功能代码迁移方法、装置及介质 Download PDFInfo
- Publication number
- CN114860294A CN114860294A CN202210461451.XA CN202210461451A CN114860294A CN 114860294 A CN114860294 A CN 114860294A CN 202210461451 A CN202210461451 A CN 202210461451A CN 114860294 A CN114860294 A CN 114860294A
- Authority
- CN
- China
- Prior art keywords
- function
- version
- code
- file
- information
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 70
- 238000013508 migration Methods 0.000 title claims description 62
- 230000005012 migration Effects 0.000 title claims description 62
- 230000006870 function Effects 0.000 claims description 332
- 230000008569 process Effects 0.000 claims description 23
- 238000012545 processing Methods 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 13
- 238000012795 verification Methods 0.000 claims description 7
- 230000008859 change Effects 0.000 claims description 6
- 238000011161 development Methods 0.000 abstract description 9
- 238000010586 diagram Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000002715 modification method Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/658—Incremental updates; Differential updates
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal 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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种跨版本功能代码迁移方法、装置及介质,涉及计算机技术领域。通过获取基础版本的代码与功能版本的代码的第一差异信息,并获取基础版本的代码与新版本的代码的第二差异信息;其中,功能版本是基于基础版本开发的具有功能代码的版本,新版本是基础版本的更新版本;遍历第一差异信息中的文件,根据第二差异信息标记文件,以获取标记信息;根据标记信息将文件中的功能代码迁移至新版本中,以用于得到目标版本。由此可知,上述方案通过对比新版本代码和功能代码与基础版本代码的之间的差异,生成不同的标记信息以确定功能代码在新版本中的位置,从而把功能代码迁移到新版本中,减少了开发人员的工作量,提高了开发效率。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种跨版本功能代码迁移方法、装置及介质。
背景技术
功能代码的迁移在项目开发中是非常常见的,一般是基于代码的基础版本进行的,通过补丁的方式即可轻松的迁移成功。在基础版本升级后,需要把基于基础版本开发的功能代码迁移到升级后的版本上,这个过程相当于对开发功能的二次开发。目前在跨版本间迁移功能代码时,需要人为的对照高版本代码和基础版本代码,把基础版本中开发的功能代码迁移到高版本中。
但是,若文件内容修改比较多且比较繁杂时,人为的迁移修改很容易遗漏;且如果基础版本升级频繁,就需要开发人员不断的迁移功能代码,非常繁琐且枯燥,严重浪费开发人员的时间和精力,效率低。
鉴于上述问题,设计一种跨版本功能代码迁移方法,是该领域技术人员亟待解决的问题。
发明内容
本申请的目的是提供一种跨版本功能代码迁移方法、装置及介质,解决人为代码迁移的效率低的问题。
为解决上述技术问题,本申请提供一种跨版本功能代码迁移方法,包括:
获取基础版本的代码与功能版本的代码的第一差异信息,并获取所述基础版本的代码与新版本的代码的第二差异信息;其中,所述功能版本是基于所述基础版本开发的具有功能代码的版本,所述新版本是所述基础版本的更新版本;
遍历所述第一差异信息中的文件,根据所述第二差异信息标记所述文件,以获取标记信息;
根据所述标记信息将所述文件中的功能代码迁移至所述新版本中,以用于得到目标版本。
优选地,所述根据所述第二差异信息标记所述文件,以获取标记信息包括:
若所述第二差异信息中的所述文件未被修改,则所述文件的所述标记信息为第一标记信息;
若所述第二差异信息中的所述文件被修改,则所述文件的所述标记信息为第二标记信息;
若所述第二差异信息中的所述文件被删除,则判断所述第二差异信息中所述文件的目录下是否存在新增文件;
若是,则所述文件的所述标记信息为第三标记信息;
若否,则所述文件的所述标记信息为第四标记信息。
优选地,所述根据所述标记信息将所述文件中的功能代码迁移至所述新版本中包括:
若所述文件的所述标记信息为所述第一标记信息,则直接将所述文件中的功能代码迁移至所述新版本中;
若所述文件的所述标记信息为所述第二标记信息,则根据所述文件中的功能代码所在的函数和所述第二差异信息中的对应函数将所述文件中的功能代码迁移至所述新版本中;
若所述文件的所述标记信息为所述第三标记信息,则获取所述基础版本中所述文件中的功能代码所在的函数与所述第二差异信息中的所述新增文件中的函数的代码相似度;根据所述代码相似度将所述文件中的功能代码迁移至所述新版本中;
若所述文件的所述标记信息为所述第四标记信息,则所述文件中的功能代码不迁移。
优选地,所述获取所述基础版本中所述文件中的功能代码所在的函数与所述第二差异信息中的所述新增文件中的函数的代码相似度包括:
获取功能代码在所述基础版本中的函数;
通过函数的代码中变量、函数调用和分支处理过程,计算该函数与所述第二差异信息中的所述新增文件中的每一个函数的相似度。
优选地,所述根据所述文件中的功能代码所在的函数和所述第二差异信息中的对应函数将所述文件中的功能代码迁移至所述新版本中包括:
遍历所述文件中的功能代码所在的函数;
若所述第二差异信息中的所述对应函数没有变化,则将所述函数的功能代码迁移至所述新版本中;
若所述第二差异信息中的所述对应函数发生变化,则获取所述对应函数中功能代码变化的上下文代码,根据所述上下文代码将所述函数中的功能代码迁移至所述新版本中;
若所述第二差异信息中不存在所述对应函数,则遍历所述第二差异信息中的新增函数,获取所述新增函数与所述基础版本中对应的函数的代码相似度,根据所述代码相似度将所述文件中的功能代码迁移至所述新版本中。
优选地,在所述得到目标版本之后,还包括:
验证所述目标版本中迁移后的功能代码;
判断是否验证成功;
若是,则确认功能代码迁移成功;
若否,修改所述目标版本中的错误的功能代码。
优选地,在所述确认功能代码迁移成功之后,还包括:
输出功能代码迁移成功的信息。
为解决上述技术问题,本申请还提供一种跨版本功能代码迁移装置,包括:
获取模块,用于获取基础版本的代码与功能版本的代码的第一差异信息,并获取所述基础版本的代码与新版本的代码的第二差异信息;其中,所述功能版本是基于所述基础版本开发的具有功能代码的版本,所述新版本是所述基础版本的更新版本;
遍历标记模块,用于遍历所述第一差异信息中的文件,根据所述第二差异信息标记所述文件,以获取标记信息;
迁移模块,用于根据所述标记信息将所述文件中的功能代码迁移至所述新版本中,以用于得到目标版本。
为解决上述技术问题,本申请还提供另一种跨版本功能代码迁移装置,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现上述所述的跨版本功能代码迁移方法的步骤。
为解决上述技术问题,本申请还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述所述的跨版本功能代码迁移方法的步骤。
本申请所提供的跨版本功能代码迁移方法,通过获取基础版本的代码与功能版本的代码的第一差异信息,并获取基础版本的代码与新版本的代码的第二差异信息;其中,功能版本是基于基础版本开发的具有功能代码的版本,新版本是基础版本的更新版本;遍历第一差异信息中的文件,根据第二差异信息标记文件,以获取标记信息;根据标记信息将文件中的功能代码迁移至新版本中,以用于得到目标版本。由此可知,上述方案通过对比新版本代码和功能代码与基础版本代码的之间的差异,生成不同的标记信息以确定功能代码在新版本中的位置,从而把功能代码迁移到新版本中,减少了开发人员的工作量,提高了开发效率。
此外,本申请实施例还提供了一种跨版本功能代码迁移装置及计算机可读存储介质,效果同上。
附图说明
为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种跨版本功能代码迁移方法的流程图;
图2为本申请实施例提供的一种不同标记信息下功能代码迁移的流程图;
图3为本申请实施例提供的一种第二标记信息下文件功能代码迁移的流程图;
图4为本申请实施例提供的另一种跨版本功能代码迁移方法的流程图;
图5为本申请实施例提供的一种跨版本功能代码迁移装置的结构示意图;
图6为本申请实施例提供的另一种跨版本功能代码迁移装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本申请保护范围。
本申请的核心是提供一种跨版本功能代码迁移方法、装置及介质。
为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。
功能代码的迁移在项目开发中是非常常见的,在基础版本升级后,需要把基于基础版本开发的功能代码迁移到升级后的版本上,这个过程相当于对开发功能的二次开发。目前在跨版本间迁移功能代码时,需要人为的对照高版本代码和基础版本代码,把基础版本中开发的功能代码迁移到高版本中。但是,若文件内容修改比较多且比较繁杂时,人为的迁移修改很容易遗漏;且如果基础版本升级频繁,就需要开发人员不断的迁移功能代码,非常繁琐且枯燥,严重浪费开发人员的时间和精力,效率低,因此,本申请提供了一种跨版本功能代码迁移方法。图1为本申请实施例提供的一种跨版本功能代码迁移方法的流程图。如图1所示,包括:
S10:获取基础版本的代码与功能版本的代码的第一差异信息,并获取基础版本的代码与新版本的代码的第二差异信息;其中,功能版本是基于基础版本开发的具有功能代码的版本,新版本是基础版本的更新版本。
S11:遍历第一差异信息中的文件,根据第二差异信息标记文件,以获取标记信息。
S12:根据标记信息将文件中的功能代码迁移至新版本中,以用于得到目标版本。
可以理解的是,功能版本是基于基础版本开发的具有特定功能的版本,新版本是对基础版本进行更新升级之后的版本。若基础版本升级为新版本,就需要把基于基础版本开发的功能代码迁移到升级后的新版本上,即将功能版本的功能代码迁移至新版本上,最终得到具有功能代码的目标版本。
因此,首先需要确定功能版本的功能代码有哪些,以及新版本与基础版本的差异;即获取基础版本的代码与功能版本的代码的第一差异信息,并获取基础版本的代码与新版本的代码的第二差异信息。具体地,可以通过Linux系统中diff的操作分别获取功能版本和新版本较基础版本的第一差异信息和第二差异信息,也可以通过其他方式获取差异信息,在本实施例中不做限制,根据具体的实施情况而定。
当得到两个差异信息后,遍历第一差异信息中的文件,根据第二差异信息标记文件,以获取标记信息。可以理解的是,由于第二差异信息中与第一差异信息中对应的文件在基础版本更新中可能会产生变化,例如对文件进行修改或删除等操作,因此不能直接将第一差异信息中文件的功能代码迁移至新版本中,而是首先根据第二差异信息标记第一差异信息中的文件,对文件的不同状态进行不同的标记,以确定功能代码在新版本中的位置,并从而确定功能代码具体的迁移方式。本实施例中对于标记信息的具体获取方式不做限制,根据具体的实施情况而定。
在得到了不同的标记信息后,根据标记信息将文件中的功能代码迁移至新版本中,以用于得到目标版本。可以理解的是,由于在上述对文件进行标记的过程中存在着不同的标记,因此在迁移功能代码的过程中会根据不同的标记信息对功能代码采取不同的迁移方式,从而顺利将功能代码迁移至新版本中。本实施例中对于功能代码的具体迁移方式不做限制,根据具体的实施情况而定。
本实施例中,通过获取基础版本的代码与功能版本的代码的第一差异信息,并获取基础版本的代码与新版本的代码的第二差异信息;其中,功能版本是基于基础版本开发的具有功能代码的版本,新版本是基础版本的更新版本;遍历第一差异信息中的文件,根据第二差异信息标记文件,以获取标记信息;根据标记信息将文件中的功能代码迁移至新版本中,以用于得到目标版本。由此可知,上述方案通过对比新版本代码和功能代码与基础版本代码的之间的差异,生成不同的标记信息以确定功能代码在新版本中的位置,从而把功能代码迁移到新版本中,减少了开发人员的工作量,提高了开发效率。
在上述实施例的基础上:
作为一种优选的实施例,根据第二差异信息标记文件,以获取标记信息包括:
若第二差异信息中的文件未被修改,则文件的标记信息为第一标记信息;
若第二差异信息中的文件被修改,则文件的标记信息为第二标记信息;
若第二差异信息中的文件被删除,则判断第二差异信息中文件的目录下是否存在新增文件;
若是,则文件的标记信息为第三标记信息;
若否,则文件的标记信息为第四标记信息。
在上述实施例中,对于标记信息的具体获取方式不做限制,根据具体的实施情况而定。作为一种优选的实施例,在本实施例中,标记信息的具体获取方式如下:
遍历第一差异信息中的文件,根据第二差异信息对每一个文件的状态进行判断。具体地,判断第二差异信息中该文件是否被修改。如果第二差异信息中的该文件未被修改,则文件的标记信息为第一标记信息;如果第二差异信息中的该文件被修改,则文件的标记信息为第二标记信息。若第二差异信息中的文件被删除,则判断第二差异信息中文件的目录下是否存在新增文件;如果存在新增文件,则文件的标记信息为第三标记信息;若该目录下不存在新增文件,则文件的标记信息为第四标记信息。
本实施例中,通过确定第二差异信息中第一差异信息的文件的状态,得到了不同文件的标记信息,以便于根据标记信息对文件中的功能代码进行迁移。
在上述实施例的基础上:
作为一种优选的实施例,根据标记信息将文件中的功能代码迁移至新版本中包括:
若文件的标记信息为第一标记信息,则直接将文件中的功能代码迁移至新版本中;
若文件的标记信息为第二标记信息,则根据文件中的功能代码所在的函数和第二差异信息中的对应函数将文件中的功能代码迁移至新版本中;
若文件的标记信息为第三标记信息,则获取基础版本中文件中的功能代码所在的函数与第二差异信息中的新增文件中的函数的代码相似度;根据代码相似度将文件中的功能代码迁移至新版本中;
若文件的标记信息为第四标记信息,则文件中的功能代码不迁移。
在上述实施例中,对于功能代码的具体迁移方式不做限制,根据具体的实施情况而定。作为一种优选的实施例,本实施例中,根据文件的标记信息对功能代码进行迁移。
图2为本申请实施例提供的一种不同标记信息下功能代码迁移的流程图。如图2所示,具体地,遍历文件的标记信息,若文件的标记信息为第一标记信息,也就是说该文件没有被修改,则认为可以直接将文件中的功能代码迁移至新版本中。
若文件的标记信息为第二标记信息,也就是说该文件被修改,需要对该文件中的功能代码选择性的迁移到新版本中;具体地,根据文件中的功能代码所在的函数和第二差异信息中的对应函数将文件中的功能代码迁移至新版本中。需要注意的是,在基于基础版本得到新版本的过程中,包含功能代码的文件可能被修改,而文件中功能代码所在的函数也可能会被修改;因此在上述过程中还需要根据函数的不同情况对功能代码进行迁移。在本实施例中对于根据功能代码所在的函数和第二差异信息中的对应函数迁移功能代码的具体过程不做限制,根据具体的实施情况而定。
若文件的标记信息为第三标记信息,也就是说第二差异信息中该文件被删除,但是该文件目录下还存在着新增文件。则获取基础版本中文件中的功能代码所在的函数与第二差异信息中的新增文件中的函数的代码相似度;根据代码相似度将文件中的功能代码迁移至新版本中。在本实施例中对于代码相似度的获取方式不做限制,根据具体的实施情况而定。
若文件的标记信息为第四标记信息,也就是说第二差异信息中该文件被删除,且该文件目录下不存在新增文件,则认为该文件的功能代码不需要迁移。依次根据文件的标记信息进行功能代码的迁移,直至遍历完成所有文件的标记信息。
本实施例中,分别根据上述四种标记信息将文件中的功能代码迁移至新版本中,根据文件的不同状态采取不同的迁移方式,实现了功能代码的迁移。
在上述实施例的基础上:
作为一种优选的实施例,获取基础版本中文件中的功能代码所在的函数与第二差异信息中的新增文件中的函数的代码相似度包括:
获取功能代码在基础版本中的函数;
通过函数的代码中变量、函数调用和分支处理过程,计算该函数与第二差异信息中的新增文件中的每一个函数的相似度。
在上述实施例中,对于代码相似度的获取方式不做限制,根据具体的实施情况而定。作为一种优选的实施例,在本实施例中,首先获取功能代码在基础版本中的函数,通过函数的代码中变量、函数调用和分支处理过程,计算该函数与第二差异信息中的新增文件中的每一个函数的相似度。
可以理解的是,判断代码的相似度可通过变量定义、函数调用、分支处理、变量操作等过程进行判断。由于变量定义的位置是可变的,且在函数调用和分支处理确定的框架下,变量操作对功能代码的影响不大。所以可以根据代码中函数调用和分支处理的流程对代码块相似度进行审核确认。这里假设第二差异信息中的新增文件中的函数的代码块为Code1,文件中的功能代码所在的函数的代码块为Code2,则代码相似度具体审核过程如下:
遍历代码Code1,若Code1为变量,则继续遍历;若Code1为函数调用或分支处理,则查找并记录Code2中所有调用该函数或分支处理的位置,若Code2中没有调用该函数或对该分支的处理,则认为这两段代码不相似。
若Code2中存在调用该函数或对该分支的处理,则认为这两段代码相似,继续遍历Code1。若Code1为函数调用或分支处理,则遍历Code2中函数调用或分支处理记录的位置,验证该位置之后是否为Code1中对应的函数或分支。若否,则继续遍历Code2中函数调用或分支处理记录的下一个位置。
若所有的位置均没有对应的函数调用或分支处理,则认为这两段代码不相似。若是,则重复上述过程,直至Code1代码遍历完成,认为这是两段代码相似。
在本实施例中,通过获取功能代码在基础版本中的函数;通过函数的代码中变量、函数调用和分支处理过程,计算该函数与第二差异信息中的新增文件中的每一个函数的相似度,实现了代码相似度的计算,以便于后续的功能代码的迁移。
在上述实施例的基础上:
作为一种优选的实施例,根据文件中的功能代码所在的函数和第二差异信息中的对应函数将文件中的功能代码迁移至新版本中包括:
遍历文件中的功能代码所在的函数;
若第二差异信息中的对应函数没有变化,则将函数的功能代码迁移至新版本中;
若第二差异信息中的对应函数发生变化,则获取对应函数中功能代码变化的上下文代码,根据上下文代码将函数中的功能代码迁移至新版本中;
若第二差异信息中不存在对应函数,则遍历第二差异信息中的新增函数,获取新增函数与基础版本中对应的函数的代码相似度,根据代码相似度将文件中的功能代码迁移至新版本中。
在上述实施例中,对于根据功能代码所在的函数和第二差异信息中的对应函数迁移功能代码的具体过程不做限制,根据具体的实施情况而定。图3为本申请实施例提供的一种第二标记信息下文件功能代码迁移的流程图。作为一种优选的实施例,在本实施例中,如图3所示,根据功能代码所在的函数对功能代码进行迁移的具体过程如下:
遍历文件中的功能代码所在的函数,当能够在第二差异信息的文件中找到对应的函数时,若第二差异信息中对应的该文件的函数没有发生变化,则把该函数中的功能代码直接迁移到新版本的对应文件中。
若第二差异信息中对应的该文件的函数发生变化,则获取对应的函数中功能代码变化的上下文代码,若第二差异信息的对应函数中能找到对应的上文代码位置,则把对应的功能代码迁移到上文位置之下;若第二差异信息的对应函数中能找到对应的下文代码位置,则把对应的功能代码迁移到下文位置之上;若第二差异信息的对应函数中能同时找到对应的上下文代码位置,则把对应的功能代码迁移到上下文位置之间;若第二差异信息的对应函数中找不到对应的上下文代码位置,则该部分功能代码不进行迁移。
若在第二差异信息的文件中找不到对应的函数,则遍历第二差异信息的文件中新增函数,计算新增函数与基础版本中对应函数的代码相似度。代码相似度的计算方式同上述实施例中一致。若为相似,则认为可以进行代码迁移;由于文件函数发生变化,则执行上述步骤中通过获取函数功能代码变化的上下文代码的方式迁移对应的功能代码。若不相似,则不进行功能代码的迁移。
需要注意的是,由于文件的标记信息为第三标记信息的功能代码迁移过程中也涉及到代码相似度的获取,则在获取到代码相似度之后的迁移方式与第二标记信息的功能代码迁移过程一致,同样为通过获取函数功能代码变化的上下文代码的方式迁移对应的功能代码。
本实施例中,根据第二差异信息中的对应函数的不同情况将文件所在的函数的功能代码迁移至新版本中,实现了第二标志信息下的功能代码的迁移。
图4为本申请实施例提供的另一种跨版本功能代码迁移方法的流程图。
如图4所示,在得到目标版本之后,还包括:
S13:验证目标版本中迁移后的功能代码。
S14:判断是否验证成功;若是,进入步骤S15;若否,进入步骤S16。
S15:确认功能代码迁移成功。
S16:修改目标版本中的错误的功能代码。
可以理解的是,在向新版本迁移完成功能代码之后便得到了目标版本。在得到了目标版本之后,还需要确认功能代码是否迁移成功。因此验证目标版本中迁移后的功能代码,判断是否验证成功。其中的验证方式可以存在多种,在本实施例中不做限制,根据具体的实施情况而定。当验证成功,则确认功能代码迁移成功。而当验证失败时,则认为功能代码迁移发生了错误,需要修改目标版本中的错误的功能代码。修改方式可以主动寻找错误部分的功能代码并加以修改,或者选择其他的修改方式,在本实施例中不做限制,根据具体的实施情况而定。
本实施例中,通过验证目标版本中迁移后的功能代码,对错误的功能代买进行完善,形成最终的目标版本。
如图4所示,在确认功能代码迁移成功之后,还包括:
S17:输出功能代码迁移成功的信息。
可以理解的是,在确认目标版本中功能代码迁移成功之后,输出功能代码迁移成功的信息,提示用户功能代码迁移完成,以便于用户对目标版本进行后续操作。
在上述实施例中,对于跨版本功能代码迁移方法进行了详细描述,本申请还提供跨版本功能代码迁移装置对应的实施例。需要说明的是,本申请从两个角度对装置部分的实施例进行描述,一种是基于功能模块的角度,另一种是基于硬件结构的角度。
图5为本申请实施例提供的一种跨版本功能代码迁移装置的结构示意图。如图5所示,跨版本功能代码迁移装置包括:
获取模块10,用于获取基础版本的代码与功能版本的代码的第一差异信息,并获取基础版本的代码与新版本的代码的第二差异信息;其中,功能版本是基于基础版本开发的具有功能代码的版本,新版本是基础版本的更新版本。
遍历标记模块11,用于遍历第一差异信息中的文件,根据第二差异信息标记文件,以获取标记信息。
迁移模块12,用于根据标记信息将文件中的功能代码迁移至新版本中,以用于得到目标版本。
由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
图6为本申请实施例提供的另一种跨版本功能代码迁移装置的结构示意图,如图6所示,跨版本功能代码迁移装置包括:
存储器20,用于存储计算机程序;
处理器21,用于执行计算机程序时实现如上述实施例中所提到的跨版本功能代码迁移的方法的步骤。
本实施例提供的跨版本功能代码迁移装置可以包括但不限于智能手机、平板电脑、笔记本电脑或台式电脑等。
其中,处理器21可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器21可以采用数字信号处理器(Digital Signal Processor,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器21也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称中央处理器(CentralProcessing Unit,CPU);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器21可以在集成有图形处理器(Graphics Processing Unit,GPU),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器21还可以包括人工智能(Artificial Intelligence,AI)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器20可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器20还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器20至少用于存储以下计算机程序201,其中,该计算机程序被处理器21加载并执行之后,能够实现前述任一实施例公开的跨版本功能代码迁移方法的相关步骤。另外,存储器20所存储的资源还可以包括操作系统202和数据203等,存储方式可以是短暂存储或者永久存储。其中,操作系统202可以包括Windows、Unix、Linux等。数据203可以包括但不限于跨版本功能代码迁移方法涉及到的数据。
在一些实施例中,跨版本功能代码迁移装置还可包括有显示屏22、输入输出接口23、通信接口24、电源25以及通信总线26。
本领域技术人员可以理解,图6中示出的结构并不构成对跨版本功能代码迁移装置的限定,可以包括比图示更多或更少的组件。
最后,本申请还提供一种计算机可读存储介质对应的实施例。计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述方法实施例中记载的步骤。
可以理解的是,如果上述实施例中的方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上对本申请所提供的一种跨版本功能代码迁移方法、装置及介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (10)
1.一种跨版本功能代码迁移方法,其特征在于,包括:
获取基础版本的代码与功能版本的代码的第一差异信息,并获取所述基础版本的代码与新版本的代码的第二差异信息;其中,所述功能版本是基于所述基础版本开发的具有功能代码的版本,所述新版本是所述基础版本的更新版本;
遍历所述第一差异信息中的文件,根据所述第二差异信息标记所述文件,以获取标记信息;
根据所述标记信息将所述文件中的功能代码迁移至所述新版本中,以用于得到目标版本。
2.根据权利要求1所述的跨版本功能代码迁移方法,其特征在于,所述根据所述第二差异信息标记所述文件,以获取标记信息包括:
若所述第二差异信息中的所述文件未被修改,则所述文件的所述标记信息为第一标记信息;
若所述第二差异信息中的所述文件被修改,则所述文件的所述标记信息为第二标记信息;
若所述第二差异信息中的所述文件被删除,则判断所述第二差异信息中所述文件的目录下是否存在新增文件;
若是,则所述文件的所述标记信息为第三标记信息;
若否,则所述文件的所述标记信息为第四标记信息。
3.根据权利要求2所述的跨版本功能代码迁移方法,其特征在于,所述根据所述标记信息将所述文件中的功能代码迁移至所述新版本中包括:
若所述文件的所述标记信息为所述第一标记信息,则直接将所述文件中的功能代码迁移至所述新版本中;
若所述文件的所述标记信息为所述第二标记信息,则根据所述文件中的功能代码所在的函数和所述第二差异信息中的对应函数将所述文件中的功能代码迁移至所述新版本中;
若所述文件的所述标记信息为所述第三标记信息,则获取所述基础版本中所述文件中的功能代码所在的函数与所述第二差异信息中的所述新增文件中的函数的代码相似度;根据所述代码相似度将所述文件中的功能代码迁移至所述新版本中;
若所述文件的所述标记信息为所述第四标记信息,则所述文件中的功能代码不迁移。
4.根据权利要求3所述的跨版本功能代码迁移方法,其特征在于,所述获取所述基础版本中所述文件中的功能代码所在的函数与所述第二差异信息中的所述新增文件中的函数的代码相似度包括:
获取功能代码在所述基础版本中的函数;
通过函数的代码中变量、函数调用和分支处理过程,计算该函数与所述第二差异信息中的所述新增文件中的每一个函数的相似度。
5.根据权利要求3所述的跨版本功能代码迁移方法,其特征在于,所述根据所述文件中的功能代码所在的函数和所述第二差异信息中的对应函数将所述文件中的功能代码迁移至所述新版本中包括:
遍历所述文件中的功能代码所在的函数;
若所述第二差异信息中的所述对应函数没有变化,则将所述函数的功能代码迁移至所述新版本中;
若所述第二差异信息中的所述对应函数发生变化,则获取所述对应函数中功能代码变化的上下文代码,根据所述上下文代码将所述函数中的功能代码迁移至所述新版本中;
若所述第二差异信息中不存在所述对应函数,则遍历所述第二差异信息中的新增函数,获取所述新增函数与所述基础版本中对应的函数的代码相似度,根据所述代码相似度将所述文件中的功能代码迁移至所述新版本中。
6.根据权利要求3所述的跨版本功能代码迁移方法,其特征在于,在所述得到目标版本之后,还包括:
验证所述目标版本中迁移后的功能代码;
判断是否验证成功;
若是,则确认功能代码迁移成功;
若否,修改所述目标版本中的错误的功能代码。
7.根据权利要求3所述的跨版本功能代码迁移方法,其特征在于,在所述确认功能代码迁移成功之后,还包括:
输出功能代码迁移成功的信息。
8.一种跨版本功能代码迁移装置,其特征在于,包括:
获取模块,用于获取基础版本的代码与功能版本的代码的第一差异信息,并获取所述基础版本的代码与新版本的代码的第二差异信息;其中,所述功能版本是基于所述基础版本开发的具有功能代码的版本,所述新版本是所述基础版本的更新版本;
遍历标记模块,用于遍历所述第一差异信息中的文件,根据所述第二差异信息标记所述文件,以获取标记信息;
迁移模块,用于根据所述标记信息将所述文件中的功能代码迁移至所述新版本中,以用于得到目标版本。
9.一种跨版本功能代码迁移装置,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至7任一项所述的跨版本功能代码迁移方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的跨版本功能代码迁移方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210461451.XA CN114860294A (zh) | 2022-04-28 | 2022-04-28 | 一种跨版本功能代码迁移方法、装置及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210461451.XA CN114860294A (zh) | 2022-04-28 | 2022-04-28 | 一种跨版本功能代码迁移方法、装置及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114860294A true CN114860294A (zh) | 2022-08-05 |
Family
ID=82633820
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210461451.XA Pending CN114860294A (zh) | 2022-04-28 | 2022-04-28 | 一种跨版本功能代码迁移方法、装置及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114860294A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118519674A (zh) * | 2024-05-13 | 2024-08-20 | 北京长擎软件有限公司 | 系统差异数据的获取方法及装置 |
-
2022
- 2022-04-28 CN CN202210461451.XA patent/CN114860294A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118519674A (zh) * | 2024-05-13 | 2024-08-20 | 北京长擎软件有限公司 | 系统差异数据的获取方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111596863B (zh) | 一种数据读取方法、装置、设备及可读存储介质 | |
US10489591B2 (en) | Detection system and method thereof | |
CN110427215A (zh) | 一种应用于前端开发的程序版本差异展示方法及装置 | |
US20070239774A1 (en) | Migration of database using serialized objects | |
CN107463485B (zh) | 基于方法栈的日志获取方法、装置和终端 | |
WO2019041891A1 (zh) | 升级包的生成方法及装置 | |
CN114860294A (zh) | 一种跨版本功能代码迁移方法、装置及介质 | |
CN108694049B (zh) | 一种更新软件的方法和设备 | |
CN114780173B (zh) | 一种在应用中加载插件的方法、计算设备及存储介质 | |
CN115599437A (zh) | 一种软件版本的处理方法、装置、电子设备及存储介质 | |
CN113741931B (zh) | 软件升级方法、装置、电子设备及可读存储介质 | |
CN115269021A (zh) | 一种网卡的操作处理方法、装置及介质 | |
US11573772B2 (en) | Mechanism for information propagation and resolution in graph-based programming languages | |
CN112685040B (zh) | 安卓系统中界面文件的生成方法、装置、设备及存储介质 | |
CN104298618A (zh) | 一种智能终端的命令处理方法及装置 | |
CN109766125B (zh) | 批次间追平冲突的识别方法及装置 | |
CN114816772B (zh) | 基于兼容层运行的应用的排错方法、排错系统及计算设备 | |
CN107562423B (zh) | Ui页面开发方法及装置 | |
CN110765008A (zh) | 一种数据处理方法及装置 | |
CN114840198A (zh) | 函数执行方法、积木块功能重写方法及相关设备 | |
CN113901025A (zh) | 数据库管理方法、装置、设备和存储介质 | |
CN115167822A (zh) | 分支代码合并方法、装置、设备和存储介质 | |
CN108920216B (zh) | 关闭软件兼容模式的方法、装置、终端及存储介质 | |
CN113703753A (zh) | 用于产品开发的方法、装置和产品开发系统 | |
CN113590224B (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 |