CN111722998B - 代码的质量控制方法、***、设备及存储介质 - Google Patents
代码的质量控制方法、***、设备及存储介质 Download PDFInfo
- Publication number
- CN111722998B CN111722998B CN201910218519.XA CN201910218519A CN111722998B CN 111722998 B CN111722998 B CN 111722998B CN 201910218519 A CN201910218519 A CN 201910218519A CN 111722998 B CN111722998 B CN 111722998B
- Authority
- CN
- China
- Prior art keywords
- code
- codes
- change
- defect
- repair
- 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
- 238000003908 quality control method Methods 0.000 title claims description 75
- 238000003860 storage Methods 0.000 title claims description 19
- 230000007547 defect Effects 0.000 claims abstract description 240
- 230000008859 change Effects 0.000 claims abstract description 193
- 230000008439 repair process Effects 0.000 claims abstract description 187
- 238000000034 method Methods 0.000 claims description 49
- 238000012986 modification Methods 0.000 claims description 30
- 230000004048 modification Effects 0.000 claims description 30
- 238000004590 computer program Methods 0.000 claims description 24
- 238000004891 communication Methods 0.000 claims description 16
- 230000002950 deficient Effects 0.000 claims description 12
- 230000006872 improvement Effects 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 18
- 230000006870 function Effects 0.000 description 13
- 238000012552 review Methods 0.000 description 13
- 238000001514 detection method Methods 0.000 description 11
- 238000012545 processing Methods 0.000 description 10
- 238000010367 cloning Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 5
- 238000012360 testing method Methods 0.000 description 4
- 230000004931 aggregating effect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000000638 solvent extraction Methods 0.000 description 3
- 230000002776 aggregation Effects 0.000 description 2
- 238000004220 aggregation Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 108091081062 Repeated sequence (DNA) Proteins 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 239000012535 impurity Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/362—Software debugging
- G06F11/3628—Software debugging of optimised code
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请实施例提供一种代码的质量控制方法、***、设备及存储介质,在本申请实施例中,根据划分后的变更代码,生成代码缺陷模板以及对应的代码修复模板,变更代码包括变更前的缺陷代码以及变更后的修复代码;根据待评审代码与代码缺陷模板匹配的匹配结果时,提供代码缺陷模板对应的代码修复模板,以对待评审代码进行修复,从而能够自动地帮助用户快速查找到代码中潜在的缺陷,并快速定位代码缺陷,提供代码修复建议;每找到一个代码缺陷并将它修复对于程序的稳定,代码质量的提升都具有较大意义。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种代码的质量控制方法、***、设备及存储介质。
背景技术
随着计算机以及互联网的发展,越来越多的用户可以享受计算机以及互联网上的程序带来的众多功能,如,线上购物、线上娱乐、线上视频直播等等,然而,程序是编程人员编写的,难免会存在程序漏洞的问题,而程序漏洞除了会给用户带来较差的使用体验外,严重的还会影响用户的隐私安全以及财产安全等等。
发明内容
本申请的多个方面提供一种代码的质量控制方法、***、设备及存储介质,用以自动地查找代码中存在的代码缺陷,并提供代码缺陷的修复建议。
本申请实施例提供一种代码的质量控制方法,包括:获取变更代码,变更代码包括变更前的缺陷代码以及变更后的修复代码;根据相似度,对多个变更代码进行划分,并根据划分后的变更代码,生成代码缺陷模板以及对应的代码修复模板;根据待评审代码与所述代码缺陷模板匹配的匹配结果,提供所述代码缺陷模板对应的代码修复模板,以对所述待评审代码进行修复。
本申请实施例还提供一种代码的质量控制方法,包括:获取变更代码,变更代码包括变更前的缺陷代码以及变更后的修复代码;根据相似度,对多个变更代码进行划分,并根据划分后的变更代码,生成代码缺陷模板以及对应的代码修复模板。
本申请实施例还提供一种代码的质量控制方法,包括:获取待评审代码,并将所述待评审代码与代码缺陷模板进行匹配;根据待评审代码与所述代码缺陷模板匹配的匹配结果,提供所述代码缺陷模板对应的代码修复模板,以对所述待评审代码进行修复。
本申请实施例还提供一种代码的质量控制***,包括:第一设备、第二设备以及第三设备;所述第一设备,用于接收待评审代码,并将所述待评审代码发送至所述第二设备;接收所述第二设备提供的代码修复模板,以对所述待评审代码进行修复;所述第二设备,用于获取变更代码,变更代码包括变更前的缺陷代码以及变更后的修复代码;根据相似度,对多个变更代码进行划分,并根据划分后的变更代码,生成代码缺陷模板以及对应的代码修复模板;所述第三设备,用于根据待评审代码与所述代码缺陷模板匹配的匹配结果,提供所述代码缺陷模板对应的代码修复模板。
本申请实施例还提供一种设备,包括存储器、处理器以及通信组件;所述存储器,用于存储计算机程序;所述通信组件,用于获取变更代码,变更代码包括变更前的缺陷代码以及变更后的修复代码;所述处理器,用于执行所述计算机程序,以用于:根据相似度,对多个变更代码进行划分,并根据划分后的变更代码,生成代码缺陷模板以及对应的代码修复模板;根据待评审代码与所述代码缺陷模板匹配的匹配结果,提供所述代码缺陷模板对应的代码修复模板,以对所述待评审代码进行修复。
本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序被一个或多个处理器执行时,致使所述一个或多个处理器实现代码的评审方法中的步骤。
本申请实施例还提供一种设备,包括存储器、处理器以及通信组件;所述存储器,用于存储计算机程序;所述通信组件,用于获取变更代码,变更代码包括变更前的缺陷代码以及变更后的修复代码;所述处理器,用于执行所述计算机程序,以用于:根据相似度,对多个变更代码进行划分,并根据划分后的变更代码,生成代码缺陷模板以及对应的代码修复模板。
本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序被一个或多个处理器执行时,致使所述一个或多个处理器实现代码的评审方法中的步骤。
在本申请实施例中,根据划分后的变更代码,生成代码缺陷模板以及对应的代码修复模板,变更代码包括变更前的缺陷代码以及变更后的修复代码;根据待评审代码与代码缺陷模板匹配的匹配结果,提供代码缺陷模板对应的代码修复模板,以对待评审代码进行修复,从而能够自动地帮助用户快速查找到代码中潜在的缺陷,并快速定位代码缺陷,提供代码修复建议;每找到一个代码缺陷并将它修复对于程序的稳定,代码质量的提升都具有较大意义。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1A为本申请一示例性代码的质量控制***的结构示意图;
图1B为本申请一示例性代码的质量控制***的结构示意图;
图2为本申请另一示例性实施例的代码的质量控制方法的流程示意图;
图3为本申请另一示例性实施例提供的又一种代码的质量控制方法的流程示意图;
图4为本申请另一示例性实施例提供的又一种代码的质量控制方法的流程示意图;
图5为本申请又一示例性实施例提供的开启代码评审的设置界面示意图;
图6为本申请又一示例性实施例提供的一种代码的质量控制装置的结构示意图;
图7为本申请又一示例性实施例提供的又一种代码的质量控制装置的结构示意图;
图8为本申请又一示例性实施例提供的又一种代码的质量控制装置的结构示意图;
图9为本申请又一示例性实施例提供的一种服务器的结构示意图;
图10为本申请又一示例性实施例提供的一种服务器的结构示意图;
图11为本申请又一示例性实施例提供的一种服务器的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
代码的缺陷检测是指代码是否有违反人工制订好的检测规则。然而,在人工的评审过程中,有很多代码缺陷是人工评审很难发现的。
在本申请实例中,利用海量历史数据的挖掘,寻找代码缺陷和修复模式,能发现人工评审无法发现的缺陷问题,且不需要对代码进行编译,同时评审速度快。
在本申请一些实施例中,根据划分后的变更代码,生成代码缺陷模板以及对应的代码修复模板,变更代码包括变更前的缺陷代码以及变更后的修复代码;根据待评审代码与代码缺陷模板匹配的匹配结果,提供代码缺陷模板对应的代码修复模板,以对待评审代码进行修复,从而能够自动地帮助用户快速查找到代码中潜在的缺陷,并快速定位代码缺陷,提供代码修复建议;每找到一个代码缺陷并将它修复对于程序的稳定,代码质量的提升都具有较大意义。
以下结合附图,详细说明本申请各实施例提供的技术方案。
图1A为本申请一示例性实施例提供的一种代码的质量控制***的结构示意图。如图1A所示,该质量控制***100A包括:第一终端101以及第一设备102。
其中,第一终端101可以是任何具有一定计算能力的设备,例如,可以是智能手机、笔记本、PC(personal computer)电脑等。第一终端101的基本结构包括:至少一个处理器。处理器的数量取决于第一终端101的配置和类型。第一终端101也可以包括存储器,该存储器可以为易失性的,例如RAM,也可以为非易失性的,例如只读存储器(Read-Only Memory,ROM)、闪存等,或者也可以同时包括两种类型。存储器内通常存储有操作***(OperatingSystem,OS)、一个或多个应用程序,也可以存储有程序数据等。除了处理单元和存储器之外,第一终端101还包括一些基本配置,例如网卡芯片、IO总线、摄像头以及音视频组件等。可选地,第一终端101还可以包括一些***设备,例如键盘、鼠标、输入笔、打印机等。其它***设备在本领域中是众所周知的,在此不做赘述。
第一设备102是指可以在网络虚拟环境中进行代码质量控制的服务器,通常是指能够基于互联网络进行代码质量控制的服务器。在物理实现上,第一设备102可以是任何能够提供计算服务,响应服务请求,并进行处理的设备,例如可以是常规服务器、云服务器、云主机、虚拟中心等。服务器的构成主要包括处理器、硬盘、内存、***总线等,和通用的计算机架构类似。
在本实施例中,第一设备102,获取变更代码,变更代码包括变更前的缺陷代码以及变更后的修复代码;根据相似度,对多个变更代码进行划分,并根据划分后的变更代码,生成代码缺陷模板以及对应的代码修复模板;根据待评审代码与代码缺陷模板匹配的匹配结果,提供代码缺陷模板对应的代码修复模板,以对待评审代码进行修复。
在一些实例中,该质量控制***100A还包括:代码仓库103。其中,代码仓库103是指可以在网络虚拟环境中进行代码存储的服务器,通常是指能够基于互联网络进行代码存储的服务器。在物理实现上,代码仓库103可以是任何能够提供计算服务,响应服务请求,并进行处理的设备,例如可以是常规服务器、云服务器、云主机、虚拟中心等。服务器的构成主要包括处理器、硬盘、内存、***总线等,和通用的计算机架构类似。
可选地,第一终端101通过代码仓库103向第一设备102发送待评审代码,第一设备102在接收到待评审代码后,将该待评审代码与代码缺陷模板进行对比。
可选地,第一设备102将对应的代码修复模板发送至第一终端101,以使第一终端101展示该代码修复模板,并根据用户,如编程人员,的执行操作,对待评审代码进行修复。
需要说明的是,本申请实施例可以帮助编程人员对编程的代码进行自动的评审,当编程的代码存在漏洞或者缺陷时,可以向编程人员提供修改建议,使得编程人员根据修改建议进行代码的修复,编程人员将修复后的代码在发送至代码仓库,以便后续代码的更新。
在本实施例中,第一终端101与第一设备102进行网络连接。第一终端101与代码仓库103进行网络连接。第一终端101与第一设备102之间可以是无线或有线网络连接。第一终端101与代码仓库103之间可以是无线或有线网络连接。若第一终端101通过移动网络与第一设备102通信连接,则该移动网络的网络制式可以为2G(GSM)、2.5G(GPRS)、3G(WCDMA、TD-SCDMA、CDMA2000、UTMS)、4G(LTE)、4G+(LTE+)、WiMax等中的任意一种。若第一终端101通过移动网络与代码仓库103通信连接,则该移动网络的网络制式可以为2G(GSM)、2.5G(GPRS)、3G(WCDMA、TD-SCDMA、CDMA2000、UTMS)、4G(LTE)、4G+(LTE+)、WiMax等中的任意一种。
图1B为本申请一示例性实施例提供的一种代码的质量控制***的结构示意图。如图1B所示,该质量控制***100B包括:第一终端101、第一设备102’、第二设备104以及第三设备105。其中,质量控制***100B中的第一终端101与质量控制***100A中的第一终端101相同,此处就不再赘述。
第一设备102’是指可以在网络虚拟环境中进行代码质量控制的服务器,通常是指能够基于互联网络进行代码质量控制的服务器。在物理实现上,第一设备102’可以是任何能够提供计算服务,响应服务请求,并进行处理的设备,例如可以是常规服务器、云服务器、云主机、虚拟中心等。服务器的构成主要包括处理器、硬盘、内存、***总线等,和通用的计算机架构类似。
第二设备104是指可以在网络虚拟环境中进行代码缺陷检测的服务器,通常是指能够基于互联网络进行代码缺陷检测的服务器。在物理实现上,第二设备104可以是任何能够提供计算服务,响应服务请求,并进行处理的设备,例如可以是常规服务器、云服务器、云主机、虚拟中心等。服务器的构成主要包括处理器、硬盘、内存、***总线等,和通用的计算机架构类似。
第三设备105是指可以在网络虚拟环境中进行生成代码模板的服务器,通常是指能够基于互联网络进行生成代码模板的服务器。在物理实现上,第三设备105可以是任何能够提供计算服务,响应服务请求,并进行处理的设备,例如可以是常规服务器、云服务器、云主机、虚拟中心等。服务器的构成主要包括处理器、硬盘、内存、***总线等,和通用的计算机架构类似。
在本实施例中,第一设备102’,用于接收第一终端101发送的待评审代码,并将待评审代码发送至第二设备104;接收第二设备104提供的代码修复模板,以对待评审代码进行修复;第二设备104,根据待评审代码与代码缺陷模板匹配的匹配结果,提供代码缺陷模板对应的代码修复模板;第三设备105,用于获取变更代码,变更代码包括变更前的缺陷代码以及变更后的修复代码;根据相似度,对多个变更代码进行划分,并根据划分后的变更代码,生成代码缺陷模板以及对应的代码修复模板。
在一些实例中,该质量控制***100B还包括:代码仓库103。该质量控制***100B中的代码仓库103与质量控制***100A中的代码仓库103相同,此处就不再赘述。
在一些实例中,第一设备102’,用于通过代码仓库103接收第一终端101发送的待评审代码。
可选地,第一设备102’,将接收到的代码修复模板发送至第一终端101,以使第一终端101展示该代码修复模板,并根据用户的执行操作,对待评审代码进行修复。
可选地,第二设备104,从第三设备105处获取多个代码缺陷模板,并将待评审代码与多个代码缺陷模板进行匹配,当待评审代码与代码缺陷模板匹配时,从第三设备105处获取代码缺陷模板对应的代码修复模板。
在本实施例中,第一终端101与第一设备102’进行网络连接,第二设备103与第一设备102’进行网络连接。第一终端101与代码仓库103进行网络连接。第二设备104与第三设备105进行网络连接。第一终端101与第一设备102’之间可以是无线或有线网络连接。第二设备103与第一设备102’之间可以是无线或有线网络连接。第二设备103与第三设备104之间可以是无线或有线网络连接。第一终端101与代码仓库103之间可以是无线或有线网络连接。若第一终端101通过移动网络与第一设备102’通信连接,则该移动网络的网络制式可以为2G(GSM)、2.5G(GPRS)、3G(WCDMA、TD-SCDMA、CDMA2000、UTMS)、4G(LTE)、4G+(LTE+)、WiMax等中的任意一种。若第二设备103通过移动网络与第一设备102’通信连接,则该移动网络的网络制式可以为2G(GSM)、2.5G(GPRS)、3G(WCDMA、TD-SCDMA、CDMA2000、UTMS)、4G(LTE)、4G+(LTE+)、WiMax等中的任意一种。若第二设备103通过移动网络与第三设备104通信连接,则该移动网络的网络制式可以为2G(GSM)、2.5G(GPRS)、3G(WCDMA、TD-SCDMA、CDMA2000、UTMS)、4G(LTE)、4G+(LTE+)、WiMax等中的任意一种。若第一终端101通过移动网络与代码仓库103通信连接,则该移动网络的网络制式可以为2G(GSM)、2.5G(GPRS)、3G(WCDMA、TD-SCDMA、CDMA2000、UTMS)、4G(LTE)、4G+(LTE+)、WiMax等中的任意一种。
下面结合方法实施例,第一设备102进行代码质量控制的过程进行详细说明。
图2为本申请另一示例性实施例的代码的质量控制方法的流程示意图。本申请实施例提供的该方法200由第一设备执行,该方法200包括以下步骤:
201:获取变更代码,变更代码包括变更前的缺陷代码以及变更后的修复代码。
202:根据相似度,对多个变更代码进行划分,并根据划分后的变更代码,生成代码缺陷模板以及对应的代码修复模板。
203:根据待评审代码与代码缺陷模板匹配的匹配结果,提供代码缺陷模板对应的代码修复模板,以对待评审代码进行修复。
以下针对上述步骤进行详细地阐述:
201:获取变更代码,变更代码包括变更前的缺陷代码以及变更后的修复代码。
其中,变更代码,也可以称为缺陷修复对,是指当编程人员由于代码缺陷或代码漏洞原因,在对原始代码中的一段缺陷代码段或一行缺陷代码行进行修复或修改时,该修改前或修复前的缺陷代码段或缺陷代码行以及修改后或修复后的修复代码就可以称为变更代码。
缺陷代码是指具有漏洞的代码,如缺陷代码行或缺陷代码段。
修复代码是指对缺陷代码进行修复后的代码,如修复代码行或修复代码段。例如,编程人员在对一个共十行的代码进行代码修复,其中第五行出现了代码漏洞,那么该第五行的代码行就被视为缺陷代码,编程人员对该第五行进行了修复,将修复后该第五行的代码行视为修复代码,修复前的第五行的代码行以及修复后的第五行的代码行视为变更代码。
在一些实例中,获取变更代码,包括:接收多个提交代码;从提交代码中选取用于修复代码的提交代码;从选取到的提交代码中获取对应的变更代码。
例如,编程人员可以通过终端安置的编程客户端,对具有漏洞的代码进行修改,并将修改后的代码作为提交代码,同时设置该提交代码的提交信息commit message(也可以称为提交摘要),该提交信息中记录了该提交代码的提交目的,如用于修复代码、新增代码功能等等,通过终端的编程客户端将提交代码以及提交信息提交到代码仓库中,代码仓库可以根据接收到的提交代码,自动生成该提交代码的diff信息,该diff信息记录了该提交代码中修改或修复的描述信息,如修复的代码行、代码文本等。代码仓库根据提交代码的标识,如代码名称,获取对应的原始代码,并根据diff信息中的代码行,获取修改前代码内容(即缺陷代码),以及修改后代码内容(即修复代码)。
质量控制服务器从代码仓库中获取大量的历史的提交代码、提交信息以及diff信息,并根据提交信息的关键词,如“fix(修复)”,从每个提交代码的提交信息筛选出提交目标为修复代码的提交代码,获取筛选出的提交代码的diff信息,根据diff信息,确定出筛选出的提交代码的变更代码。
需要说明的是,变更代码中的缺陷代码与修复代码是一对,当筛选出的提交代码中存在多处修改代码段或多处修改代码行时,那么diff信息中也会对应存在多组变更代码,那么可以获取到多组变更代码。
当确定出变更代码后,还可以通过有效变更代码规则,对确定出的变更代码进行筛选,筛选出符合有效变更代码规则的变更代码作为最终的变更代码。其中,有效变更代码规则是指属于代码实质修改的规则,代码形式修改不属于有效变更,例如,对代码的注释、包引入语句等。
此外,在筛选出的提交代码中,代码的修复或修改通常是针对程序中的方法进行修复或修改的,所以变更代码也是针对程序中的方法的代码。
另外,此时是针对代码仓库中编程人员提交的历史提交代码进行获取的变更代码。
在一些实例中,从选取到的提交代码中获取对应的变更代码,包括:将选取到的提交代码与提交前的对应代码进行对比,确定选取到的提交代码与提交前的对应代码之间的区别代码;将对应代码中的区别代码作为变更前的缺陷代码,将选取到的提交代码中的区别代码作为变更后的修复代码。
其中,区别代码是指选取到的提交代码与对应代码之间存在的不同的代码段或代码行。例如,选取到的提交代码的第十行代码是aa,而对应代码的第十行代码是bb,那么两者的区别代码就是aa和bb。
例如,根据前文所述,质量控制服务器还可以在筛选出历史的提交代码后,可以从代码仓库中查找出该筛选出的历史的提交代码在提交前的代码,将提交前的代码与筛选出的提交代码进行对比,确定出两个代码之间的区别代码,将属于提交前的代码的区别代码,如aa,作为缺陷代码,将属于筛选出的提交代码的区别代码,如bb,作为修复代码。
202:根据相似度,对多个变更代码进行划分,并根据后的变更代码,生成代码缺陷模板以及对应的代码修复模板。
其中,划分,也可以称为聚类,是指将相似变更代码或同一类型的变更代码进行集合。
代码缺陷模板是指存在代码漏洞的代码编程结构和内容。
代码修复模板是指用于修复代码漏洞的代码编程结构和内容。
在一些实例中,对多个变更代码进行划分,包括:确定至少两个变更代码的相似度;当至少两个变更代码的相似度达到相似阈值时,将该至少两个变更代码作为同一类型变更代码进行集合。
在一些实例中,确定至少两个变更代码的相似度,包括:对比至少两个变更代码中的缺陷代码,并确定该至少两个缺陷代码的第一相似度;对比该至少两个变更代码中的修复代码,并确定该至少两个修复代码的第二相似度。
例如,根据前文所述,质量控制服务器在获取到多个变更代码后,可以通过代码克隆方式或代码克隆工具对每两个变更代码中的缺陷代码进行对比,并确定其相似度,可以通过代码克隆方式或代码克隆工具对每两个变更代码中的修复代码进行对比,并确定其相似度。
需要说明的是,代码克隆方式或代码克隆工具是指基于token序列的代码克隆检测方式,对代码作简单的词法分析,将代码转换为token序列,通过检测token序列中的重复序列查找出克隆代码,进一步确定两个代码之间的相似度。
在一些实例中,当至少两个变更代码的相似度达到阈值时,将该至少两个变更代码作为同一类型变更代码进行集合,包括:当第一相似度和第二相似度均达到相似阈值时,确定该至少两个变更代码相似,并将该至少两个变更代码作为同一类型变更代码进行集合。
例如,根据前文所述,当质量控制服务器确定第一相似度与第二相似度均达到相似阈值,则认定两个变更代码相似,则可以将这两个变更代码作为同一类型的变更代码进行集合,最终形成多个集合,每个集合中都具有至少两个变更代码。
需要说明的是,确定至少两个变更代码的相似度时,也可以通过单独确定至少两个缺陷代码或至少两个修复代码的相似度,来确定至少两个变更代码的相似度,此时,仅需要至少两个缺陷代码的相似度或至少两个修复代码的相似度达到相似阈值即可。
此外,通过划分(即聚类)的方式来生成代码模板,可以去除了噪声和杂质,提高了代码模板的准确率。
另外,在对两个变更代码进行对比时,可以先进行代码过滤,将相似度较低的两个变更代码过滤掉,如通过变更代码中的API(Application Programming Interface,应用程序编程接口)的关键词,来确定两个变更代码之间是否具有相同API,从而来确定是否具有对比的必要,将没有必要进行对比的两个变更代码过滤掉。
同时,还可以确定两个变更代码的索引,通过比较两个变更代码的索引,来确定是否具有对比的必要,将没有必要进行对比的两个变更代码过滤掉。
在一些实例中,根据划分后的变更代码,生成代码缺陷模板以及对应的代码修复模板,包括:根据划分后的至少两个变更代码中的每个缺陷代码,确定每个缺陷代码的第一公共子代码以及不同的第一变量;根据第一公共子代码以及第一变量,生成代码缺陷模板;根据划分后的至少两个变更代码中的每个修复代码,确定每个修复代码的第二公共子代码以及不同的第二变量;根据第二公共子代码以及第二变量,生成代码修复模板。
其中,公共子代码是指至少两个缺陷代码之间或至少两个修复代码之间存在的相同代码。例如,两个缺陷代码分别是aabbccdd和abddff,那么其公共子代码则是abdd,且公共子代码是按照顺序进行提取的,应理解,这里仅为了说明公共子代码而举例,实际应用场景中,应当按照实际编程的代码来确定公共子代码。
例如,根据前文所述,针对每个划分后的变更代码,质量控制服务器根据递归调用最长公共子序列算法,将划分后的多个缺陷代码进行比较,确定多个缺陷代码的公共子代码以及不同的变量,并将其中一种变量设置在公共子代码中,生成代码缺陷模板,形成一个完整的代码缺陷模板。质量控制服务器根据递归调用最长公共子序列算法,将划分后的多个修复代码进行比较,确定多个修复代码的公共子代码以及不同的变量,并将其中一种变量设置在公共子代码中,生成代码修复模板,形成一个完整的代码修复模板。
其中,变量可以为代码中的对象、参数以及基础函数类型(如,int整数、String字符串等)。
最长公共子序列算法是指在至少两个缺陷代码之间或至少两个修复代码之间确定长度最长的相等子序列的算法。
203:根据待评审代码与代码缺陷模板匹配的匹配结果,提供代码缺陷模板对应的代码修复模板,以对待评审代码进行修复。
在一些实例中,该方法200还包括:接收待评审代码;将待评审代码与已生成的代码缺陷模板进行对比,确定待评审代码中至少部分代码与代码缺陷模板的匹配度;当匹配度达到匹配阈值时,则确定待评审代码与代码缺陷模板的匹配结果为匹配成功。
例如,根据前文所述,编程人员可以通过终端安置的编程客户端,发送提交代码以及提交信息至代码仓库,代码仓库会将该提交代码发送至质量控制服务器,在提交代码后,用户可以通过终端的网页web端新建评审网页,并在该网页web端开启对应的代码评审,图5示出了代码评审的设置界面500,编程人员在该设置界面500上开启智能缺陷检测按钮501,在开启该智能缺陷检测按钮501后,编程人员在开启智能缺陷检测指示发送至质量控制服务器,质量控制服务器根据该指示,将提交代码作为待评审代码进行检测,质量控制服务器可以通过代码克隆方式或代码克隆工具,将待评审代码与已生成的多个代码缺陷模板进行对比,确定待评审代码与每个代码缺陷模板的匹配度,当任一对匹配到达匹配阈值时,则确定待评审代码与对应的代码缺陷模板匹配,存在缺陷,如,待评审代码有100行,其中的有3行代码与代码缺陷模板匹配。
在一些实例中,根据待评审代码与代码缺陷模板匹配的匹配结果,提供代码缺陷模板对应的代码修复模板,包括:当匹配结果为匹配成功时,提供代码缺陷模板对应的代码修复模板。
例如,根据前文所述,当质量控制服务器确定待评审代码与对应的代码缺陷模板匹配,则待评审代码存在缺陷时,则质量控制服务器获取该匹配的代码缺陷模板的代码修复模板,并将该代码修复模板以及待评审代码存在缺陷的消息返回至编程人员的终端安置的网页web端,从而向编程人员展示该代码修复模板以及该消息,以使得编程人员根据该代码修复模板对待评审代码进行修复,在修复后,编程人员可以将修复后的代码通过终端安置的编程客户端提交至代码仓库。在一些实例中,该方法200还包括:当匹配结果为匹配失败时,提供未匹配到代码缺陷模板的提示信息。
例如,根据前文所述,质量控制服务器确定任一匹配度都没有到达匹配阈值,则提供未匹配到代码缺陷模板的提示信息,质量控制服务器可以将该提示信息返回至编程人员所在的终端上的网页web端,以告知编程人员最终结果,当前待评审代码未匹配到代码缺陷模板。
在一些实例中,当匹配结果为匹配成功时,该方法200还包括:提供匹配的代码缺陷模板,并标明其中匹配的缺陷代码段。
例如,根据前文所述,当质量控制服务器确定待评审代码与对应的代码缺陷模板匹配,则待评审代码存在缺陷,质量控制服务器还可以在该匹配的代码缺陷模板中标明与待评审代码匹配的缺陷代码段或缺陷代码行,质量控制服务器将对应的代码缺陷模板也随代码修复模板一起返回至编程人员所在的终端上的网页web端,从而向编程人员展示该代码修复模板以及该消息以外,还可以展示该代码缺陷模板,以及该代码缺陷模板中的匹配的缺陷代码段或缺陷代码行,以供编程人员查看。
需要说明的是,质量控制服务器还会提供待评审代码至网页web端,且在该待评审代码中标明属于缺陷代码的代码行。还可以提供匹配度,如100%,至网页web端,供用户查看。
同时,质量控制服务器还会提供与代码修复模板或代码缺陷模板对应的变更代码,用户可以通过展示界面上的详情按钮,进行查看。
在一些实例中,当匹配结果为匹配成功时,该方法200还包括:在提供对应的代码修复模板时,标明其中与缺陷代码段匹配的修复代码段。
例如,根据前文所述,当质量控制服务器确定待评审代码与对应的代码缺陷模板匹配,则待评审代码存在缺陷,质量控制服务器在确定了该匹配的代码缺陷模板中与待评审代码匹配的缺陷代码段或缺陷代码行,并根据该缺陷代码段或缺陷代码行,以及缺陷代码段或缺陷代码行的标识,如行号,确定对应的代码修复模板中与缺陷代码段或缺陷代码行匹配的修复代码段或修复代码行。
在一些实例中,当匹配结果为匹配成功时,该方法200还包括:获取待评审代码中的第三变量,并将第三变量与第一变量以及第二变量分别进行替换;将替换变量后的代码缺陷模板以及代码修复模板进行提供。
例如,根据前文所述,质量控制服务器会寻找待评审代码上下文中对应的变量,将代码缺陷模板和代码修复模板中的变量替换成当前待评审代码上下文中的变量。并将替换变量后的代码缺陷模板以及代码修复模板提供给网页web端。
在一些实例中,该方法200还包括:接收反馈信息,反馈信息用于反馈用户对提供的代码修复模板的满意度。
例如,根据前文所述,编程人员在终端上的网页web端上的展示界面上,查看到该代码修复模板以及待评审代码存在缺陷的消息后,该展示界面上还可以设置反馈选项,编程人员可以根据该质量控制服务器的推荐操作行为,进行反馈,如在该展示界面中的反馈选项中进行打分、执行“点赞”操作、或者执行“不喜欢”操作,编程客户端在接收到编程人员的该反馈操作后,将反馈信息,如“点赞”信息发送至质量控制服务器,质量控制服务器在接收到该反馈信息后,存储至对应代码缺陷模板或代码修复模板的存储区域中,并根据每个代码缺陷模板或代码修复模板收集到的反馈信息,评估该代码缺陷模板以及对应的代码修复模板,从而对代码缺陷模板以及对应的代码修复模板进行调整,由于用户可以自定义并维护代码缺陷模板和代码修复模板来扩充模板库,使匹配的召回率和准确率进一步提升,从而完善评审机制。
本申请实施例能够自动修复更多的代码缺陷,提升代码质量和代码评审热情,发现人工评审无法发现的代码漏洞问题,而且不需要对代码编译,同时不会是只针对某种特定代码漏洞问题,不会局限于寻找某种特定代码漏洞缺陷,普适性更好,代码漏洞误报率低,代码漏洞扫描速度快,从而提升了代码质量,降低了代码风险,也能鼓励编程人员进行代码评审,将人工评审代码的工作人员从寻找代码漏洞的工作中逐渐解脱出来。
图3为本申请另一示例性实施例提供的又一种代码的质量控制方法的流程示意图。本申请实施例提供的该方法300由第一设备执行,该方法300包括以下步骤:
301:获取变更代码,变更代码包括变更前的缺陷代码以及变更后的修复代码。
302:根据相似度,对多个变更代码进行划分,并根据划分后的变更代码,生成代码缺陷模板以及对应的代码修复模板。
需要说明的是,上述实施例所提供方法300的具体实施方式在前文已经详细阐述过了,此处就不再赘述。
在本实施例中,当生成了代码缺陷模板以及代码修复模板后,就可以对代码进行缺陷检测,而缺陷检测的具体过程在此就不再赘述,能够实现缺陷检测的方式都属于本实施例的保护范畴。
图4为本申请另一示例性实施例提供的又一种代码的质量控制方法的流程示意图。本申请实施例提供的该方法400由第一设备执行,该方法400包括以下步骤:
401:获取待评审代码,并将待评审代码与代码缺陷模板进行匹配。
402:根据待评审代码与代码缺陷模板匹配的匹配结果,提供代码缺陷模板对应的代码修复模板,以对待评审代码进行修复。
需要说明的是,上述实施例所提供方法400的具体实施方式在前文已经详细阐述过了,此处就不再赘述。
在本实施例中,基于已存在的代码缺陷模板以及代码修复模板,就可以对代码进行漏洞评审,而代码缺陷模板和代码修复模板的具体生成过程在此就不再赘述,能够实现模板生成的方式都属于本实施例的保护范畴。
此外,本申请实施例还可以利用了测试用例或报错路径等信息,确定代码漏洞,从而根据确定的代码漏洞生成上述模板,实现修复方案的推荐。
本申请实施例还可以利用了测试用例或报错信息定位到代码缺陷位置,并不断尝试代码修改并运行测试用例直到测试用例跑通,从而生成代码缺陷模板以及代码修复模板,实现修复方案的推荐。
本申请实施例还可以利用到了补丁报告或缺陷报告,生成上述模板实现修复方案的推荐。
图6为本申请又一示例性实施例提供的代码的质量控制装置的结构框架示意图。该装置600可以应用于服务器中,该装置600包括获取模块601、生成模块602以及提供模块603,以下针对各个模块的功能进行详细的阐述:
获取模块601,用于获取变更代码,变更代码包括变更前的缺陷代码以及变更后的修复代码。
生成模块602,用于根据相似度,对多个变更代码进行划分,并根据划分后的变更代码,生成代码缺陷模板以及对应的代码修复模板。
提供模块603,用于根据待评审代码与代码缺陷模板匹配的匹配结果,提供代码缺陷模板对应的代码修复模板,以对待评审代码进行修复。
在一些实例中,获取模块601,包括:接收单元,用于接收多个提交代码;选取单元,用于从提交代码中选取用于修复代码的提交代码;获取单元,用于从选取到的提交代码中获取对应的变更代码。
在一些实例中,获取单元,用于将选取到的提交代码与提交前的对应代码进行对比,确定选取到的提交代码与提交前的对应代码之间的区别代码;将对应代码中的区别代码作为变更前的缺陷代码,将选取到的提交代码中的区别代码作为变更后的修复代码。
在一些实例中,生成模块602,包括:确定单元,用于确定至少两个变更代码的相似度;集合单元,用于当至少两个变更代码的相似度达到相似阈值时,将该至少两个变更代码作为同一类型变更代码进行集合。
在一些实例中,确定单元,用于对比至少两个变更代码中的缺陷代码,并确定该至少两个缺陷代码的第一相似度;对比该至少两个变更代码中的修复代码,并确定该至少两个修复代码的第二相似度;其中,集合单元,用于当第一相似度和第二相似度均达到相似阈值时,确定该至少两个变更代码相似,并将该至少两个变更代码作为同一类型变更代码进行集合。
在一些实例中,确定单元,用于根据划分后的至少两个变更代码中的每个缺陷代码,确定每个缺陷代码的第一公共子代码以及不同的第一变量;生成模块602,还包括:生成单元,用于根据第一公共子代码以及第一变量,生成代码缺陷模板;确定单元,用于根据划分后的至少两个变更代码中的每个修复代码,确定每个修复代码的第二公共子代码以及不同的第二变量;生成单元,用于根据第二公共子代码以及第二变量,生成代码修复模板。
在一些实例中,当匹配结果为匹配成功时,该装置600还包括:替换模块,用于获取待评审代码中的第三变量,并将第三变量与第一变量以及第二变量分别进行替换;提供模块603,用于将替换变量后的代码缺陷模板以及代码修复模板进行提供。
在一些实例中,提供模块603,用于当匹配结果为匹配成功时,提供代码缺陷模板对应的代码修复模板。
在一些实例中,该装置600还包括:接收模块,用于接收待评审代码;对比模块,用于将待评审代码与已生成的代码缺陷模板进行对比,确定待评审代码中至少部分代码与代码缺陷模板的匹配度;匹配模块,用于当对比度达到匹配阈值时,则确定待评审代码与代码缺陷模板的匹配结果为匹配成功。
在一些实例中,匹配模块,用于当匹配结果为匹配失败时,提供未匹配到代码缺陷模板的提示信息。
在一些实例中,当匹配结果为匹配成功时,提供模块603,用于提供匹配的代码缺陷模板,并标明其中匹配的缺陷代码段。
在一些实例中,当匹配结果为匹配成功时,提供模块603,用于在提供对应的代码修复模板时,标明其中与缺陷代码段匹配的修复代码段。
在一些实例中,接收模块,用于接收反馈信息,反馈信息用于反馈用户对提供的代码修复模板的满意度。
图7为本申请又一示例性实施例提供的代码的质量控制装置的结构框架示意图。该装置700可以应用于服务器中,该装置700包括获取模块701以及生成模块702,以下针对各个模块的功能进行详细的阐述:
获取模块701,用于获取变更代码,变更代码包括变更前的缺陷代码以及变更后的修复代码。
生成模块702,用于根据相似度,对多个变更代码进行划分,并根据划分后的变更代码,生成代码缺陷模板以及对应的代码修复模板。
图8为本申请又一示例性实施例提供的又一种代码的质量控制装置的结构框架示意图。该装置800可以应用于服务器中,该装置800包括:,以下针对各个模块的功能进行详细的阐述:
获取模块801,用于获取待评审代码,并将待评审代码与代码缺陷模板进行匹配。
提供模块802,用于根据待评审代码与代码缺陷模板匹配的匹配结果,提供代码缺陷模板对应的代码修复模板,以对待评审代码进行修复。
以上描述了图6所示的质量控制装置600的内部功能和结构,在一个可能的设计中,图6所示的质量控制装置600的结构可实现为服务器,如图9所示,该服务器900可以包括:存储器901、处理器902以及通信组件903;
存储器901,用于存储计算机程序;
通信组件903,用于获取变更代码,变更代码包括变更前的缺陷代码以及变更后的修复代码;
处理器902,用于执行计算机程序,以用于:根据相似度,对多个变更代码进行划分,并根据划分后的变更代码,生成代码缺陷模板以及对应的代码修复模板;根据待评审代码与代码缺陷模板匹配的匹配结果,提供代码缺陷模板对应的代码修复模板,以对待评审代码进行修复。
在一些实例中,通信组件903,具体用于:接收多个提交代码;处理器902,具体用于:从提交代码中选取用于修复代码的提交代码;从选取到的提交代码中获取对应的变更代码。
在一些实例中,处理器902,具体用于:将选取到的提交代码与提交前的对应代码进行对比,确定选取到的提交代码与提交前的对应代码之间的区别代码;将对应代码中的区别代码作为变更前的缺陷代码,将选取到的提交代码中的区别代码作为变更后的修复代码。
在一些实例中,处理器902,具体用于:确定至少两个变更代码的相似度;当至少两个变更代码的相似度达到相似阈值时,将该至少两个变更代码作为同一类型变更代码进行集合。
在一些实例中,处理器902,具体用于:对比至少两个变更代码中的缺陷代码,并确定该至少两个缺陷代码的第一相似度;对比该至少两个变更代码中的修复代码,并确定该至少两个修复代码的第二相似度;当第一相似度和第二相似度均达到相似阈值时,确定该至少两个变更代码相似,并将该至少两个变更代码作为同一类型变更代码进行集合。
在一些实例中,处理器902,具体用于:根据划分后的至少两个变更代码中的每个缺陷代码,确定每个缺陷代码的第一公共子代码以及不同的第一变量;根据第一公共子代码以及第一变量,生成代码缺陷模板;根据划分后的至少两个变更代码中的每个修复代码,确定每个修复代码的第二公共子代码以及不同的第二变量;根据第二公共子代码以及第二变量生成代码修复模板。
在一些实例中,当匹配结果为匹配成功时,处理器902,还用于:获取待评审代码中的第三变量,并将第三变量与第一变量以及第二变量分别进行替换;将替换变量后的代码缺陷模板以及代码修复模板进行提供。
在一些实例中,处理器902,具体用于:当匹配结果为匹配成功时,提供代码缺陷模板对应的代码修复模板。
在一些实例中,处理器902,还用于:接收待评审代码;对比模块,用于将待评审代码与已生成的代码缺陷模板进行对比,确定待评审代码中至少部分代码与代码缺陷模板的匹配度;当匹配度达到对比阈值时,则确定待评审代码与代码缺陷模板的匹配结果为匹配成功。
在一些实例中,处理器902,还用于:当匹配结果为匹配失败时,提供未匹配到代码缺陷模板的提示信息。
在一些实例中,当匹配结果为匹配成功时,处理器902,还用于:提供匹配的代码缺陷模板,并标明其中匹配的缺陷代码段。
在一些实例中,当匹配结果为匹配成功时,处理器902,还用于:在提供对应的代码修复模板时,标明其中与缺陷代码段匹配的修复代码段。
在一些实例中,通信组件903,还用于:接收反馈信息,反馈信息用于反馈用户对提供的代码修复模板的满意度。
另外,本发明实施例提供了一种计算机存储介质,计算机程序被一个或多个处理器执行时,致使一个或多个处理器实现图2方法实施例中代码的质量控制方法的步骤。
以上描述了图7所示的质量控制装置700的内部功能和结构,在一个可能的设计中,图7所示的质量控制装置700的结构可实现为服务器,如图10所示,该服务器1000可以包括:存储器1001、处理器1002以及通信组件1003;
存储器1001,用于存储计算机程序;
通信组件1003,用于获取变更代码,变更代码包括变更前的缺陷代码以及变更后的修复代码;
处理器1002,用于执行计算机程序,以用于:根据相似度,对多个变更代码进行划分,并根据划分后的变更代码,生成代码缺陷模板以及对应的代码修复模板。
另外,本发明实施例提供了一种计算机存储介质,计算机程序被一个或多个处理器执行时,致使一个或多个处理器实现图3方法实施例中代码的质量控制方法的步骤。
以上描述了图8所示的质量控制装置800的内部功能和结构,在一个可能的设计中,图8所示的质量控制装置800的结构可实现为服务器,如图11所示,该服务器1100可以包括:存储器1101、处理器1102以及通信组件1103;
存储器1101,用于存储计算机程序;
通信组件1103,用于获取待评审代码,并将待评审代码与代码缺陷模板进行匹配;
处理器1102,用于执行计算机程序,以用于:根据待评审代码与代码缺陷模板匹配的匹配结果,提供代码缺陷模板对应的代码修复模板,以对待评审代码进行修复。
另外,本发明实施例提供了一种计算机存储介质,计算机程序被一个或多个处理器执行时,致使一个或多个处理器实现图4方法实施例中代码的质量控制方法的步骤。
另外,在上述实施例及附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如201、202、203等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助加必需的通用硬件平台的方式来实现,当然也可以通过硬件和软件结合的方式来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以计算机产品的形式体现出来,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程多媒体数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程多媒体数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程多媒体数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程多媒体数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (12)
1.一种代码的质量控制方法,其特征在于,包括:
获取变更代码,变更代码包括变更前的缺陷代码以及变更后的修复代码;
对比至少两个变更代码中的缺陷代码,并确定该至少两个缺陷代码的第一相似度;对比该至少两个变更代码中的修复代码,并确定该至少两个修复代码的第二相似度,当所述第一相似度和所述第二相似度均达到相似阈值时,确定该至少两个变更代码相似,并将该至少两个变更代码作为同一类型变更代码进行集合,以对多个变更代码进行划分;
根据划分后的至少两个变更代码中的每个缺陷代码所包括的第一公共子代码以及不同的第一变量,生成所述代码缺陷模板;根据划分后的至少两个变更代码中的每个修复代码所包括的第二公共子代码以及不同的第二变量,生成代码修复模板;
若待评审代码与所述代码缺陷模板匹配成功,获取所述待评审代码中的第三变量,并将所述第三变量与所述第一变量以及第二变量分别进行替换,将替换变量后的代码缺陷模板以及代码修复模板进行提供,以对所述待评审代码进行修复。
2.根据权利要求1所述的方法,其特征在于,所述获取变更代码,包括:
接收多个提交代码;
从所述提交代码中选取用于修复代码的提交代码;
从选取到的提交代码中获取对应的变更代码。
3.根据权利要求2所述的方法,其特征在于,所述从选取到的提交代码中获取对应的变更代码,包括:
将选取到的提交代码与提交前的对应代码进行对比,确定选取到的提交代码与提交前的对应代码之间的区别代码;
将所述对应代码中的区别代码作为变更前的缺陷代码,将选取到的提交代码中的区别代码作为变更后的修复代码。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收待评审代码;
将待评审代码与已生成的代码缺陷模板进行对比,确定所述待评审代码中至少部分代码与所述代码缺陷模板的匹配度;
当所述匹配度达到匹配阈值时,则确定所述待评审代码与所述代码缺陷模板的匹配结果为匹配成功。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述匹配结果为匹配失败时,提供未匹配到代码缺陷模板的提示信息。
6.根据权利要求1所述的方法,其特征在于,当所述匹配结果为匹配成功时,所述方法还包括:
标明所述代码缺陷模板中匹配的缺陷代码段。
7.根据权利要求6所述的方法,其特征在于,当所述匹配结果为匹配成功时,所述方法还包括:
在提供对应的代码修复模板时,标明其中与所述缺陷代码段匹配的修复代码段。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收反馈信息,所述反馈信息用于反馈用户对提供的代码修复模板的满意度。
9.一种代码的质量控制***,其特征在于,包括:第一设备、第二设备以及第三设备;
所述第一设备,用于接收待评审代码,并将所述待评审代码发送至所述第二设备;
接收所述第二设备提供的代码修复模板,以对所述待评审代码进行修复;
所述第二设备,用于获取变更代码,变更代码包括变更前的缺陷代码以及变更后的修复代码;对比至少两个变更代码中的缺陷代码,并确定该至少两个缺陷代码的第一相似度;对比该至少两个变更代码中的修复代码,并确定该至少两个修复代码的第二相似度,当所述第一相似度和所述第二相似度均达到相似阈值时,确定该至少两个变更代码相似,并将该至少两个变更代码作为同一类型变更代码进行集合,以对多个变更代码进行划分;根据划分后的至少两个变更代码中的每个缺陷代码所包括的第一公共子代码以及不同的第一变量,生成所述代码缺陷模板;根据划分后的至少两个变更代码中的每个修复代码所包括第二公共子代码以及不同的第二变量,生成代码修复模板;
所述第三设备,用于若待评审代码与所述代码缺陷模板匹配成功,获取所述待评审代码中的第三变量,并将所述第三变量与所述第一变量以及第二变量分别进行替换,将替换变量后的代码缺陷模板以及代码修复模板进行提供,以对所述待评审代码进行修复。
10.一种电子设备,包括存储器、处理器以及通信组件;
所述存储器,用于存储计算机程序;
所述通信组件,用于获取变更代码,变更代码包括变更前的缺陷代码以及变更后的修复代码;
所述处理器,用于执行所述计算机程序,以用于:对比至少两个变更代码中的缺陷代码,并确定该至少两个缺陷代码的第一相似度;对比该至少两个变更代码中的修复代码,并确定该至少两个修复代码的第二相似度,当所述第一相似度和所述第二相似度均达到相似阈值时,确定该至少两个变更代码相似,并将该至少两个变更代码作为同一类型变更代码进行集合,以对多个变更代码进行划分;根据划分后的至少两个变更代码中的每个缺陷代码所包括的第一公共子代码以及不同的第一变量,生成所述代码缺陷模板;根据划分后的至少两个变更代码中的每个修复代码所包括第二公共子代码以及不同的第二变量,生成代码修复模板;若待评审代码与所述代码缺陷模板匹配成功,获取所述待评审代码中的第三变量,并将所述第三变量与所述第一变量以及第二变量分别进行替换,将替换变量后的代码缺陷模板以及代码修复模板进行提供,以对所述待评审代码进行修复。
11.一种存储有计算机程序的计算机可读存储介质,其特征在于,计算机程序被一个或多个处理器执行时,致使所述一个或多个处理器实现权利要求1-8任一项所述方法中的步骤。
12.一种电子设备,包括存储器、处理器以及通信组件;
所述存储器,用于存储计算机程序;
所述通信组件,用于获取变更代码,变更代码包括变更前的缺陷代码以及变更后的修复代码;
所述处理器,用于执行所述计算机程序,以用于:对比至少两个变更代码中的缺陷代码,并确定该至少两个缺陷代码的第一相似度;对比该至少两个变更代码中的修复代码,并确定该至少两个修复代码的第二相似度,当所述第一相似度和所述第二相似度均达到相似阈值时,确定该至少两个变更代码相似,并将该至少两个变更代码作为同一类型变更代码进行集合,以对多个变更代码进行划分;根据划分后的至少两个变更代码中的每个缺陷代码所包括的第一公共子代码以及不同的第一变量,生成所述代码缺陷模板;根据划分后的至少两个变更代码中的每个修复代码所包括第二公共子代码以及不同的第二变量,生成代码修复模板。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910218519.XA CN111722998B (zh) | 2019-03-21 | 2019-03-21 | 代码的质量控制方法、***、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910218519.XA CN111722998B (zh) | 2019-03-21 | 2019-03-21 | 代码的质量控制方法、***、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111722998A CN111722998A (zh) | 2020-09-29 |
CN111722998B true CN111722998B (zh) | 2024-05-24 |
Family
ID=72562592
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910218519.XA Active CN111722998B (zh) | 2019-03-21 | 2019-03-21 | 代码的质量控制方法、***、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111722998B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113703824B (zh) * | 2021-08-26 | 2024-06-04 | 上海德拓信息技术股份有限公司 | 一种多项目软件质量修复方法与*** |
WO2024016690A1 (zh) * | 2022-07-22 | 2024-01-25 | 华为云计算技术有限公司 | 消息发送方法、代码显示方法、装置及相关设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105930257A (zh) * | 2015-10-12 | 2016-09-07 | ***股份有限公司 | 一种确定目标测试用例的方法及装置 |
CN106843947A (zh) * | 2017-01-04 | 2017-06-13 | 腾讯科技(深圳)有限公司 | 代码缺陷的处理方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110321007A1 (en) * | 2010-06-29 | 2011-12-29 | International Business Machines Corporation | Targeting code sections for correcting computer program product defects using records of a defect tracking system |
-
2019
- 2019-03-21 CN CN201910218519.XA patent/CN111722998B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105930257A (zh) * | 2015-10-12 | 2016-09-07 | ***股份有限公司 | 一种确定目标测试用例的方法及装置 |
CN106843947A (zh) * | 2017-01-04 | 2017-06-13 | 腾讯科技(深圳)有限公司 | 代码缺陷的处理方法和装置 |
Non-Patent Citations (2)
Title |
---|
Experimental evaluation of a tool for the verification and transformation of source code in event-driven systems;Gülesir, G等;《EMPIRICAL SOFTWARE ENGINEERING》;20091231;全文 * |
基于特征相似的软件缺陷排除方法;张灿;赵逢禹;;计算机应用与软件;20171115(11);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111722998A (zh) | 2020-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Pham et al. | Detection of recurring software vulnerabilities | |
US11716349B2 (en) | Machine learning detection of database injection attacks | |
EP3695310A1 (en) | Blackbox matching engine | |
US20190265970A1 (en) | Automatic identification of relevant software projects for cross project learning | |
CN106250319A (zh) | 静态代码扫描结果处理方法和装置 | |
US20080127043A1 (en) | Automatic Extraction of Programming Rules | |
CN111722998B (zh) | 代码的质量控制方法、***、设备及存储介质 | |
Schlie et al. | Detecting variability in MATLAB/Simulink models: An industry-inspired technique and its evaluation | |
WO2022012327A1 (zh) | 代码分析的方法、***及计算设备 | |
CN110019067A (zh) | 一种日志分析方法及*** | |
CN114493255A (zh) | 基于知识图谱的企业异常监控方法及其相关设备 | |
CN113778852A (zh) | 一种基于正则表达式的代码分析方法 | |
CN112597023A (zh) | 基于导图的案例管理方法、装置、计算机设备及存储介质 | |
US11250127B2 (en) | Binary software composition analysis | |
CN116821903A (zh) | 检测规则确定及恶意二进制文件检测方法、设备及介质 | |
CN113821751B (zh) | 浏览器的优化方法、***、计算机设备及可读存储介质 | |
CN113297583B (zh) | 漏洞风险分析方法、装置、设备及存储介质 | |
CN115310011A (zh) | 页面展示方法、***以及可读存储介质 | |
CN104991963B (zh) | 文件处理方法和装置 | |
US10474651B2 (en) | Analysis of system information | |
US20180174019A1 (en) | Artificial intelligence analysis service | |
CN114817929B (zh) | 物联网漏洞动态追踪和处理方法、装置、电子设备及介质 | |
CN116483735B (zh) | 一种代码变更的影响分析方法、装置、存储介质及设备 | |
CN113626820B (zh) | 针对网络设备的已知漏洞定位方法及装置 | |
CN112394984B (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 |