CN115291932A - 相似度阈值的获取方法、数据处理方法及产品 - Google Patents
相似度阈值的获取方法、数据处理方法及产品 Download PDFInfo
- Publication number
- CN115291932A CN115291932A CN202210896361.3A CN202210896361A CN115291932A CN 115291932 A CN115291932 A CN 115291932A CN 202210896361 A CN202210896361 A CN 202210896361A CN 115291932 A CN115291932 A CN 115291932A
- Authority
- CN
- China
- Prior art keywords
- similarity
- repaired
- similarity threshold
- correct
- historical
- 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
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
技术领域
本申请涉及软件开发领域,特别涉及一种相似度阈值的获取方法、数据处理方法及产品。
背景技术
在软件开发过程中,随着企业资源计划(Enterprise Resource Planning,ERP)产品迭代升级,软件版本的数量越来越多。通常,一个软件在开发过程中可能会生成数十个甚至上百个不同的软件版本。当软件版本发布后,可能在发布的软件版本中会存在一些隐藏较深的缺陷,当这个缺陷在多个版本中都存在,并且每个客户使用的软件版本都不一定相同,如果人为的去修复这类缺陷则需要人工针对每个在用的软件版本进行单独修复,这样的方式会导致工作量巨大,且修复时出现漏洞的风险大。
通常,修复软件版本可以通过计算机设备自动获取缺陷源文件与待修复文件之间的相似度,并将相似度和人为设定的阈值进行对比。当相似度大于人为设定的阈值时,则认为此时的待修复文件确实存在缺陷,可以进行修复。
然而,上述人为设定的阈值是一个固定的阈值,在修复的软件版本较多时,可能不同软件版本对应的相似度离散性较大,基于这样固定的阈值来确定是否需要进行修复的方式,会使得部分存在缺陷的软件版本无法正常修复,导致修复产生偏差,降低修复的准确性。
发明内容
本申请提供了一种相似度阈值的获取方法、数据处理方法、装置、计算机设备、计算机可读存储介质和计算机程序产品,可以提高版本修复的准确性。
第一方面,提供了一种相似度阈值的获取方法,该方法包括:获取至少一个历史相似度;获取第一历史相似度对应的第一正确数量和第一错误数量,第一历史相似度为至少一个历史相似度中的任意一个,当第一历史相似度对应的软件版本在修复后校验通过时,第一正确数量为1,第一错误数量为0,当第一历史相似度对应的软件版本在修复后校验不通过时,第一正确数量为0,第一错误数量为1;获取总正确数量和总错误数量,总正确数量为至少一个第一正确数量之和,总错误数量为至少一个第一错误数量之和,至少一个第一正确数量、至少一个第一错误数量和至少一个历史相似度一一对应;根据至少一个历史相似度、至少一个第一正确数量、至少一个第一错误数量、总正确数量和总错误数量,确定相似度阈值;其中,相似度阈值与总正确数量和总错误数量之差的绝对值负相关,相似度阈值与第一和值的绝对值正相关,第一和值为至少一个第一乘积之和,第一乘积为第一历史相似度与对应的第一正确数量和第一错误数量之差的积,至少一个第一乘积与至少一个历史相似度一一对应。
计算机设备根据前述历次软件版本修复过程中所得到的历史相似度,并结合每次得到的历史相似度和对应的校验结果来确定相似度阈值,能够对相似度阈值进行修正,使得相似度阈值融合了前述修复的校验结果,实现了相似度阈值的自更新。当不同软件版本对应的相似度离散性较大的时候,采用本申请实施例中的能够自更新的相似度阈值来判断是否需要进行修复,相比传统的固定阈值的方式,避免了修复软件版本所产生的偏差,从而提高了修复软件版本的准确性。
在一些可能的实现方式中,相似度阈值与总正确数量和总错误数量之差成反比,相似度阈值和第一和值成正比。
在一些可能的实现方式中,相似度阈值为第一和值与总正确数量和总错误数量之差的比值。
在一些可能的实现方式中,相似度阈值Vs的表达式为:
其中,V1至Vn均为历史相似度,NS1至NSn依次为V1至Vn对应的第一正确数量,Nf1至Nfn依次为V1至Vn对应的第一错误数量,Nts表示历史相似度的总正确数量,Nts为NS1至NSn的和,Ntf表示历史相似度的总错误数量,Ntf为Nf1至Nfn的和。
在一些可能的实现方式中,若相似度阈值小于0或大于1,则更新相似度阈值为固定值,固定值的取值范围为0.95至0.99之间。
当计算得到的相似度阈值大于1或小于0时,直接将相似度阈值更新为固定值可以避免上述异常的情况发生,提高了软件版本修复的成功率和准确性,且采用0.95至0.99之间的取值,合理性高。
第二方面,提供了一种数据处理方法,包括:获取待修复文件和缺陷源文件;确定缺陷源文件的缺陷类型为代码段匹配的类型时,获取待修复文件中的待修复内容;确定待修复内容和缺陷源文件中缺陷代码段的相似度;当相似度大于相似度阈值时,采用缺陷源文件中缺陷代码段对应的已修复代码段替换待修复内容,以修复软件版本;其中,相似度阈值为第一方面所述的任一项的相似度阈值。
计算机设备在进行代码段修复的过程中,采用了上述方案所提供的相似度阈值来确定是否执行修复的操作,由于上述相似度阈值是计算机设备根据前述历次软件版本修复过程中所得到的历史相似度,并结合每次得到的历史相似度和对应的校验结果来确定相似度阈值,能够对相似度阈值进行修正,使得相似度阈值融合了前述修复的校验结果,实现了相似度阈值的自更新。当不同软件版本对应的相似度离散性较大的时候,计算机设备在代码段修复过程中,基于能够自更新的相似度阈值来判断是否需要进行软件版本的修复,相比基于传统的固定阈值来判断的方式,避免了修复软件版本所产生的偏差,从而提高了修复软件版本的准确性。
在一些可能的实现方式中,该方法还包括:获取校验结果,校验结果用于表征修复后的软件版本是否校验通过;根据校验结果更新相似度阈值。
计算机设备在修复完软件版本后,获取修复后的软件版本的校验结果,并根据校验结果反写相似度阈值,能够将本次修复的校验结果融入相似度阈值中,提高了相似度阈值和实际情况的匹配程度,进一步提高了软件版本修复的准确性。
在一些可能的实现方式中,历史相似度为用于训练的相似度训练值,相似度训练值的数量为多个,相似度阈值为采用多个相似度训练值、以及每个相似度训练值对应的第一正确数量和第一错误数量进行训练得到的阈值。
计算机设备可以根据多次获取的相似度训练值,并结合每个相似度训练值对应的校验结果来确定相似度阈值,能够根据每次的校验结果对相似度阈值进行修正,使得相似度阈值学习了多次修复的校验结果,提高了相似度阈值的鲁棒性。当不同软件版本对应的相似度离散性较大的时候,采用经过多组训练数据训练得到的相似度阈值来判断软件版本是否需要进行修复,相比传统的固定阈值的方式,避免了修复软件版本所产生的偏差,从而提高了修复软件版本的准确性。
第三方面,提供了一种相似度阈值的获取装置,包括由软件和/或硬件组成的单元,该单元用于执行第一方面所述的技术方案中任意一种方法。
第四方面,提供了一种数据处理装置,包括由软件和/或硬件组成的单元,该单元用于执行第二方面所述的技术方案中任意一种方法。
第五方面,提供了一种计算机设备,计算机设备包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,计算机程序被处理器执行时实现上述的第一方面或第二方面所述的技术方案中任意一种方法。
第六方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述的第一方面或第二方面所述的技术方案中任意一种方法。
第七方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述的第一方面或第二方面所述的技术方案中任意一种方法的步骤。
可以理解的是,上述第三方面、第四方面、第五方面、第六方面和第七方面的有益效果可以参见上述第一方面和第二方面中的相关描述,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一例修复软件版本的方法的流程图;
图2是本申请实施例提供的一例代码段的精确匹配的过程的流程图;
图3是本申请实施例提供的一例相似度阈值的获取方法的流程图;
图4是本申请实施例提供的一例采用训练的方式得到相似度阈值的过程的流程图;
图5是本申请实施例提供的一例代码段的模糊匹配的过程的流程图;
图6是本申请实施例提供的一例针对各缺陷类型修复软件版本的方法的流程图;
图7是本申请实施例提供的一例相似度阈值的获取装置的结构示意图;
图8是本申请实施例提供的一例数据处理装置的结构示意图;
图9是本申请实施例提供的一例计算机设备的结构示意图;
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
应当理解的是,本申请提及的“多个”是指两个或两个以上。在本申请的描述中,除非另有说明,“/”表示或的意思,比如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,比如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,为了便于清楚描述本申请的技术方案,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
在对本申请实施例进行详细地解释说明之前,先对本申请实施例的应用场景予以说明。
在软件开发过程中,随着ERP产品迭代升级,软件版本的数量越来越多。通常,一个软件在开发过程中可能会生成数十个甚至上百个不同的软件版本。为了有序管理不同版本的软件,每个软件版本可以通过版本号进行区分,例如采用版本号为V1.2、V1.3、V1.4等来区分不同的软件版本。当软件版本发布后,可能在发布的软件版本中会存在一些隐藏较深的缺陷,当这个缺陷在多个版本中都存在,并且每个客户使用的软件版本都不一定相同,如果人为去修复这类缺陷则需要人工针对每个在用的软件版本进行单独修复,这样的方式会导致工作量巨大,且修复时出现漏洞的风险大。
通常,修复软件版本可以通过计算机设备自动获取缺陷源文件与待修复文件之间的相似度,并将相似度和人为设定的相似度阈值进行对比。当相似度大于人为设定的相似度阈值时,则认为此时的待修复文件确实存在缺陷,计算机设备可以针对待修复文件对应的软件版本进行修复。然而,上述人为设定的相似度阈值是一个固定的阈值,基于这样固定的阈值来确定是否需要进行修复的方式,在修复的软件版本较多时,可能会由于不同软件版本对应的相似度的离散性较大,导致部分存在缺陷的软件版本无法正常修复,使得修复产生偏差,降低修复的准确性。例如,如果人为设定的相似度阈值为0.99,当软件版本太多,个别软件版本中待修复文件与缺陷源文件相似度达到0.94但是并未达到0.99,也需要进行修复。如果这时采用人为设定的阈值0.99来判断是否需要进行修复,该软件版本则不在修复之列,无法顺利修复。
本申请实施例介绍了一种相似度阈值的获取方法,可以结合之前进行软件版本修复时所采用的历史相似度阈值以及校验结果来确定当前的相似度阈值,使得当前所使用的相似度阈值能够基于软件版本修复成功与否的实际情况进行更新,相比传统的使用固定的阈值的方法,在各软件版本的相似度离散性大的情况下也能够避免产生偏差,从而提高软件版本修复的成功率。
下面首先对软件版本的修复流程进行一个详细的说明。图1为计算机设备修复软件版本的方法流程图,包括:
S101、获取缺陷源文件。
首先,用户操作计算机设备或计算机设备接收到修复指令,启动修复工具。该修复工具可以为安装在计算机设备上的应用程序。该修复工具启动时,首先加载缺陷源文件。缺陷源文件可以存储在本地计算机设备的存储器中;也可以存储在云端的服务器,计算机设备通过网络访问云端的服务器来获取缺陷源文件。
S102、判断缺陷源文件的缺陷类型。
需要说明的是,缺陷源文件具有多种缺陷类型,每种缺陷类型可以对应不同的修复模式。通常,修复模式可以包括全文件匹配、关键词匹配,代码行匹配,代码段匹配等多种类型。每种缺陷类型的缺陷源文件的数量可以是一个或多个。其中,每个缺陷源文件中均可以包括已修复代码和对应的缺陷代码,缺陷代码通常为存在缺陷的代码;已修复代码为能够针对自身对应的缺陷代码进行修复的代码,可以用于替换对应的缺陷代码来保证软件版本的功能,因此已修复代码并不存在缺陷。
上述缺陷源文件的格式可以是CS文件(CS是C#语言源代码文件)、JavaScript文件(是一种具有函数优先的轻量级,解释型或即时编译型的编程语言,简称JS)或CascadingStyle Sheets(层叠样式表,简称CSS)文件,每种不同格式的缺陷源文件可以采用不同的修复模式。例如,CS文件可以采用全文件匹配、关键词匹配、代码行匹配或代码段匹配的修复模式进行修复;JS文件可以采用全文件匹配、关键词匹配或代码行匹配的修复模式进行修复;CSS文件支持全文件匹配、关键词匹配或代码行匹配的修复模式进行修复。
具体的,计算机设备可以根据缺陷源文件所携带的缺陷标识确定缺陷类型。例如,计算机设备获取到缺陷源文件A携带的缺陷标识BugType的赋值,通常该BugType的赋值可以是0、1、2、3等,其中,0代表缺陷类型为全文匹配,1代表关键词匹配,2代表代码行匹配,3代表代码段匹配。当计算机设备读取到缺陷标识BugType的赋值是0时,确定缺陷源文件A的缺陷类型为全文匹配。
S103、获取待修复文件。
上述待修复文件是指存在于软件版本中,导致缺陷产生并需要进行修复的文件。在修复工具启动时,计算机设备可以读取本地存储器中存储的待修复文件或者读取云端服务器中存储的待修复文件。
具体的,计算机设备可以获取不同软件版本中待修复文件所在的文件夹的文件夹路径,并按照这些文件夹路径读取对应的文件夹名称。计算机设备针对获取到的文件夹名称逐一判断规范性。例如,版本规范为:大版本号.中版本号.小版本号.YYMMDD时,计算机设备获取到的文件夹名称为1.0.4.20220730,其中,第一个“1”代表大版本号;第一个“0”代表中版本号;第一个“4”代表小版本号;“20220730”对应“YYMMDD”,代表软件版本的发布日期。如果计算机设备判断出文件夹名称不符合预先设置的版本规范,则不做处理。
如果计算机设备判断出该文件夹名称符合预先设置的版本规范,则可以将该文件夹添加至列表,从而形成待修复文件夹列表。计算机设备通过读取待修复文件夹列表来获取待修复文件。
本步骤S103的执行顺序也可以是在上述S101和S102之前,对此本申请实施例不做限定。
S104、根据缺陷源文件的缺陷类型对待修复文件进行修复。
每种缺陷类型所对应的修复模式有所不同,这里对不同的缺陷类型对应不同的修复模式进行介绍:
1、全文件匹配
全文件匹配是通过把缺陷源文件和待修复文件分别进行信息摘要算法(Message-Digest Algorithm,MD5)加密,然后将二者加密的结果进行对比。如果缺陷源文件和待修复文件的加密结果完全相同,则采用缺陷源文件对待修复文件进行修复,即采用缺陷源文件替换待修复文件;如果缺陷源文件和待修复文件的加密结果不同,则记录错误日志以备后续研发人员进行分析。
2、关键词匹配
缺陷源文件中存在缺陷关键词和对应的已修复关键词,该缺陷关键词为存在缺陷的关键词,数量可以为一个或多个,每个缺陷关键词对应一个已修复关键词。上述缺陷关键词可以是一组字符串。缺陷关键词还可以携带导航路径,导航路径可以表示缺陷关键词在缺陷源文件中的位置。例如,缺陷关键词的导航路径的命名规则为:命名空间-类名-方法名-方法参数个数和类型-关键词。
关键词匹配是通过读取缺陷源文件中缺陷关键词的导航路径,并根据导航路径在待修复文件中进行查找,精确定位到具体的方法名的位置,然后在定位到的方法名中读取内容。之后计算机设备对读取到的内容进行格式化,并按空格进行切词,从而形成规范的字符数组。该规范的字符数组可以为一组或多组。这里得到的规范的字符数组删除了无效的字符串和释义,已经变得精简。每个字符数组均为一个关键词。然后计算机设备可以采用精简后的字符数组逐一和缺陷源文件中的一个或多个缺陷关键词进行循环匹配。
如果匹配成功,则说明关键词定位成功,计算机设备可以用缺陷源文件中已经修复关键词替换待修复文件中对应的字符数组(也即关键词);如果匹配不成功,则说明定位失败,计算机设备可以记录错误日志。例如,精简后的字符数组包括A1、B1、C1、D1,缺陷关键词包括A2、B2、C2,则计算机设备可以采用A1分别和A2、B2、C2进行比对。如果A1和A2相同,则说明匹配成功,计算机设备可以采用缺陷关键词A2对应的已修复关键词A3来替换待修复文件中的A1。如果A1和B2不同,则说明匹配失败,计算机设备可以记录错误日志。计算机设备依次采用B1、C1、D1分别和A2、B2、C2进行比对,逐一得到匹配结果,并根据匹配结果执行替换操作或记录错误日志。
3、代码行匹配
缺陷源文件还可以包括缺陷代码行和对应的已修复代码行。其中,缺陷代码行可以携带导航路径,缺陷代码行的导航路径表示缺陷代码行在缺陷源文件中的位置。例如,缺陷代码行的导航路径规则为:命名空间-类名-方法名-代码行。
代码行匹配是通过读取缺陷源文件中缺陷代码行的导航路径,并根据该导航路径在待修复文件中进行查找,精确定位到具体的方法名的位置,然后在定位到的方法名中读取内容。之后计算机设备对读取到的内容进行格式化,并按空格切词形成字符数组NewNum1,然后剔除NewNum1中的无效字符,从而形成规范的字符数组NewNum2。计算机设备还可以对上述缺陷代码行按空格切词形成字符数组OriginNum1。计算机设备采用精简后的NewNum2和OriginNum1进行匹配,匹配二者的关键词和关键词的顺序。如果二者中的关键词全匹配成功且顺序一致,则采用缺陷源文件中缺陷代码行对应的已修复代码行替换待修复文件中对应位置的代码行。如果匹配失败,则计算机设备记录错误日志。
4、代码段匹配
代码段匹配可以分为精确匹配和模糊匹配两种修复模式。其中,精确匹配可以用在缺陷源文件中携带精确的导航路径的情况,通过该精确的导航路径可以精确定位出缺陷代码段的位置,例如定位到具体的方法下的参数类型。模糊匹配可以用在缺陷源文件中携带导航路径,但是该导航路径只能定位到具体的方法,并没有具体到方法下的参数类型的情况,该方法存在的位置可能是多处,即该方法存在于多个导航路径中,此时并不确定存在缺陷的代码段位于哪个导航路径下。
首先,对精确匹配的具体过程进行描述,如图2所示,包括:
S201、获取缺陷源文件中的缺陷代码段和缺陷代码段对应的导航路径。
具体的,计算机设备读取缺陷源文件中的缺陷代码段和缺陷代码段对应的导航路径,该导航路径的命名规则为:命名空间-类名-方法名-方法参数个数和类型。可选地,上述缺陷源文件可以是CS文件。
S202、根据缺陷代码段的导航路径确定待修复文件中的待修复内容。
计算机设备可以通过读取缺陷源文件中缺陷代码段的导航路径,并根据该导航路径在待修复文件中进行查找,精确定位到具体的方法的位置,定位到的具体的方法中的内容即为待修复内容。
例如,缺陷源文件中包括方法YuYunCrudAppService,该方法中的参数个数为6个,分别为TEntity、TGetOutputDto、TGetListOutputDto、Tkey、TGetLisIntput和TGreateOrUpdateInput。
若待修复文件中也存在上述方法YuYunCrudAppService,该方法中的参数也是6个,且这6个参数与缺陷源文件中相同方法名的方法中的参数个数和参数类型相同,则定位成功。计算机设备可以确定待修复文件中的方法名为YuYunCrudAppService的方法中的内容为待修复内容。
S203、确定待修复内容和缺陷代码段的相似度。
计算机设备可以先对待修复内容进行处理,例如是读取定位到的具体的方法名中的内容,并按行进行分组,之后再按空格分组并剔除无效字符。分组过程中,保持先后顺序不变,从而形成待修复文件数组,该待修复文件数组中包括顺序排列的多个有效字符串。例如待修复文件数组可以为(A、B、C、D),其中,A、B、C和D均为一个有效字符串。
计算机设备还可以针对缺陷源文件中的缺陷代码段进行处理,例如是按行进行分组,之后再按空格分组并剔除无效字符。分组过程中,保持先后顺序不变,从而形成缺陷源文件数组,该缺陷源文件数组中包括顺序排列的多个有效字符串。例如缺陷源文件数组可以为(A、B、C、E),其中,A、B、C和E分均为一个有效字符串。
在一些实施例中,计算两个数组的相似度V可以采用公式(1)或公式(1)的变形得到。
其中,Nvt为待修复文件数组中有效字符串的数量,Ovt为缺陷源文件数组中有效字符串的数量,Ns1、Ns2...Nsn依次为待修复文件数组中有效字符串的序号,Os1、Os2、...Osn依次为缺陷源文件数组中有效字符串的序号,Nm为待修复文件数组中的有效字符串与缺陷源文件数组中的有效字符串全匹配成功数。
例如,待修复文件数组为【‘A’、‘C’、‘B’、‘D’】,缺陷源文件数组为【‘A’、‘B’、‘C’、‘E’】。在上述待修复文件数组【‘A’、‘B’、‘B’、‘D’】中,有效字符串‘A’的序号为1,有效字符串‘C’的序号为2,有效字符串‘B’的序号为3,有效字符串‘D’的序号为4。在上述缺陷源文件数组【‘A’、‘B’、‘C’、‘E’】中,有效字符串‘A’的序号为1,有效字符串‘B’的序号为2,有效字符串‘C’的序号为3,有效字符串‘E’的序号为4。将上述序号带入到公式(1)中,相似度V为:
S204、判断相似度是否为100%。若是,则执行S205A;若否,则执行S205B。
S205A、用缺陷源文件中缺陷代码段对应的已修复代码段,替换待修复文件中的待修复内容。可选地,之后,可以执行S207。
S205B、判断相似度是否大于或等于相似度阈值。若是,则执行S205A;可选地,若否,则执行S206。
可选地,该相似度阈值可以是预设值,例如是用户根据经验设置的0.98、0.96等数值。可选地,相似度阈值还可以是采用下述如图3所示的实施例所获取的相似度阈值。图3为本申请实施例提供的一例相似度阈值的获取方法的流程图。如图3所示,包括:
S301、获取至少一个历史相似度。
上述历史相似度阈值为在之前的代码段修复的过程中所使用过的相似度阈值。该历史相似度的数量可以为一个,也可以为多个。例如之前在代码段修复的过程中所使用过的历史相似度有V1、V2、V3、V4和V5,则计算机设备获取V1、V2、V3、V4和V5。
S302、获取第一历史相似度对应的第一正确数量和第一错误数量,第一历史相似度为至少一个历史相似度中的任意一个,当第一历史相似度对应的软件版本在修复后校验通过时,第一正确数量为1,第一错误数量为0,当第一历史相似度对应的软件版本在修复后校验不通过时,第一正确数量为0,第一错误数量为1。
计算机设备在历次的代码段修复后,都会针对当次所修复的软件版本进行校验,如果校验通过,则确定当次计算的待修复内容和缺陷代码段的相似度对应的第一正确数量为1,第一错误数量为0;如果校验不通过,则确定当次计算的待修复内容和缺陷代码段的相似度对应的第一正确数量为0,第一错误数量为1。例如,在第一次代码段修复过程中,如果使用的历史相似度V1为0.95,且修复后,软件版本校验通过,则该V1对应的第一正确数量NS1为1,第一错误数量Nf1为0。再如,在第二次代码段修复过程中,如果使用的历史相似度V2为0.95,且修复后,软件版本校验不通过,则该V2对应的第一正确数量NS2为0,第一错误数量Nf2为1。
S303、获取总正确数量和总错误数量,总正确数量为至少一个第一正确数量之和,总错误数量为至少一个第一错误数量之和,至少一个第一正确数量、至少一个第一错误数量和至少一个历史相似度一一对应。
上述每个历史相似度均对应一个第一正确数量和一个第一错误数量,因此当历史相似度的个数为至少一个时,第一正确数量的个数也为至少一个,第一错误数量的个数也为至少一个,三者呈一一对应的关系。计算机设备统计每个历史相似度对应的第一正确数量的和,作为总正确数量;计算机设备还统计每个历史相似度值对应的第一错误数量的和,作为总错误数量。
S304、根据至少一个历史相似度、至少一个第一正确数量、至少一个第一错误数量、总正确数量和总错误数量,确定相似度阈值。其中,相似度阈值与总正确数量和总错误数量之差的绝对值负相关,相似度阈值与第一和值的绝对值正相关,第一和值为至少一个第一乘积之和,第一乘积为第一历史相似度与对应的第一正确数量和第一错误数量之差的积,至少一个第一乘积与至少一个历史相似度一一对应。
具体的,计算机设备可以采用公式(2)来计算上述相似度阈值Vs。
其中,V1至Vn为n次代码段匹配过程中所得到的相似度,其中V1是第一次代码段匹配时确定的待修复内容和缺陷代码段的相似度,Vn是第n次代码段匹配时确定的待修复内容和缺陷代码段的相似度;NS1至NSn依次为V1至Vn分别对应的第一正确数量;Nf1至Nfn依次为V1至Vn分别对应的第一错误数量;Nts表示NS1至NSn的和,即总正确数量,Ntf表示Nf1至Nfn的和,即总错误数量。上述n可以为正整数。上述公式(2)中,相似度阈值为第一和值V1×(NS1-Nf1)+…+Vn×(NSn-Nfn)与总正确数量和总错误数量之差(Nts-Ntf)的比值。
例如,历史相似度的数量为4,其中,V1为0.92,V2为0.93,V3为0.94,V4为0.95。当NS1为0,Nf1为1,NS2为1,Nf2为0,NS3为1,Nf3为0,NS4为1,Nf4为0,将这些数值代入上述公式(2)中,则得到相似度阈值Vs为:
可选地,还可以采用上述公式(2)的变形,即公式(3)来确定相似度阈值。
可选地,上述公式(3)中,其中,k可以为正常数,b可以为常数,k和b可以用于修正相似度阈值。例如,k可以为1.01、1.02、0.99、0.98等和1较为接近的数值,b可以为0.01、-0.01、0.02、-0.02、0.003、-0.003等较小的数值。b还可以为0,则公式(3)演变成公式(4)。
上述公式(4)中,相似度阈值Vs与总正确数量和总错误数量之差(Nts-Ntf)成反比,所述相似度阈值和所述第一和值V1×(NS1-Nf1)+…+Vn×(NSn-Nfn)成正比。
可选地,上述公式(3)中,k还可以为1,则公式(3)演变成公式(5)。
在上述公式(2)至公式(5)中,相似度阈值与总正确数量和总错误数量之差的绝对值负相关,相似度阈值与第一和值的绝对值正相关。
上述图3所示的实施例中,计算机设备根据前述历次软件版本修复过程中所得到的历史相似度,并结合每次得到的历史相似度和对应的校验结果来确定相似度阈值,能够对相似度阈值进行修正,使得相似度阈值融合了前述修复的校验结果,实现了相似度阈值的自更新。当不同软件版本对应的相似度离散性较大的时候,采用本申请实施例中的能够自更新的相似度阈值来判断是否需要进行修复,相比传统的固定阈值的方式,避免了修复软件版本所产生的偏差,从而提高了修复软件版本的准确性。
在一些实施例中,还有可能存在异常的情况,相似度阈值计算出来为大于1或小于0的数值。例如V1为0.92,V2为0.99,V3为0.98,当NS1为0,Nf1为1,NS2为1,Nf2为0,NS3为1,Nf3为0。将这些数值带入上述公式(2)中,则得到相似度阈值为1.05。有相似度的物理意义可知,二者的相似度最小为0,最大为1,因此上述大于1或小于0的相似度阈值为非法值,这样的非法值无法正常衡量相似度,则此时直接将相似度阈值更新为一个固定值,例如更新为0.99。本实施例的实现还可以通过公式Vs=(Vs<0‖Vs>1)?0.99:Vs来表达,即当计算得到的相似度阈值大于1或小于0时,直接将相似度阈值更新为固定值0.99,当计算得到的相似度阈值并没有大于1或小于0时(即大于等于0且小于等于1),则以计算得到的相似度阈值为准。
在上述实施例中,如果Vs小于0,由于无论待修复文件和缺陷代码段的相似度高还是低,都会大于Vs,如果基于这样的Vs去判断是否修复软件版本,则所有的软件版本都满足修复要求,即使是不需要修复的待修复文件(例如和缺陷代码段相似度很低的待修复文件)都会被修复,则会出现误修复的情况。如果Vs大于0,无论待修复文件和缺陷代码段的相似度高还是低,都会小于Vs,如果基于这样的Vs去修复软件版本,即使是和缺陷代码段完全一样的待修复文件,也不会被修复,因此达不到修复软件版本的目的。因此当计算得到的相似度阈值大于1或小于0时,直接将相似度阈值更新为固定值可以避免上述异常的情况发生,提高了软件版本修复的成功率和准确性,且采用0.95至0.99之间的取值,合理性高。
可选的,在第一次代码段匹配时,判断V1是否大于相似度阈值的过程中,此处的相似度阈值还可以采用多个训练样本训练得到。具体可以参见下述图4所示的实施例,此处暂不赘述。
上述图2所示的实施例中,计算机设备在进行代码段修复的过程中,采用了图3实施例以及相关的实施例所提供的相似度阈值来确定是否执行修复的操作。由于图3及其相关实施例中,计算机设备根据前述历次软件版本修复过程中所得到的历史相似度,并结合每次得到的历史相似度和对应的校验结果来确定相似度阈值,能够对相似度阈值进行修正,使得相似度阈值融合了前述修复的校验结果,实现了相似度阈值的自更新。当不同软件版本对应的相似度离散性较大的时候,计算机设备在代码段修复过程中,基于能够自更新的相似度阈值来判断是否需要进行软件版本的修复,相比基于传统的固定阈值来判断的方式,避免了修复软件版本所产生的偏差,从而提高了修复软件版本的准确性。
可选地,精确匹配的具体过程还可以包括如下步骤:
S206、记录错误日志,以备研发人员进行分析。
S207、获取校验结果。
当软件版本修复完成之后,可以对修复后的软件版本进行校验。例如,采用人工校验或计算机设备自动执行测试用例的方式,来校验需要克服的缺陷是否成功克服。如果校验通过,则可以记录一条校验通过的校验结果,例如此次为第n次修复的记录,可以记录确定出的待修复内容和缺陷代码段的相似度为Vn,对应的第一正确数量为NSn为1,第一错误数量为Nfn为0。如果校验不通过,则记录一条校验不通过的校验结果,例如此次为第n次修复的记录,可以记录确定出的待修复内容和缺陷代码段的相似度为Vn,则对应的第一正确数量为NSn为0,第一错误数量为Nfn为1。
S208、根据校验结果更新相似度阈值。
计算机设备可以在获取到一条校验结果时,根据该校验结果对相似度阈值进行更新。计算机设备还可以在获取到预设数量的校验结果时,例如记录了三条校验结果时,则根据这些校验结果对相似度阈值进行更新。计算机设备也可以按照固定的周期依据新记录的校验结果对相似度阈值进行更新。可选地,该固定的周期可以根据需要进行设置,例如是一小时、两小时或其他的周期,本申请实施例对此并不做限定。例如,Vs是根据上述公式(2)确定的,如果此时生成第n+1次校验结果,则可以将该次的校验结果带入上述公式(2),形成公式(6)。
上述实施例中,计算机设备在修复完软件版本后,获取修复后的软件版本的校验结果,并根据校验结果反写相似度阈值,能够将本次修复的校验结果融入相似度阈值中,提高了相似度阈值和实际情况的匹配程度,进一步提高了软件版本修复的准确性。
接下来对如何通过多个训练样本训练得到最初的相似度阈值的过程进行描述。如图4所示,该方法包括:
S401、获取多个相似度训练值。
S402、获取第一相似度训练值对应的第一正确训练数量和第一错误训练数量,第一相似度训练值为多个相似度训练值中的任意一个,当基于第一相似度训练值修复的软件版本校验通过时,第一正确训练数量为1,第一错误训练数量为0,当相似度训练值修复的软件版本校验不通过时,第一正确训练数量为0,第一错误训练数量为1。
具体的,计算机设备可以预先获取多组训练数据,每组训练数据中包括一个相似度训练值,以及每个相似度训练值所对应的第一正确训练数量和第一错误训练数量。例如,训练数据可以选用一千条甚至更多,训练数据数量越多,则所得到的相似度阈值的鲁棒性越强,基于这样的相似度阈值来修复软件版本的准确性也就越强。
需要说的是,任意一个相似度训练值都是通过将一组用于训练的待修复内容和缺陷源文件中的缺陷代码段进行对比得到的相似度的数值。当基于该组用于训练的待修复内容对软件版本进行修复后,如果校验通过,则该第一正确训练数量为1,第一错误训练数量为0,当相似度训练值修复的软件版本校验不通过时,第一正确训练数量为0,第一错误训练数量为1。
S403、获取总正确训练数量和总错误训练数量。其中,总正确训练数量为多个第一正确训练数量之和,总错误训练数量为多个第一错误训练数量之和,多个第一正确训练数量、多个第一错误训练数量和多个相似度训练值一一对应。
具体的,计算机设备统计上所有的第一正确训练数量之和,作为总正确训练数量,并统计所有的第一错误训练数量之和,作为总错误训练数量。
S404、确定第二和值与总正确训练数量和总错误训练数量之差的比值为相似度阈值,第二和值为多个第二乘积的和,第二乘积为第一相似度训练值与第一相似度训练值对应的第一正确训练数量与第一错误训练数量之差的乘积,多个第一乘积与多个相似度训练值一一对应。
计算机设备可以采用上述公式(2)至公式(5)中任意一个来计算得到相似度阈值。本实施例中,第一相似度训练值可以用Vn表示,Vn对应的第一错误训练数量可以用Nfn表示,Vn对应的第一正确训练数量可以用Nsn表示。其中,n可以取大于等于1的正整数。上述多个相似度训练值可以用V1至Vn表示,V1至Vn对应的第一错误训练数量可以依次用Nf1至Nfn表示,Vn对应的第一正确训练数量可以依次Ns1至Nsn表示。
上述图4实施例的技术方案中,计算机设备可以根据多次获取的相似度训练值,并结合每个相似度训练值对应的校验结果来确定相似度阈值,能够根据每次的校验结果对相似度阈值进行修正,使得相似度阈值学习了多次修复的校验结果,提高了相似度阈值的鲁棒性。当不同软件版本对应的相似度离散性较大的时候,采用本申请实施例中的相似度阈值来判断软件版本是否需要进行修复,相比传统的固定阈值的方式,避免了修复软件版本所产生的偏差,从而提高了修复软件版本的准确性。
前文中对精确匹配的具体过程进行描述,并详细介绍了如何获取相似度阈值的过程。这样的相似度阈值还以应用在代码段的模糊匹配的流程中,接下来对代码段的模糊匹配的过程进行描述,可以参见图5所示的流程,包括:
S501、获取缺陷源文件中的缺陷代码段和缺陷代码段对应的导航路径。
此处的导航路径的命名规则可以为:命名空间-类名-方法名,其中并不包含具体的方法参数个数和类型。
S502、根据缺陷代码段的导航路径确定待修复文件中的待修复内容。
计算机设备可以根据上述缺陷代码段的导航路径在待修复文件中查找,找到导航路径中的方法的位置,方法中的内容即为待修复内容。
由于上述导航路径的命名中没有包含具体的方法参数个数和类型,无法区分相同方法名的方法中的不同内容,计算机设备通过读取缺陷源文件中缺陷代码段的导航路径定位到的方法可能是一处,也有可能是多处,则定位得到的待修复内容可以存在于一处,也可以存在于多处。例如,缺陷源文件中的缺陷代码段的导航路径中的方法名为YuYunCrudAppService。若待修复文件中也存在上述方法YuYunCrudAppService,则定位成功。计算机设备可以确定待修复文件中的方法名为YuYunCrudAppService的方法中的内容为待修复内容。此时,待修复内容可能包括待修复文件中多处的内容,这些内容对应的方法名相同。
S503、确定待修复内容和缺陷代码段的相似度。
计算机设备可以先对每处的待修复内容进行处理。以其中一处的待修复内容作为第一待修复内容为例进行描述:计算机设备根据导航路径,定位到其中一处具体的方法名,并获取此处的方法名中的第一待修复内容,然后将该第一待修复内容按行进行分组,之后再按空格分组并剔除无效字符。分组过程中,保持先后顺序不变,从而形成待修复文件数组,该待修复文件数组中包括顺序排列的多个有效字符串。例如待修复文件数组可以为【‘A’、‘B’、‘C’、‘D’】,其中,A、B、C和D均为一个有效字符串。同理,计算机设备可以针对每处的待修复内容执行上述处理,并获取每处的待修复内容生成的待修复文件数组。
计算机设备还可以针对缺陷源文件中的缺陷代码段进行处理,例如是按行进行分组,之后再按空格分组并剔除无效字符。分组过程中,保持先后顺序不变,从而形成缺陷源文件数组,该缺陷源文件数组中包括顺序排列的多个有效字符串。例如缺陷源文件数组可以为【‘A’、‘B’、‘C’、‘E’】,其中,A、B、C和E分别为一个有效字符串。
在一些实施例中,计算机设备可以采用上述公式(1)或公式(1)的变形分别计算每个待修复文件数组和缺陷源文件数组的相似度,并生成相似度数组。
以上述待修复内容包括两处的内容为例,其中一处的待修复内容生成的待修复文件数组M1为【‘A’、‘B’、‘C’、‘D’】,另外一处的待修复内容生成的待修复文件数组M2为【‘A’、‘E’、‘C’、‘D’】,缺陷源文件数组M3为【‘A’、‘B’、‘C’、‘E’】,则计算机设备先计算M1和M3的相似度Vm13,再计算M2和M3的相似度Vm23,形成的相似度数组可以表示为【Vm13,Vm23】。计算机设备采用上述公式(1),计算得到Vm13为0.75,Vm23为0.625,则相似度数组为【0.75,0.625】。
S504、判断缺陷源文件对应的修复模式是否支持多代码更新。若是,则执行S505A;若否,则执行S505B。
计算机设备获取该缺陷源文件的功能参数,该功能参数用于表征缺陷源文件对应的修复模式是否支持多代码段更新。计算机设备可以根据功能参数的赋值来确定缺陷源文件是否支持多代码更新,
例如,当该功能参数为true时,则表示缺陷源文件对应的修复模式支持多代码段更新的功能;当该功能参数为false时,则表示缺陷源文件对应的修复模式不支持多代码更新。
S505A、判断相似度数组中的第一相似度是否为100%。其中,该第一相似度为相似度数组中的任意一个相似度。若是,则执行S506A;若否执行S506B。
S505B、计算机设备从相似度数组中选出最大的相似度作为第一相似度,并判断第一相似度是否为100%。若是,则执行S506A;若否执行S506B。
S506A、用缺陷源文件中的缺陷代码段对应的已修复代码段,替换待修复文件中第一相似度值对应的待修复内容。可选的,之后,执行S508。
S506B、判断第一相似度是否大于或等于相似度阈值。若是,则执行S506A。可选的,若否,则执行S507。
需要说明的是,此处的相似度阈值的获取方式和有益效果可以参见图3实施例以及基于图3实施例进行改进的其他实施例的描述,此处不再赘述。
S507、记录错误日志。
S508、获取校验结果。
上述S507和S508的技术原理和有益效果可以分别参见S207和S208的描述,此处不再赘述。
上文详细介绍了本申请提供的方法的示例。可以理解的是,相应的装置为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请可以根据上述方法示例对相似度阈值的获取装置和数据处理装置进行功能模块的划分,例如,可以将各个功能划分为各个功能模块,也可以将两个或两个以上的功能集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
图7示出了本申请提供的一种相似度阈值的获取装置700的结构示意图。装置700包括:
第一获取模块701,用于获取至少一个历史相似度。
第二获取模块702,用于获取第一历史相似度对应的第一正确数量和第一错误数量,第一历史相似度为至少一个历史相似度中的任意一个,当第一历史相似度对应的软件版本在修复后校验通过时,第一正确数量为1,第一错误数量为0,当第一历史相似度对应的软件版本在修复后校验不通过时,第一正确数量为0,第一错误数量为1。
第三获取模块703,用于获取总正确数量和总错误数量,总正确数量为至少一个第一正确数量之和,总错误数量为至少一个第一错误数量之和,至少一个第一正确数量、至少一个第一错误数量和至少一个历史相似度一一对应。
第一确定模块704,用于根据至少一个历史相似度、至少一个第一正确数量、至少一个第一错误数量、总正确数量和总错误数量,确定相似度阈值。其中,相似度阈值与总正确数量和总错误数量之差的绝对值负相关,相似度阈值与第一和值的绝对值正相关,第一和值为至少一个第一乘积之和,第一乘积为第一历史相似度与对应的第一正确数量和第一错误数量之差的积,至少一个第一乘积与至少一个历史相似度一一对应。
在一些实施例中,相似度阈值与总正确数量和总错误数量之差成反比,相似度阈值和第一和值成正比。
在一些实施例中,相似度阈值为第一和值与总正确数量和总错误数量之差的比值。
在一些实施例中,相似度阈值Vs的表达式为:
其中,V1至Vn均为历史相似度,NS1至NSn依次为V1至Vn对应的第一正确数量,Nf1至Nfn依次为V1至Vn对应的第一错误数量,Nts表示历史相似度的总正确数量,Nts为NS1至NSn的和,Ntf表示历史相似度的总错误数量,Ntf为Nf1至Nfn的和。
在一些实施例中,确定模块704,还用于当相似度阈值小于0或大于1时,则更新相似度阈值为固定值,固定值的取值范围为0.95至0.99之间。
装置700执行相似度阈值的获取方法的具体方式以及产生的有益效果可以参见方法实施例中的相关描述,此处不再赘述。
图8示出了本申请提供的一种数据处理装置800的结构示意图。装置800包括:
第四获取模块801,用于获取待修复文件和缺陷源文件。
第二确定模块802,用于确定缺陷源文件的缺陷类型为代码段匹配的类型时,获取待修复文件中的待修复内容。
第三确定模块803,用于确定待修复内容和缺陷源文件中缺陷代码段的相似度。
修复模块804,用于当相似度大于相似度阈值时,采用缺陷源文件中缺陷代码段对应的已修复代码段替换待修复内容,以修复软件版本。相似度阈值为上述方法实施例中所描述的相似度阈值。
在一些实施例中,装置800还包括:
更新模块805,用于获取校验结果,并根据校验结果更新相似度阈值,校验结果用于表征修复后的软件版本是否校验通过。
在一些实施例中,历史相似度为用于训练的相似度训练值,相似度训练值的数量为多个,相似度阈值为采用多个相似度训练值、以及每个相似度训练值对应的第一正确数量和第一错误数量进行训练得到的阈值。
装置800执行数据处理方法的具体方式以及产生的有益效果可以参见方法实施例中的相关描述,此处不再赘述。
图9为本申请实施例提供的一种计算机设备的结构示意图。如图9所示,计算机设备900包括:处理器910、存储器920以及存储在存储器920中并可在处理器910上运行的计算机程序921,处理器910执行计算机程序920时实现上述实施例中的相似度阈值的获取方法或数据处理方法中的步骤。
计算机设备900可以是一个通用计算机设备或一个专用计算机设备。在具体实现中,计算机设备900可以是台式机、便携式电脑、网络服务器、掌上电脑、移动手机、平板电脑、无线终端设备、通信设备或嵌入式设备,本申请实施例不限定计算机设备900的类型。本领域技术人员可以理解,图9仅仅是计算机设备900的举例,并不构成对计算机设备900的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,比如还可以包括输入输出设备、网络接入设备等。
处理器910可以是中央处理单元(Central Processing Unit,CPU),处理器910还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者也可以是任何常规的处理器。
存储器920在一些实施例中可以是计算机设备900的内部存储单元,比如计算机设备900的硬盘或内存。存储器920在另一些实施例中也可以是计算机设备900的外部存储设备,比如计算机设备900上配备的插接式硬盘、智能存储卡(Smart Media Card,SMC)、安全数字(Secure Digital,SD)卡、闪存卡(Flash Card)等。进一步地,存储器920还可以既包括计算机设备900的内部存储单元也包括外部存储设备。存储器920用于存储操作系统、应用程序、引导装载程序(Boot Loader)、数据以及其他程序等。存储器920还可以用于暂时地存储已经输出或者将要输出的数据。
上述计算机设备包括:至少一个处理器、存储器以及存储在该存储器中并可在该至少一个处理器上运行的计算机程序,该处理器执行该计算机程序时实现上述任意各个方法实施例中的步骤。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时可实现上述各个方法实施例中的步骤。
本申请实施例提供了一种计算机程序产品,当其在计算机上运行时,使得计算机执行上述各个方法实施例中的步骤。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述方法实施例中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,该计算机程序包括计算机程序代码,该计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。该计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照装置/终端设备的任何实体或装置、记录介质、计算机存储器、ROM(Read-Only Memory,只读存储器)、RAM(Random Access Memory,随机存取存储器)、CD-ROM(Compact Disc Read-Only Memory,只读光盘)、磁带、软盘和光数据存储设备等。本申请提到的计算机可读存储介质可以为非易失性存储介质,换句话说,可以是非瞬时性存储介质。
应当理解的是,实现上述实施例的全部或部分步骤可以通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。该计算机指令可以存储在上述计算机可读存储介质中。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/计算机设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/计算机设备实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (10)
1.一种相似度阈值的获取方法,其特征在于,所述方法包括:
获取至少一个历史相似度;
获取第一历史相似度对应的第一正确数量和第一错误数量,所述第一历史相似度为所述至少一个历史相似度中的任意一个,当所述第一历史相似度对应的软件版本在修复后校验通过时,所述第一正确数量为1,所述第一错误数量为0,当所述第一历史相似度对应的软件版本在修复后校验不通过时,所述第一正确数量为0,所述第一错误数量为1;
获取总正确数量和总错误数量,所述总正确数量为至少一个所述第一正确数量之和,所述总错误数量为至少一个所述第一错误数量之和,所述至少一个所述第一正确数量、所述至少一个所述第一错误数量和所述至少一个历史相似度一一对应;
根据所述至少一个历史相似度、所述至少一个所述第一正确数量、所述至少一个所述第一错误数量、所述总正确数量和所述总错误数量,确定所述相似度阈值;
其中,所述相似度阈值与所述总正确数量和所述总错误数量之差的绝对值负相关,所述相似度阈值与第一和值的绝对值正相关,所述第一和值为至少一个第一乘积之和,所述第一乘积为所述第一历史相似度与对应的所述第一正确数量和所述第一错误数量之差的积,所述至少一个第一乘积与所述至少一个历史相似度一一对应。
2.如权利要求1所述的方法,其特征在于,所述相似度阈值与所述总正确数量和所述总错误数量之差成反比,所述相似度阈值和所述第一和值成正比。
3.如权利要求2所述的方法,其特征在于,所述相似度阈值为所述第一和值与所述总正确数量和所述总错误数量之差的比值。
5.如权利要求1至4任一项所述的方法,其特征在于,若所述相似度阈值小于0或大于1,则更新所述相似度阈值为固定值,所述固定值的取值范围为0.95至0.99之间。
6.一种数据处理方法,其特征在于,包括:
获取待修复文件和缺陷源文件;
确定所述缺陷源文件的缺陷类型为代码段匹配的类型时,获取所述待修复文件中的待修复内容;
确定所述待修复内容和所述缺陷源文件中缺陷代码段的相似度;
当所述相似度大于相似度阈值时,采用所述缺陷源文件中缺陷代码段对应的已修复代码段替换所述待修复内容,以修复软件版本;
其中,所述相似度阈值为如权利要求1至5任一项所述的相似度阈值。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
获取校验结果,所述校验结果用于表征修复后的所述软件版本是否校验通过;
根据所述校验结果更新所述相似度阈值。
8.如权利要求6或7所述的方法,其特征在于,历史相似度为用于训练的相似度训练值,所述相似度训练值的数量为多个,所述相似度阈值为采用多个所述相似度训练值、以及每个所述相似度训练值对应的第一正确数量和第一错误数量进行训练得到的阈值。
9.一种计算机设备,其特征在于,所述计算机设备包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至8任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至8任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210896361.3A CN115291932A (zh) | 2022-07-27 | 2022-07-27 | 相似度阈值的获取方法、数据处理方法及产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210896361.3A CN115291932A (zh) | 2022-07-27 | 2022-07-27 | 相似度阈值的获取方法、数据处理方法及产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115291932A true CN115291932A (zh) | 2022-11-04 |
Family
ID=83823922
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210896361.3A Pending CN115291932A (zh) | 2022-07-27 | 2022-07-27 | 相似度阈值的获取方法、数据处理方法及产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115291932A (zh) |
-
2022
- 2022-07-27 CN CN202210896361.3A patent/CN115291932A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10175969B2 (en) | Data processing for upgrading medical equipment | |
US8682898B2 (en) | Systems and methods for discovering synonymous elements using context over multiple similar addresses | |
US7313514B2 (en) | Validating content of localization data files | |
US20140222853A1 (en) | Systems and methods for the comparison of annotations within files | |
US20140380279A1 (en) | Prioritizing test cases using multiple variables | |
US9864793B2 (en) | Language tag management on international data storage | |
US20120226658A1 (en) | Data model versioning for document databases | |
CN107346284B (zh) | 一种应用程序的检测方法及检测装置 | |
US20120296878A1 (en) | File set consistency verification system, file set consistency verification method, and file set consistency verification program | |
EP3428828B1 (en) | System and method for locating and correcting vulnerabilites in a target computer system | |
US10339035B2 (en) | Test DB data generation apparatus | |
US20210334292A1 (en) | System and method for reconciliation of data in multiple systems using permutation matching | |
CN110955661A (zh) | 数据融合方法、装置、可读存储介质及电子设备 | |
CN110874364B (zh) | 一种查询语句处理方法、装置、设备及存储介质 | |
EP2797001B1 (en) | System and method for creating variants in a test database during various test stages | |
CN115291932A (zh) | 相似度阈值的获取方法、数据处理方法及产品 | |
JP4215255B2 (ja) | デグレード確認検査方法、デグレード確認検査システム、およびそのためのプログラム | |
CN110674249B (zh) | 一种信息处理方法及装置 | |
US11392371B2 (en) | Identification of a partial code to be refactored within a source code | |
CN112685277A (zh) | 警告信息检查方法、装置、电子设备和可读存储介质 | |
CN111897568B (zh) | 一种系统校验的方法、装置、设备及存储介质 | |
CN112817652B (zh) | 计算机环境的配置方法、装置、计算机设备以及存储介质 | |
CN117112400B (zh) | 测试用例自动生成平台 | |
US11748344B2 (en) | Account merging and migration with reduced error rates | |
CN110347710B (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 |