CN110287110A - 应用程序的代码检测方法及装置 - Google Patents

应用程序的代码检测方法及装置 Download PDF

Info

Publication number
CN110287110A
CN110287110A CN201910532630.6A CN201910532630A CN110287110A CN 110287110 A CN110287110 A CN 110287110A CN 201910532630 A CN201910532630 A CN 201910532630A CN 110287110 A CN110287110 A CN 110287110A
Authority
CN
China
Prior art keywords
code
sample
operation data
application program
probability
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.)
Withdrawn
Application number
CN201910532630.6A
Other languages
English (en)
Inventor
江磊
沈鹏飞
潘磊
梁帅
方春龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Sankuai Online Technology Co Ltd
Original Assignee
Beijing Sankuai Online Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Sankuai Online Technology Co Ltd filed Critical Beijing Sankuai Online Technology Co Ltd
Priority to CN201910532630.6A priority Critical patent/CN110287110A/zh
Publication of CN110287110A publication Critical patent/CN110287110A/zh
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3608Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3616Software analysis for verifying properties of programs using software metrics

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请公开了一种应用程序的代码检测方法及装置,涉及互联网技术领域。该方法可以将获取到的第一应用程序的第一代码的属性信息输入代码检测模型,并根据该代码检测模型的输出结果,直接确定该第一代码存在程序错误的概率。由于可以直接通过代码检测模型来确定代码存在程序错误的概率,无需人工检测,因此有效提高了代码检测的效率。

Description

应用程序的代码检测方法及装置
技术领域
本发明涉及互联网技术领域,特别涉及一种应用程序的代码检测方法及装置。
背景技术
在应用程序的开发过程中,为了保证应用程序能够正常运行,需要对应用程序的代码进行检测,以便及时发现和修复代码中的程序错误(bug)。
相关技术中,通常是由测试人员对代码进行检测,从而识别代码中的bug。但是,该人工检测的方法效率较低。
发明内容
本申请提供了一种应用程序的代码检测方法及装置,可以解决相关技术中人工检测的方法效率较低的问题。所述技术方案如下:
一方面,提供了一种应用程序的代码检测方法,所述方法包括:
获取第一应用程序的第一代码的属性信息;
将所述第一代码的属性信息输入代码检测模型,所述代码检测模型基于已确定是否存在程序错误的第一样本代码的属性信息训练得到;
根据所述代码检测模型的输出结果,确定所述第一代码存在程序错误的概率。
可选的,所述第一代码的属性信息包括下述信息中的一种或多种:所述第一代码所属项目的标识,所述第一代码所属文件的标识,所述第一代码的提交者的信息。
可选的,所述第一代码为对第一应用程序的第二代码进行修改得到的代码;所述第一代码的属性信息还包括:所述第一代码相对于所述第二代码的修改部分的修改信息。
可选的,在所述获取第一应用程序的第一代码的属性信息之前,所述方法还包括:
获取多个样本数据,每个所述样本数据包括所述第一样本代码的属性信息以及所述第一样本代码的检测标签,所述第一样本代码的检测标签用于指示所述第一样本代码存在程序错误的概率;
基于所述多个样本数据进行模型训练,得到所述代码检测模型。
可选的,所述第一样本代码为对第二应用程序的第二样本代码进行修改得到的代码;在所述获取多个样本数据之前,所述方法还包括:
获取采用所述第二样本代码的第二应用程序的第一运行数据;
获取采用所述第一样本代码的第二应用程序的第二运行数据;
根据所述第一运行数据和所述第二运行数据,确定所述第一样本代码存在程序错误的概率。
可选的,所述第一运行数据和所述第二运行数据中的每个运行数据均包括:业务指标,异常数量,服务成功率以及服务失败率中的一种或多种;
所述第一样本代码存在程序错误的概率,与所述第二运行数据和所述第一运行数据中业务指标的差值负相关,与所述第二运行数据和所述第一运行数据中异常数量的差值正相关,与所述第二运行数据和所述第一运行数据中服务成功率的差值负相关,与所述第二运行数据和所述第一运行数据中服务失败率的差值正相关。
可选的,所述第一样本代码是对第二应用程序的第二样本代码进行修改得到的代码;在所述获取多个样本数据之前,所述方法还包括:
获取所述第一样本代码的第二应用程序运行过程中针对所述第一样本代码的操作数据;
根据所述操作数据,确定所述第一样本代码存在程序错误的概率。
可选的,在所述确定所述第一代码存在程序错误的概率之后,所述方法还包括:
获取所述第一代码的检测标签,所述第一代码的检测标签用于指示所述第一代码实际存在程序错误的概率;
基于所述第一代码的属性信息以及所述第一代码的检测标签对所述代码检测模型进行训练,以更新所述代码检测模型。
另一方面,提供了一种应用程序的代码检测装置,所述装置包括:
第一获取模块,用于获取第一应用程序的第一代码的属性信息;
输入模块,用于将所述第一代码的属性信息输入代码检测模型,所述代码检测模型基于已确定是否存在程序错误的第一样本代码的属性信息训练得到;
第一确定模块,用于根据所述代码检测模型的输出结果,确定所述第一代码存在程序错误的概率。
又一方面,提供了一种应用程序的代码检测装置,所述装置包括:处理器和存储器,所述存储器用于存储由处理器执行的指令,所述处理器通过执行所述存储器中存储的指令以实现上述方面所述的应用程序的代码检测方法。
再一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如上述方面所述的应用程序的代码检测方法。
本申请提供的技术方案带来的有益效果至少包括:
本申请提供了一种应用程序的代码检测方法及装置,该方法可以将获取到的第一应用程序的第一代码的属性信息输入代码检测模型,并根据该代码检测模型的输出结果,直接确定该第一代码存在程序错误的概率。由于可以直接通过代码检测模型来确定代码存在程序错误的概率,无需人工检测,因此有效提高了代码检测的效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的基于应用程序的代码检测方法所涉及的一种实施环境的结构示意图;
图2是本发明实施例提供的一种应用程序的代码检测方法的流程图;
图3是本发明实施例提供的另一种应用程序的代码检测方法的流程图;
图4是本发明实施例提供的一种生成代码检测模型的示意图;
图5是本发明实施例提供的一种确定第一样本代码存在程序错误的概率的方法流程图;
图6是本发明实施例提供的另一种确定第一样本代码存在程序错误的概率的方法流程图;
图7是本发明实施例提供的一种应用程序的代码检测装置的结构示意图;
图8是本发明实施例提供的另一种应用程序的代码检测装置的结构示意图;
图9是本发明实施例提供的又一种应用程序的代码检测装置的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
相关技术中,为了保证应用程序中的代码在发布或变更时的稳定性,可以在代码发布或变更时,对代码存在程序错误的概率进行预测,以便及时发现稳定性较差(高风险)的代码,并对这些稳定性较差的代码设置更加严格的代码审查流程,例如,可以由更多的测试人员对其进行检测,从而避免将稳定性较差的代码应用在应用程序中,提高了应用程序的稳定性。
相关技术中,通常是测试人员对代码进行检测的,该人工检测的方法效率较低,准确性较差。
图1是本发明实施例提供的基于应用程序的代码检测方法所涉及的一种实施环境的结构示意图。该实施环境可以包括终端01以及代码检测服务器02。其中,该终端01可以为计算机。该代码检测服务器02可以是一台服务器,或者由若干台服务器组成的服务器集群,或者是一个云计算服务中心。
参考图1可以看出,终端01与代码检测服务器02之间,可以通过有线或无线网络建立连接。编程人员可以通过终端01将待检测的代码,发送至代码检测服务器02。该代码检测服务器02中存储有代码检测模型,可以通过该代码检测模型对该待检测的代码的属性信息进行检测,并可以将检测结果发送至终端01。编程人员即可通过该检测结果确定自身提交的代码中存在程序错误的概率。
由于该代码检测服务器可以通过代码检测模型自动完成对提交的应用程序中的代码的检测,无需人工检测,有效提高了代码检测的效率。
图2是本发明实施例提供的一种应用程序的代码检测方法的流程图。该方法可以解决相关技术中人工检测的方法效率较低,准确性较差的问题,该方法可以应用于代码检测服务器中。参考图2可以看出,该方法可以包括:
步骤101、获取第一应用程序的第一代码的属性信息。
该第一应用程序可以为待检测的应用程序,该第一代码可以为第一应用程序的首次提交的未修改过的代码,或者该第一代码还可以为对第一应用程序的第二代码进行修改后得到的代码。也即是,该第二代码可以是指更新前的第一应用程序的代码,第一代码可以是指更新后的第一应用程序的代码。
该第一代码的属性信息可以包括下述信息中的一种或多种:第一代码所属项目的标识,第一代码所属文件的标识,第一代码的提交者的信息。若该第一代码为对第二代码修改得到的代码,则该属性信息还可以包括:第一代码相对于第二代码的修改部分的修改信息。
步骤102、将该第一代码的属性信息输入代码检测模型。
该代码检测模型可以是基于已确定是否存在程序错误的第一样本代码的属性信息训练得到的模型。例如,该代码检测模型可以基于第一样本代码的属性信息以及该第一样本代码实际存在程序错误的概率进行训练得到的。
步骤103、根据该代码检测模型的输出结果,确定该第一代码存在程序错误的概率。
在将第一代码的属性信息输入该代码检测模型之后,该代码检测模型可以直接输出该第一代码存在程序错误的概率。
综上所述,本发明实施例提供了一种应用程序的代码检测方法,该方法可以将获取到的第一应用程序的第一代码的属性信息输入代码检测模型,并根据该代码检测模型的输出结果,直接确定该第一代码存在程序错误的概率。由于可以直接通过代码检测模型来确定代码存在程序错误的概率,无需人工检测,因此有效提高了代码检测的效率。
图3是本发明实施例提供的另一种应用程序的代码检测方法的流程图,该方法可以应用于代码检测服务器中。参考图3可以看出,该方法可以包括:
步骤201、获取多个样本数据。
每个样本数据可以包括该第一样本代码的属性信息以及该第一样本代码的检测标签,该第一样本代码的检测标签可以用于指示该第一样本代码存在程序错误的概率。
该第一样本代码可以是第二应用程序的首次提交的未修改过的代码。或者,该第一样本代码还可以为对第二应用程序的第二样本代码进行修改得到的代码。也即是,该第二样本代码为更新前的第二应用程序中的代码,该第一样本代码为更新后的第二应用程序中的代码。
该第一样本代码的属性信息可以包括下述信息中的一种或多种:该第一样本代码所属项目的标识,该第一样本代码所属文件的标识,该第一样本代码的提交者的信息。可选的,若该第一样本代码为对第二样本代码修改得到的代码,则该属性信息还可以包括:该第一样本代码相对于第二样本代码的修改部分的修改信息。
其中,第一样本代码所属项目的标识可以为该第一样本代码所属项目的项目名称或编号,该第一样本代码所属文件的标识可以为该第一样本代码所属文件的文件名称或编号。
第一样本代码的提交者可以为个人也可以为团队。若提交者为个人,则该提交者的信息可以包括下述信息中的一种或多种:该个人的历史提交代码中存在程序错误的概率,工作年限以及技术级别等。若提交者为团队,则该提交者的信息可以下述信息中的一种或多种:团队的级别,以及该团队历史提交代码中存在程序错误的概率。其中,团队的级别可以反映团队中管理者的管理水平,以及管理者对员工提交的代码的规范要求程度。管理者的管理水平越高,对员工提交的代码的规范要求越严格的团队的级别越高。
该第一样本代码相对于第二样本代码的修改部分的修改信息可以包括下述信息中的一种或多种:第一样本代码相对于第二样本代码的修改行数,第一样本代码所属的文件的修改次数,第一样本代码相对于第二样本代码修改涉及的文件的数量、类的数量和方法的数量。
通常情况下,访问量大的项目中的代码存在程序错误的概率较大,开发难度大的项目中的代码存在程序错误的概率较大,逻辑复杂度高的文件中代码存在程序错误的概率较大。个人的历史提交代码中存在程序错误的概率较大,则下次提交的代码中存在程序错误的概率越大。个人的工作年限越短,则提交的代码中存在程序错误的概率越大。个人的技术级别越低,则提交的代码中存在程序错误的概率越大。团队的级别越高,则提交的代码中存在程序错误的概率越小。团队的历史提交代码中存在程序错误的概率较小,则下次提交的代码中存在程序错误的概率越小。第一样本代码相对于第二样本代码的修改行数越多,该第一样本代码存在程序错误的概率越大,该第一样本代码所属的文件的修改次数越多,该第一样本代码存在程序错误的概率越大。第一样本代码相对于第二样本代码修改涉及的文件的数量、类的数量和方法的数量越多,该第一样本代码存在程序错误的概率越大。
根据上述分析可知,代码存在程序错误的概率,与代码所属项目的访问量和开发难度,代码所属文件的逻辑复杂度,代码的提交者的信息以及代码的修改信息有关,因此在获取用于训练代码检测模型的样本数据时,对于每个样本数据中的第一样本代码,可以获取该第一样本代码所属项目的标识,所属文件的标识,第一样本代码提交者的信息,以及第一样本代码相对于第二样本代码的修改信息作为该第一样本代码的属性信息。
步骤202、基于该多个样本数据进行模型训练,得到该代码检测模型。
在本发明实施例中,代码检测服务器可以采用神经网络对获取的多个样本代码的样本数据进行模型训练,得到该代码检测模型。
示例的,参考图4,假设代码检测服务器获取到了x1,x2,x3,x4,...,xn共n个样本数据,则可以采用极端梯度提升(extreme gradient boosting,XGBoost)或梯度提升机器(light gradient boosting machine,Lightgbm)等算法对该n个样本数据进行模型训练,得到代码检测模型。
步骤203、获取第一应用程序的第一代码的属性信息。
在本发明实施例中,该第一代码可以为第一应用程序的首次提交的未修改过的代码。或者,该第一代码还可以为对第二代码进行修改得到的代码。也即是,该第一代码可以为更新后的第一应用程序中的代码。开发人员在对第一应用程序的第二代码进行修改并生成第一代码后,可以将该第一代码提交至代码检测服务器。代码检测服务器进而可以获取该第一代码的属性信息。
该第一代码的属性信息可以包括下述信息中的一种或多种:该第一代码所属项目的标识,该第一代码所属文件的标识,该第一代码的提交者的信息。若该第一代码为对第二代码进行修改得到的代码,则该第一代码的属性信息还可以包括:该第一代码相对于该第二代码的修改部分的修改信息。其中,属性信息包括的每个信息的含义可以参考上述步骤201中的相关描述,本发明实施例在此不再赘述。
步骤204、将该第一代码的属性信息输入代码检测模型。
示例的,可以将获取到的第一应用程序中第一代码所属项目的标识,第一代码所属文件的标识,第一代码的提交者的信息,以及第一代码相对于第二代码的修改部分的修改信息均输入代码检测模型。
步骤205、根据该代码检测模型的输出结果,确定该第一代码存在程序错误的概率。
在将该第一代码的属性信息输入该代码检测模型之后,该代码检测模型可以直接输出该第一代码存在程序错误的概率。
示例的,参考图4,假设代码检测服务器获取到的输入至该代码检测模型的第一代码的属性信息为y,则该代码检测模型可以输出该第一代码存在程序错误的概率为z。
步骤206、获取该第一代码的检测标签。
该第一代码的检测标签可以用于指示该第一代码实际存在程序错误的概率。该第一代码实际存在程序错误的概率可以是在包括第一代码的第一应用程序运行一段时间之后,运维人员根据第一应用程序的实际运行情况确定的。
步骤207、基于该第一代码的属性信息以及该第一代码的检测标签对该代码检测模型进行训练,以更新该代码检测模型。
在本发明实施例中,可以将确定出的第一代码的属性信息以及该第一代码的检测标签作为新的样本数据,与原有的样本数据一同进行模型训练,从而更新该代码检测模型。
由于在模型训练时,将第一代码与第一样本代码一同进行训练,样本数据更多,因此可以确保更新后的代码检测模型的检测结果更准确。
可选的,代码检测服务器中可以存储有差值阈值,在上述步骤207之前,代码检测服务器还可以检测该第一代码实际存在程序错误的概率,与步骤205中确定出的第一代码存在程序错误的概率的差值。在该差值大于差值阈值时,代码检测服务器可以确定该代码检测模型输出的第一代码存在程序错误的概率的准确性较低,因此可以执行步骤207,以更新该代码检测模型。在该差值不大于差值阈值时,代码检测服务器可以确定该代码检测模型输出的第一代码存在程序错误的概率的准确性较高,因此无需执行步骤207。
示例的,假设差值阈值为0.2,若该第一代码实际存在程序错误的概率为1,步骤205中确定出的第一代码存在程序错误的概率为0,则由于该第一代码实际存在程序错误的概率,与步骤205中确定出的第一代码存在程序错误的概率的差值1,大于差值阈值0.2,代码检测服务器可以确定该代码检测模型输出的第一代码存在程序错误的概率的准确性较低,则代码检测服务器需执行步骤207,以更新该代码检测模型。
若该第一代码实际存在程序错误的概率为1,步骤205中确定出的第一代码存在程序错误的概率为1,则由于该第一代码实际存在程序错误的概率,与步骤205中确定出的第一代码存在程序错误的概率的差值0,不大于差值阈值0.2,代码检测服务器可以确定该代码检测模型输出的第一代码存在程序错误的概率的准确性较高,则代码检测服务器无需执行步骤207。
可选的,在本发明实施例中,代码检测服务器可以在每获取到一个第一代码的检测标签后,执行一次步骤207。或者,也可以在获取到多个第一代码的检测标签后,再执行该步骤207,即代码检测服务器可以将该多个第一代码的属性信息以及多个第一代码的检测标签作为新的样本数据,与原有的样本数据一同进行模型训练。
在本发明实施例中,在上述步骤201中获取每个样本数据的检测标签之前,代码检测服务器还需要先确定每个样本代码实际存在程序错误的概率。
作为一种可选的实现方式,参考图5,代码检测服务器确定每个第一样本代码存在程序错误的概率的方法可以包括:
步骤208a、获取采用第二样本代码的第二应用程序的第一运行数据。
在本发明实施例中,可以先将采用第二样本代码的第二应用程序上线运行一段时间,之后代码检测服务器可以获取该第二应用程序的第一运行数据。该第一运行数据可以包括:业务指标,异常数量,服务成功率以及服务失败率中的一种或多种。其中,该第一运行数据可以存储于业务服务器中,代码检测服务器可以与用于监控该业务服务器的监控服务器建立通信连接,并可以通过该监控服务器从该业务服务器中获取该第二应用程序的第一运行数据。
可选的,为了确保检测的可靠性,该第一运行数据可以在第二应用程序上线运行指定时长后获取。例如,该指定时长可以为两小时。
本发明实施例中,该业务指标可以是用于衡量该第二应用程序的业务的优劣的指标,对于不同类型的应用程序,该业务指标可以不同。例如,若该第二应用程序为交易类(例如购物类)应用程序,则该第二应用程序的业务指标可以是指交易额或者下单量。若该第二应用程序为视频类或者资讯类应用程序,则该第二应用程序的业务指标可以是指播放量或者点击量。
异常数量可以是指在该第二应用程序运行过程中,该第二应用程序出现错误的数量。服务成功率可以是指在该第二应用程序运行过程中,该第二应用程序的服务成功次数与总次数的比值。服务失败率可以是指在该第二应用程序运行过程中,该第二应用程序的服务失败次数与总次数的比值。
步骤209a、获取采用第一样本代码的第二应用程序的第二运行数据。
在本发明实施例中,可以先将采用第一样本代码的第二应用程序上线运行一段时间,之后代码检测服务器可以获取该第二应用程序的第二运行数据。该第二运行数据也可以包括:业务指标,异常数量,服务成功率以及服务失败率中的一种或多种。其中,该第二运行数据可以存储于业务服务器中,代码检测服务器可以与用于监控该业务服务器的监控服务器建立通信连接,并可以通过该监控服务器从该业务服务器中获取该第二应用程序的第二运行数据。
其中,第一样本代码可以是对第二代码进行修改得到的代码。也即是,在本发明实施例中,可以分别获取第二应用程序在更新前的运行数据,以及在更新后的运行数据。
可选的,为了确保检测的可靠性,该第二运行数据可以在第二应用程序上线运行指定时长后获取。例如,该指定时长可以为两小时。
步骤210a、根据该第一运行数据和该第二运行数据,确定该第一样本代码存在程序错误的概率。
在本发明实施例中,该第一样本代码存在程序错误的概率,可以与该第二运行数据和该第一运行数据中业务指标的差值负相关,与该第二运行数据和该第一运行数据中异常数量的差值正相关,与该第二运行数据和该第一运行数据中服务成功率的差值负相关,与该第二运行数据和该第一运行数据中服务失败率的差值正相关。
也即是,该第二运行数据和该第一运行数据中业务指标的差值越大,该第一样本代码存在程序错误的概率越小。第二运行数据和第一运行数据中异常数量的差值越小,该第一样本代码存在程序错误的概率越小。第二运行数据和该第一运行数据中服务成功率的差值越大,该第一样本代码存在程序错误的概率越小。第二运行数据和第一运行数据中服务失败率的差值越小,该第一样本代码存在程序错误的概率越小。
其中,第二运行数据和该第一运行数据中每个参数的差值均是指:第二运行数据中的参数,减去第一运行数据中的参数得到的值。例如,第二运行数据和该第一运行数据中业务指标的差值是指,第二运行数据中的业务指标减去第一运行数据中业务指标得到的值。
可选的,代码检测服务器中可以预先存储有多个业务指标的业务差值范围所对应的样本代码存在程序错误的概率。代码检测服务器可以根据第二运行数据和该第一运行数据中业务指标的差值,与第一运行数据中业务指标的比值所处的业务差值范围,确定该第一样本代码存在程序错误的概率。其中,业务差值范围可以采用业务指标的差值与第一运行数据中业务指标的比值进行表示。
示例的,假设代码检测服务器中存储了两个业务差值范围:[-100%,-10%),以及[-10%,+∞)。其中,业务差值范围[-100%,-10%)对应的样本代码存在程序错误的概率为1,业务差值范围[-10%,+∞)对应的样本代码存在程序错误的概率为0。也即是,若第二运行数据与第一运行数据相比,业务指标下降超过10%,则可以确定该第一样本代码存在程序错误的概率为1。
可选的,代码检测服务器中还可以预先存储有多个异常数量的异常数量差值范围所对应的样本代码存在程序错误的概率。代码检测服务器可以根据第二运行数据和该第一运行数据中异常数量的差值,与第一运行数据中异常数量的比值所处的异常数量差值范围,确定该第一样本代码存在程序错误的概率。其中,异常数量差值范围可以采用异常数量的差值与第一运行数据中异常数量的比值进行表示。
示例的,假设代码检测服务器中存储了两个异常数量差值范围:[-100%,10%],以及(10%,+∞)。其中,异常数量差值范围[-100%,10%]对应的样本代码存在程序错误的概率为0,异常数量差值范围(10%,+∞)对应的样本代码存在程序错误的概率为1。也即是,若第二运行数据与第一运行数据相比,异常数量上升超过10%,则可以确定该第一样本代码存在程序错误的概率为1。
可选的,代码检测服务器中还可以预先存储有多个服务成功率的成功率差值范围所对应的样本代码存在程序错误的概率。代码检测服务器可以根据第二运行数据和该第一运行数据中服务成功率的差值,与第一运行数据中服务成功率的比值所处的成功率差值范围,确定该第一样本代码存在程序错误的概率。其中,成功率差值范围可以采用服务成功率的差值与第一运行数据中服务成功率的比值进行表示。
示例的,假设代码检测服务器中存储了两个成功率差值范围:[-100%,-10%),以及[-10%,+∞)。其中,成功率差值范围[-100%,-10%)对应的样本代码存在程序错误的概率为1,成功率差值范围[-10%,+∞)对应的样本代码存在程序错误的概率为0。也即是,若第二运行数据与第一运行数据相比,服务成功率下降超过10%,则可以确定该第一样本代码存在程序错误的概率为1。
可选的,代码检测服务器中可以预先存储有多个服务失败率的失败率差值范围所对应的样本代码存在程序错误的概率。代码检测服务器可以根据第二运行数据和该第一运行数据中服务失败率的差值,与第一运行数据中服务失败率的比值所处的失败率差值范围,确定该第一样本代码存在程序错误的概率。其中,失败率差值范围可以采用服务失败率的差值与第一运行数据中服务失败率的比值进行表示。
示例的,假设代码检测服务器中存储了两个失败率差值范围:[-100%,10%]以及(10%,+∞)。其中,失败率范围[-100%,10%]对应的样本代码存在程序错误的概率为0,失败率范围(10%,+∞)对应的样本代码存在程序错误的概率为1。也即是,若第二运行数据与第一运行数据相比,服务失败率上升超过10%,则可以确定该第一样本代码存在程序错误的概率为1。
需要说明的是,在本发明实施例中,代码检测服务器中还可以预先存储有更多的参数差值范围所对应的样本代码存在程序错误的概率。
示例的,代码检测服务器中预先存储有三个业务差值范围:[-100%,-10%],(-10%,-5%),以及[-5%,+∞)。其中,业务差值范围[-100%,-10%)对应的样本代码存在程序错误的概率为0,业务差值范围[-10%,-5%)对应的样本代码存在程序错误的概率为0.5,业务差值范围[-5%,+∞)对应的样本代码存在程序错误的概率为1。也即是,若第二运行数据与第一运行数据相比,业务指标下降超过5%,但不超过10%,则可以确定该第一样本代码存在程序错误的概率为0.5,若第二运行数据与第一运行数据相比,业务指标下降大于或等于10%,则可以确定该第一样本代码存在程序错误的概率为1。
还需要说明的是,若代码检测服务器获取到的运行数据包括多个参数,且根据该多个参数所确定出的第一样本代码存在程序错误的概率不同,则可以将各个概率中的最大概率,作为最终确定出的该第一样本代码存在程序错误的概率。或者,还可以将各个概率的均值,作为最终确定出的该第一样本代码存在错误的概率。又或者,该可以将各个概率中的中值,作为最终确定出的该第一样本代码存在程序错误的概率。
参考图6,作为另一种可选的实现方式,代码检测服务器确定每个第一样本代码存在程序的概率的方法可以包括:
步骤208b、获取第一样本代码的第二应用程序运行过程中针对该第一样本代码的操作数据。
该第一样本代码可以是对第二应用程序的第二样本代码进行修改得到的代码。也即是,该第一样本代码为更新后的第二应用程序的代码。第一样本代码的操作数据可以用于记录在第二应用程序的运行过程中,运维人员对该第一样本代码所执行的操作,该操作可以包括修改操作。
在第二应用程序的运行过程中,运维人员可以对该第二应用程序的运行情况进行监测。当确定该第一样本代码存在程序错误时,运维人员可以对该第一样本代码进行修改。例如,可以将该第一样本代码修改为第二样本代码(即针对第二样本代码的修改被回滚)。
步骤209b、根据该操作数据,确定该第一样本代码存在程序错误的概率。
在本发明实施例中,代码检测服务器可以根据该操作数据中记录的操作的类型,确定该第一样本代码存在程序错误的概率。
例如,若代码检测服务器根据该操作数据,确定出运维人员对该第一样本代码所执行的操作为修改操作,则可以确定该第一样本代码存在程序错误的概率为1。代码检测模型根据该操作数据,确定出该运维人员对该第一样本代码所执行的操作不是修改操作,或者未执行任何操作,则可以确定该第一样本代码存在程序错误的概率为0。
还需要说明的是,本发明实施例提供的应用程序的代码检测方法的步骤的先后顺序可以进行适当调整,例如步骤209a可以在步骤208a之前执行,步骤203可以在步骤201之前执行,步骤206和步骤207可以删除。任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化的方法,都应涵盖在本申请的保护范围之内,因此不再赘述。
还需要说明的是,上述步骤201、步骤202、步骤206以及步骤207,均可以是由模型训练服务器执行的,该模型训练服务器与代码检测服务器可以相互独立设置。该模型训练服务器在对多个样本数据进行模型训练后,可以将得到的代码检测模型发送至代码检测服务器,由该代码检测服务器实现对代码的检测。
综上所述,本发明实施例提供了一种应用程序的代码检测方法,该方法将获取到的第一应用程序的第一代码的属性信息输入代码检测模型,根据该代码检测模型的输出结果,确定该第一代码存在程序错误的概率。通过代码检测模型来确定代码存在程序错误的概率,无需人工检测,效率较高。
图7是本发明实施例提供的一种应用程序的代码检测装置的结构示意图。参考图7可以看出,该装置可以包括:
第一获取模块301,用于获取第一应用程序的第一代码的属性信息。
输入模块302,用于将该第一代码的属性信息输入代码检测模型,该代码检测模型基于已确定是否存在程序错误的第一样本代码的属性信息训练得到。
第一确定模块303,用于根据该代码检测模型的输出结果,确定该第一代码存在程序错误的概率。
可选的,该第一代码的属性信息可以包括下述信息中的一种或多种:该第一代码所属项目的标识,该第一代码所属文件的标识,该第一代码的提交者的信息。
在本发明实施例中,若该第一代码为对第一应用程序的第二代码进行修改得到的代码,则该第一代码的属性信息还可以包括:该第一代码相对于该第二代码的修改部分的修改信息。
图8是本发明实施例提供的另一种应用程序的代码检测装置的结构示意图。参考图8可以看出,该装置还可以包括:
第二获取模块304,用于获取多个样本数据,每个该样本数据包括该第一样本代码的属性信息以及该第一样本代码的检测标签,该第一样本代码的检测标签用于指示该第一样本代码存在程序错误的概率。
训练模块305,用于基于该多个样本数据进行模型训练,得到该代码检测模型。
第三获取模块306,用于获取该第一代码的检测标签,该第一代码的检测标签用于指示该第一代码实际存在程序错误的概率
该训练模块305,还可以用于基于该第一代码的属性信息以及该第一代码的检测标签对该代码检测模型进行训练,以更新该代码检测模型。
若该第一样本代码为对第二应用程序的第二样本代码进行修改得到的代码,作为一种可选的实现方式,参考图8,该装置还可以包括:
第四获取模块307a,用于获取采用该第二样本代码的第二应用程序的第一运行数据。
第五获取模块308a,用于获取采用该第一样本代码的第二应用程序的第二运行数据。
第二确定模块309a,用于根据该第一运行数据和该第二运行数据,确定该第一样本代码存在程序错误的概率。
可选的,该第一运行数据和该第二运行数据中的每个运行数据均包括:业务指标,异常数量,服务成功率以及服务失败率中的一种或多种。
其中,该第一样本代码存在程序错误的概率,与该第二运行数据和该第一运行数据中业务指标的差值负相关,与该第二运行数据和该第一运行数据中异常数量的差值正相关,与该第二运行数据和该第一运行数据中服务成功率的差值负相关,与该第二运行数据和该第一运行数据中服务失败率的差值正相关。
作为另一种可选的实现方式,参考图9,该装置还可以包括:
第六获取模块307b,用于获取该第一样本代码的第二应用程序运行过程中针对该第一样本代码的操作数据。
第二确定模块308b,用于根据该操作数据,确定该第一样本代码存在程序错误的概率。
综上所述,本发明实施例提供了一种应用程序的代码检测装置,该装置可以获取第一应用程序的第一代码的属性信息,将该第一代码的属性信息输入代码检测模型,并根据该代码检测模型的输出结果,直接确定该第一代码存在程序错误的概率。由于可以直接通过代码检测模型来确定代码存在程序错误的概率,无需人工检测,因此有效提高了代码检测的效率。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置,模块,以及子模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本发明实施例提供了一种应用程序的代码检测装置,该装置可以包括:处理器和存储器,该存储器可以用于存储由处理器执行的指令,该处理器可以通过执行存储器中存储的指令以实现上述实施例提供的应用程序的代码检测方法。
本发明实施例提供了一种计算机可读存储介质,该存储介质存储有至少一条指令、至少一段程序、代码集或指令集,该至少一条指令、该至少一段程序、该代码集或指令集由处理器加载并执行以实现上述实施例提供的应用程序的代码检测方法。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (10)

1.一种应用程序的代码检测方法,其特征在于,所述方法包括:
获取第一应用程序的第一代码的属性信息;
将所述第一代码的属性信息输入代码检测模型,所述代码检测模型基于已确定是否存在程序错误的第一样本代码的属性信息训练得到;
根据所述代码检测模型的输出结果,确定所述第一代码存在程序错误的概率。
2.根据权利要求1所述的方法,其特征在于,所述第一代码的属性信息包括下述信息中的一种或多种:所述第一代码所属项目的标识,所述第一代码所属文件的标识,所述第一代码的提交者的信息。
3.根据权利要求2所述的方法,其特征在于,所述第一代码为对第一应用程序的第二代码进行修改得到的代码;所述第一代码的属性信息还包括:所述第一代码相对于所述第二代码的修改部分的修改信息。
4.根据权利要求1至3任一所述的方法,其特征在于,在所述获取第一应用程序的第一代码的属性信息之前,所述方法还包括:
获取多个样本数据,每个所述样本数据包括所述第一样本代码的属性信息以及所述第一样本代码的检测标签,所述第一样本代码的检测标签用于指示所述第一样本代码存在程序错误的概率;
基于所述多个样本数据进行模型训练,得到所述代码检测模型。
5.根据权利要求4所述的方法,其特征在于,所述第一样本代码为对第二应用程序的第二样本代码进行修改得到的代码;在所述获取多个样本数据之前,所述方法还包括:
获取采用所述第二样本代码的第二应用程序的第一运行数据;
获取采用所述第一样本代码的第二应用程序的第二运行数据;
根据所述第一运行数据和所述第二运行数据,确定所述第一样本代码存在程序错误的概率。
6.根据权利要求5所述的方法,其特征在于,所述第一运行数据和所述第二运行数据中的每个运行数据均包括:业务指标,异常数量,服务成功率以及服务失败率中的一种或多种;
所述第一样本代码存在程序错误的概率,与所述第二运行数据和所述第一运行数据中业务指标的差值负相关,与所述第二运行数据和所述第一运行数据中异常数量的差值正相关,与所述第二运行数据和所述第一运行数据中服务成功率的差值负相关,与所述第二运行数据和所述第一运行数据中服务失败率的差值正相关。
7.根据权利要求4所述的方法,其特征在于,所述第一样本代码是对第二应用程序的第二样本代码进行修改得到的代码;在所述获取多个样本数据之前,所述方法还包括:
获取所述第一样本代码的第二应用程序运行过程中针对所述第一样本代码的操作数据;
根据所述操作数据,确定所述第一样本代码存在程序错误的概率。
8.根据权利要求1至3任一所述的方法,其特征在于,在所述确定所述第一代码存在程序错误的概率之后,所述方法还包括:
获取所述第一代码的检测标签,所述第一代码的检测标签用于指示所述第一代码实际存在程序错误的概率;
基于所述第一代码的属性信息以及所述第一代码的检测标签对所述代码检测模型进行训练,以更新所述代码检测模型。
9.一种应用程序的代码检测装置,其特征在于,所述装置包括:
第一获取模块,用于获取第一应用程序的第一代码的属性信息;
输入模块,用于将所述第一代码的属性信息输入代码检测模型,所述代码检测模型基于已确定是否存在程序错误的第一样本代码的属性信息训练得到;
第一确定模块,用于根据所述代码检测模型的输出结果,确定所述第一代码存在程序错误的概率。
10.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如权利要求1至8任一所述的应用程序的代码检测方法。
CN201910532630.6A 2019-06-19 2019-06-19 应用程序的代码检测方法及装置 Withdrawn CN110287110A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910532630.6A CN110287110A (zh) 2019-06-19 2019-06-19 应用程序的代码检测方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910532630.6A CN110287110A (zh) 2019-06-19 2019-06-19 应用程序的代码检测方法及装置

Publications (1)

Publication Number Publication Date
CN110287110A true CN110287110A (zh) 2019-09-27

Family

ID=68004244

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910532630.6A Withdrawn CN110287110A (zh) 2019-06-19 2019-06-19 应用程序的代码检测方法及装置

Country Status (1)

Country Link
CN (1) CN110287110A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112416799A (zh) * 2020-12-03 2021-02-26 中国人寿保险股份有限公司 一种代码质量预警方法、装置、电子设备及存储介质
CN112711424A (zh) * 2019-10-25 2021-04-27 腾讯科技(深圳)有限公司 应用程序的风险问题确定方法、装置及存储介质
CN114490163A (zh) * 2022-03-28 2022-05-13 北京天维信通科技有限公司 一种故障自愈方法、装置及电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180150742A1 (en) * 2016-11-28 2018-05-31 Microsoft Technology Licensing, Llc. Source code bug prediction
CN109388551A (zh) * 2017-08-07 2019-02-26 北京京东尚科信息技术有限公司 预测代码存在漏洞概率的方法、漏洞检测方法、相关装置
CN109829298A (zh) * 2018-11-26 2019-05-31 努比亚技术有限公司 内存泄露风险检测方法、终端及计算机可读存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180150742A1 (en) * 2016-11-28 2018-05-31 Microsoft Technology Licensing, Llc. Source code bug prediction
CN109388551A (zh) * 2017-08-07 2019-02-26 北京京东尚科信息技术有限公司 预测代码存在漏洞概率的方法、漏洞检测方法、相关装置
CN109829298A (zh) * 2018-11-26 2019-05-31 努比亚技术有限公司 内存泄露风险检测方法、终端及计算机可读存储介质

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112711424A (zh) * 2019-10-25 2021-04-27 腾讯科技(深圳)有限公司 应用程序的风险问题确定方法、装置及存储介质
CN112711424B (zh) * 2019-10-25 2024-06-11 腾讯科技(深圳)有限公司 应用程序的风险问题确定方法、装置及存储介质
CN112416799A (zh) * 2020-12-03 2021-02-26 中国人寿保险股份有限公司 一种代码质量预警方法、装置、电子设备及存储介质
CN114490163A (zh) * 2022-03-28 2022-05-13 北京天维信通科技有限公司 一种故障自愈方法、装置及电子设备
CN114490163B (zh) * 2022-03-28 2022-08-05 北京天维信通科技有限公司 一种故障自愈方法、装置及电子设备

Similar Documents

Publication Publication Date Title
Raja et al. Defining and evaluating a measure of open source project survivability
CA2707916C (en) Intelligent timesheet assistance
US8126768B2 (en) Application change request to deployment maturity model
US8359580B2 (en) System and method for tracking testing of software modification projects
US20130311968A1 (en) Methods And Apparatus For Providing Predictive Analytics For Software Development
CN109144724A (zh) 一种微服务资源调度系统及方法
US7844641B1 (en) Quality management in a data-processing environment
CN107967485A (zh) 用电计量设备故障分析方法及装置
CN110287110A (zh) 应用程序的代码检测方法及装置
CN108369675A (zh) 用于案例分配的技术
CN112905435B (zh) 基于大数据的工作量评估方法、装置、设备及存储介质
GB2498023A (en) Assessing maturity of business processes
CN109753408A (zh) 一种基于机器学习的流程异常预测方法
US11775901B2 (en) Real time testing and monitoring for business process management systems
Benestad et al. Understanding software maintenance and evolution by analyzing individual changes: a literature review
CN111752833B (zh) 一种软件质量体系准出方法、装置、服务器及存储介质
CN110032505A (zh) 软件质量确定装置、软件质量确定方法和软件质量确定程序
Zahoransky et al. Towards a process-centered resilience framework
Honsel et al. Hidden markov models for the prediction of developer involvement dynamics and workload
Tarhan et al. Investigating the effect of variations in the test development process: a case from a safety-critical system
Babar et al. Software quality enhancement for value based systems through stakeholders quantification
US20240005259A1 (en) Index modeling
Chang et al. Defect prevention in software processes: An action-based approach
Younis et al. The Influence of SCADA Information Technology System Application on Improving Performance Efficiency (Field study on the Ministry of Electricity and Oil of the Kurdistan Region of Iraq)
JP2001337846A (ja) ソフトウエア品質検査支援システム及び方法

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
WW01 Invention patent application withdrawn after publication
WW01 Invention patent application withdrawn after publication

Application publication date: 20190927