CN117215918A - 源代码的缺陷检测与修复方法及装置 - Google Patents
源代码的缺陷检测与修复方法及装置 Download PDFInfo
- Publication number
- CN117215918A CN117215918A CN202311083471.9A CN202311083471A CN117215918A CN 117215918 A CN117215918 A CN 117215918A CN 202311083471 A CN202311083471 A CN 202311083471A CN 117215918 A CN117215918 A CN 117215918A
- Authority
- CN
- China
- Prior art keywords
- source code
- defect
- detected
- code
- detection
- 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
- 230000007547 defect Effects 0.000 title claims abstract description 310
- 238000001514 detection method Methods 0.000 title claims abstract description 192
- 238000000034 method Methods 0.000 title claims abstract description 64
- 230000008439 repair process Effects 0.000 title claims abstract description 49
- 238000004458 analytical method Methods 0.000 claims abstract description 120
- 238000011156 evaluation Methods 0.000 claims abstract description 100
- 230000003068 static effect Effects 0.000 claims abstract description 38
- 238000004590 computer program Methods 0.000 claims description 27
- 230000006399 behavior Effects 0.000 claims description 12
- 230000008569 process Effects 0.000 claims description 11
- 238000004364 calculation method Methods 0.000 claims description 4
- 230000008878 coupling Effects 0.000 claims description 3
- 238000010168 coupling process Methods 0.000 claims description 3
- 238000005859 coupling reaction Methods 0.000 claims description 3
- 230000005484 gravity Effects 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 10
- 238000012360 testing method Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 6
- 230000004044 response Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 2
- 206010000117 Abnormal behaviour Diseases 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000012854 evaluation process Methods 0.000 description 1
- 238000005206 flow analysis Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
- 230000002194 synthesizing effect Effects 0.000 description 1
Classifications
-
- 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
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/30—Computing systems specially adapted for manufacturing
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种源代码的缺陷检测与修复方法及装置,该方法包括:对待检测的源代码进行静态代码缺陷分析,得到第一缺陷分析结果;对待检测的源代码进行动态代码缺陷分析,得到第二缺陷分析结果;根据第一缺陷分析结果和第二缺陷分析结果,确定待检测的源代码的缺陷信息;根据待检测的源代码的每个检测指标的缺陷评价信息、预先设置的每个检测指标的不同缺陷评价信息对应的评价分值,计算待检测的源代码的每个检测指标的熵值,然后确定待检测的源代码的每个检测指标的权重,进而确定待检测的源代码的多个检测指标的缺陷修复优先级;根据缺陷修复优先级,对待检测的源代码进行缺陷修复,可以提高源代码缺陷检测的覆盖范围、效率和准确性。
Description
技术领域
本发明涉及计算机数据处理技术领域,尤其涉及一种源代码的缺陷检测与修复方法及装置。
背景技术
本部分旨在为权利要求书中陈述的本发明实施例提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
代码缺陷检测是软件开发中的一个重要环节,旨在发现和修复代码中的错误、漏洞和不良实践。目前,现有技术中的代码缺陷检测方法存在以下缺点:
一是主观性:源代码评估通常需要人工参与,评估结果可能受评估人员主观因素的影响。不同的评估人员可能有不同的判断标准和偏好,导致评估结果的主观性。
二是依赖经验:源代码评估需要评估人员具备深入的领域知识和经验。对于新手或缺乏经验的评估人员来说,可能会存在评估结果的不准确性或一致性问题。
三是耗时性:对于大型项目或复杂的代码库,进行全面的源代码评估可能需要耗费大量时间和人力资源,这限制了评估的规模和效率。
四是有限的覆盖范围:源代码评估主要关注代码本身的质量和缺陷,但无法涵盖其他与代码相关的因素,如运行环境、配置文件等;这可能导致评估结果与实际运行情况存在差异。
五是难以量化:源代码评估往往是基于经验和主观判断的,缺乏量化指标和统计数据的支持;这使得评估结果难以精确度量和比较,可能存在主观性和不确定性。
针对上述问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供一种源代码的缺陷检测与修复方法,用以提高源代码缺陷检测的覆盖范围、效率和准确性,节约人力资源,该方法包括:
获取待检测的源代码;
对待检测的源代码进行静态代码缺陷分析,得到第一缺陷分析结果,所述静态代码缺陷分析表征在未运行源代码时,对源代码静态数据存在的缺陷进行分析;
对待检测的源代码进行动态代码缺陷分析,得到第二缺陷分析结果,所述动态代码缺陷分析表征在运行源代码时,对源代码动态行为存在的缺陷进行分析;
根据第一缺陷分析结果和第二缺陷分析结果,确定待检测的源代码的缺陷信息,所述缺陷信息包括待检测的源代码的多个检测指标的缺陷评价信息;
根据待检测的源代码的每个检测指标的缺陷评价信息、预先设置的每个检测指标的不同缺陷评价信息对应的评价分值,计算待检测的源代码的每个检测指标的熵值;
根据待检测的源代码的每个检测指标的熵值,确定待检测的源代码的每个检测指标的权重;
根据待检测的源代码的每个检测指标的权重,确定待检测的源代码的多个检测指标的缺陷修复优先级;
根据待检测的源代码的多个检测指标的缺陷修复优先级,对待检测的源代码进行缺陷修复。
本发明实施例还提供一种源代码的缺陷检测与修复装置,用以提高源代码缺陷检测的覆盖范围、效率和准确性,节约人力资源,该装置包括:
源代码获取模块,用于获取待检测的源代码;
第一缺陷分析模块,用于对待检测的源代码进行静态代码缺陷分析,得到第一缺陷分析结果,所述静态代码缺陷分析表征在未运行源代码时,对源代码静态数据存在的缺陷进行分析;
第二缺陷分析模块,用于对待检测的源代码进行动态代码缺陷分析,得到第二缺陷分析结果,所述动态代码缺陷分析表征在运行源代码时,对源代码动态行为存在的缺陷进行分析;
缺陷信息确定模块,用于根据第一缺陷分析结果和第二缺陷分析结果,确定待检测的源代码的缺陷信息,所述缺陷信息包括待检测的源代码的多个检测指标的缺陷评价信息;
熵值计算模块,用于根据待检测的源代码的每个检测指标的缺陷评价信息、预先设置的每个检测指标的不同缺陷评价信息对应的评价分值,计算待检测的源代码的每个检测指标的熵值;
权重确定模块,用于根据待检测的源代码的每个检测指标的熵值,确定待检测的源代码的每个检测指标的权重;
缺陷修复优先级确定模块,用于根据待检测的源代码的每个检测指标的权重,确定待检测的源代码的多个检测指标的缺陷修复优先级;
缺陷修复模块,用于根据待检测的源代码的多个检测指标的缺陷修复优先级,对待检测的源代码进行缺陷修复。
本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述源代码的缺陷检测与修复方法。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述源代码的缺陷检测与修复方法。
本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述源代码的缺陷检测与修复方法。
本发明实施例中,获取待检测的源代码;对待检测的源代码进行静态代码缺陷分析,得到第一缺陷分析结果;对待检测的源代码进行动态代码缺陷分析,得到第二缺陷分析结果;根据第一缺陷分析结果和第二缺陷分析结果,确定待检测的源代码的缺陷信息,所述缺陷信息包括待检测的源代码的多个检测指标的缺陷评价信息;根据待检测的源代码的每个检测指标的缺陷评价信息、预先设置的每个检测指标的不同缺陷评价信息对应的评价分值,计算待检测的源代码的每个检测指标的熵值;根据待检测的源代码的每个检测指标的熵值,确定待检测的源代码的每个检测指标的权重;根据待检测的源代码的每个检测指标的权重,确定待检测的源代码的多个检测指标的缺陷修复优先级;根据待检测的源代码的多个检测指标的缺陷修复优先级,对待检测的源代码进行缺陷修复。
本发明通过对待检测的源代码进行静态代码分析和动态代码分析,确定待检测的源代码的缺陷信息;并利用熵权法考虑多个检测指标对源代码缺陷信息的影响,量化多个检测指标之间的权重和相关性,更全面地评估源代码的缺陷情况,提高源代码缺陷检测的覆盖范围、效率和准确性,节约人力资源。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本发明实施例中源代码的缺陷检测与修复方法的处理流程图;
图2为本发明实施例中对待检测的源代码进行静态代码缺陷分析的一方法流程图;
图3为本发明实施例中对待检测的源代码进行动态代码缺陷分析的一方法流程图;
图4为本发明实施例中计算每个检测指标熵值的一方法流程图;
图5为本发明实施例中源代码的缺陷检测与修复装置的结构示意图;
图6为本发明一实施例的计算机设备结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
首先,对本发明实施例中的技术名词进行介绍:
静态代码分析:静态代码分析是一种通过检查源代码而不是运行时执行代码来发现潜在缺陷的方法。它使用静态分析技术,例如抽象语法树(Abstract Syntax Tree,AST)和数据流分析,来检测代码中的问题。常见的静态代码分析工具包括FindBugs、Checkstyle、PMD和SonarQube。
动态测试:动态测试是一种在运行时执行代码并观察其行为来检测缺陷的方法。它包括单元测试、集成测试和系统测试等。通过编写测试用例,并执行这些测试用例以覆盖代码的不同路径和边界情况,可以发现代码中的错误和异常行为。常见的动态测试框架包括JUnit和TestNG。
图1为本发明实施例中源代码的缺陷检测与修复方法的处理流程图。如图1所示,本发明实施例中源代码的缺陷检测与修复方法可以包括:
步骤101、获取待检测的源代码;
步骤102、对待检测的源代码进行静态代码缺陷分析,得到第一缺陷分析结果,所述静态代码缺陷分析表征在未运行源代码时,对源代码静态数据存在的缺陷进行分析;
步骤103、对待检测的源代码进行动态代码缺陷分析,得到第二缺陷分析结果,所述动态代码缺陷分析表征在运行源代码时,对源代码动态行为存在的缺陷进行分析;
步骤104、根据第一缺陷分析结果和第二缺陷分析结果,确定待检测的源代码的缺陷信息,所述缺陷信息包括待检测的源代码的多个检测指标的缺陷评价信息;
步骤105、根据待检测的源代码的每个检测指标的缺陷评价信息、预先设置的每个检测指标的不同缺陷评价信息对应的评价分值,计算待检测的源代码的每个检测指标的熵值;
步骤106、根据待检测的源代码的每个检测指标的熵值,确定待检测的源代码的每个检测指标的权重;
步骤107、根据待检测的源代码的每个检测指标的权重,确定待检测的源代码的多个检测指标的缺陷修复优先级;
步骤108、根据待检测的源代码的多个检测指标的缺陷修复优先级,对待检测的源代码进行缺陷修复。
下面介绍本发明实施例中源代码的缺陷检测与修复方法的具体执行步骤:
首先可以获取待检测的源代码,实施例中,待检测的源代码样本数目可以是一个,也可以是多个。
然后可以执行步骤102,对待检测的源代码进行静态代码缺陷分析,得到第一缺陷分析结果,所述静态代码缺陷分析表征在未运行源代码时,对源代码静态数据存在的缺陷进行分析。
图2为本发明实施例中对待检测的源代码进行静态代码缺陷分析的一方法流程图。如图2所示,在一个实施例中,对待检测的源代码进行静态代码缺陷分析,得到第一缺陷分析结果,包括:
步骤201、确定待检测的源代码静态数据的代码模式存在缺陷的可能性,标记潜在的缺陷爆发点;
步骤202、获取缺陷爆发点标记位置的上下文信息,对缺陷爆发点标记位置的上下文信息进行缺陷分析,得到第一缺陷分析结果。
在一个实施例中,所述代码模式可以包括以下内容其中之一或任意组合:代码结构清晰度、代码复杂度、代码耦合度和标识符命名规范性。
接下来可以执行步骤103,对待检测的源代码进行动态代码缺陷分析,得到第二缺陷分析结果,所述动态代码缺陷分析表征在运行源代码时,对源代码动态行为存在的缺陷进行分析。
图3为本发明实施例中对待检测的源代码进行动态代码缺陷分析的一方法流程图。如图3所示,在一个实施例中,对待检测的源代码进行动态代码缺陷分析,得到第二缺陷分析结果,包括:
步骤301、确定待检测的源代码在运行过程中的操作行为存在缺陷的可能性,标记潜在的缺陷爆发点;
步骤302、获取缺陷爆发点标记位置的数据流动信息,对缺陷爆发点标记位置的数据流动信息进行缺陷分析,得到第二缺陷分析结果。
下面可以执行步骤104和105、先根据第一缺陷分析结果和第二缺陷分析结果,确定待检测的源代码的缺陷信息,其中缺陷信息包括待检测的源代码的多个检测指标的缺陷评价信息;再根据待检测的源代码的每个检测指标的缺陷评价信息、预先设置的每个检测指标的不同缺陷评价信息对应的评价分值,计算待检测的源代码的每个检测指标的熵值;其中,缺陷评价信息可以包括待检测的源代码的每个检测指标的实际缺陷问题,以及实际缺陷问题的潜在风险程度。
具体实施时,可以预先设置每个检测指标的不同缺陷评价信息对应的评价分值,例如,对于响应时间这个检测指标,可以预先设置:若代码运行过程中的响应时间在1秒内,代码运行顺畅,不存在风险,评价分值为10;若代码运行过程中的响应时间超过1秒,但在2秒内,代码运行较正常,风险较低,评价分值为8;若代码运行过程中的响应时间超过2秒,但在3秒内,代码运行稍卡顿,存在一般性风险,评价分值为6;若代码运行过程中的响应时间超过3秒,代码运行不顺,风险较高,评价分值为4。
为进一步提高缺陷检测的全面性和精确度,如表1所示,还可以预先设置多个一级检测指标,其中每个一级检测指标包含多个二级检测指标;具体的,每个二级检测指标的评价分值取值范围可以是相同的,实际分值可以在根据预先设置的每个检测指标的不同缺陷评价信息对应的评价分值确定之后,再进行填写。
表1
图4为本发明实施例中计算每个检测指标熵值的一方法流程图。如图4所示,在一个实施例中,根据待检测的源代码的每个检测指标的缺陷评价信息、预先设置的每个检测指标的不同缺陷评价信息对应的评价分值,计算待检测的源代码的每个检测指标的熵值,包括:
步骤401、根据待检测的源代码的每个检测指标的缺陷评价信息、预先设置的每个检测指标的不同缺陷评价信息对应的评价分值,确定待检测的源代码的每个检测指标的评价分值;
步骤402、根据待检测的源代码的每个检测指标的评价分值,计算待检测的源代码的每个检测指标的熵值。
在一个实施例中,可以按照如下公式,根据待检测的源代码的每个检测指标的评价分值,计算待检测的源代码的每个检测指标的熵值:
其中,Ej表示第j个检测指标的熵值,j=1,2,...,m;n表示待检测的源代码的样本数目;xij表示第i个源代码样本的第j个检测指标的评价分值;fij表示第i个源代码样本的第j个检测指标的特征比重。
在计算得到待检测的源代码的每个检测指标的熵值之后,可以执行步骤106,根据待检测的源代码的每个检测指标的熵值,确定待检测的源代码的每个检测指标的权重。
在一个实施例中,可以按照如下公式,根据待检测的源代码的每个检测指标的熵值,确定待检测的源代码的每个检测指标的权重:
其中,wj即为第j个检测指标的权重;Ej表示第j个检测指标的熵值,j=1,2,...,m;m表示检测指标的数目。
在确定待检测的源代码的每个检测指标的权重之后,执行步骤107和步骤108,可以先根据待检测的源代码的每个检测指标的权重,确定待检测的源代码的多个检测指标的缺陷修复优先级;再根据待检测的源代码的多个检测指标的缺陷修复优先级,对待检测的源代码进行缺陷修复。
具体实施时,由上述公式可知,根据熵值计算每个检测指标的权重,其中熵值越大,检测指标的权重越小。为提高权重的准确性,还可以对权重进行校正,使其总和为1,其中校正可以通过将每个权重除以所有权重之和来实现。
在确定待检测的源代码的每个检测指标的权重之后,具体可以根据每个检测指标的权重从大到小的顺序,确定待检测的源代码的多个检测指标的缺陷修复优先级。
本发明技术解决的有益效果如下所示:
一是综合多个检测指标:熵权法可以综合考虑多个评估指标对源代码缺陷的影响。通过量化指标之间的权重和相关性,可以将多个检测指标汇总为一个综合指标,更全面地评估源代码的缺陷情况。
二是解决主观性和不确定性问题:在源代码缺陷评估中,不同的评估指标可能具有不同的重要性和贡献度。使用熵权法可以通过数据分析和计算,将主观性降至最低,并减少评估过程中的不确定性。
三是提高评估准确性:通过基于熵权法的评估,可以将权重分配给不同的指标,以准确地反映它们对源代码缺陷的影响程度。这有助于提高评估结果的准确性和可靠性。
四是适应复杂情况:源代码缺陷评估往往涉及多个检测指标和多个评估因素,具有复杂性。熵权法提供了一种结构化的方法来处理多个检测指标之间的权衡和相互关系,适应不同评估因素之间的复杂情况。
五是可解释性强:基于熵权法的源代码缺陷评估技术通常能够提供可解释性强的评估结果。通过权重的定义和计算过程,可以清晰地了解每个指标对于整体评估结果的贡献和重要性。
本发明实施例中还提供了一种源代码的缺陷检测与修复装置,如下面的实施例所述。由于该装置解决问题的原理与源代码的缺陷检测与修复方法相似,因此该装置的实施可以参见源代码的缺陷检测与修复方法的实施,重复之处不再赘述。
图5为本发明实施例中源代码的缺陷检测与修复装置的结构示意图。如图5所示,本发明实施例中源代码的缺陷检测与修复装置具体可以包括:
源代码获取模块501,用于获取待检测的源代码;
第一缺陷分析模块502,用于对待检测的源代码进行静态代码缺陷分析,得到第一缺陷分析结果,所述静态代码缺陷分析表征在未运行源代码时,对源代码静态数据存在的缺陷进行分析;
第二缺陷分析模块503,用于对待检测的源代码进行动态代码缺陷分析,得到第二缺陷分析结果,所述动态代码缺陷分析表征在运行源代码时,对源代码动态行为存在的缺陷进行分析;
缺陷信息确定模块504,用于根据第一缺陷分析结果和第二缺陷分析结果,确定待检测的源代码的缺陷信息,所述缺陷信息包括待检测的源代码的多个检测指标的缺陷评价信息;
熵值计算模块505,用于根据待检测的源代码的每个检测指标的缺陷评价信息、预先设置的每个检测指标的不同缺陷评价信息对应的评价分值,计算待检测的源代码的每个检测指标的熵值;
权重确定模块506,用于根据待检测的源代码的每个检测指标的熵值,确定待检测的源代码的每个检测指标的权重;
缺陷修复优先级确定模块507,用于根据待检测的源代码的每个检测指标的权重,确定待检测的源代码的多个检测指标的缺陷修复优先级;
缺陷修复模块508,用于根据待检测的源代码的多个检测指标的缺陷修复优先级,对待检测的源代码进行缺陷修复。
在一个实施例中,第一缺陷分析模块502具体用于:
确定待检测的源代码静态数据的代码模式存在缺陷的可能性,标记潜在的缺陷爆发点;
获取缺陷爆发点标记位置的上下文信息,对缺陷爆发点标记位置的上下文信息进行缺陷分析,得到第一缺陷分析结果。
在一个实施例中,所述代码模式包括以下内容其中之一或任意组合:
代码结构清晰度、代码复杂度、代码耦合度和标识符命名规范性。
在一个实施例中,第二缺陷分析模块503具体用于:
确定待检测的源代码在运行过程中的操作行为存在缺陷的可能性,标记潜在的缺陷爆发点;
获取缺陷爆发点标记位置的数据流动信息,对缺陷爆发点标记位置的数据流动信息进行缺陷分析,得到第二缺陷分析结果。
在一个实施例中,熵值计算模块505具体用于:
根据待检测的源代码的每个检测指标的缺陷评价信息、预先设置的每个检测指标的不同缺陷评价信息对应的评价分值,确定待检测的源代码的每个检测指标的评价分值;
根据待检测的源代码的每个检测指标的评价分值,计算待检测的源代码的每个检测指标的熵值。
在一个实施例中,包括按照如下公式,根据待检测的源代码的每个检测指标的评价分值,计算待检测的源代码的每个检测指标的熵值:
其中,Ej表示第j个检测指标的熵值,j=1,2,...,m;n表示待检测的源代码的样本数目;xij表示第i个源代码样本的第j个检测指标的评价分值;fij表示第i个源代码样本的第j个检测指标的特征比重。
在一个实施例中,包括按照如下公式,根据待检测的源代码的每个检测指标的熵值,确定待检测的源代码的每个检测指标的权重:
其中,wj即为第j个检测指标的权重;Ej表示第j个检测指标的熵值,j=1,2,...,m;m表示检测指标的数目。
基于前述发明构思,如图6所示,本发明还提出了一种计算机设备600,包括存储器610、处理器620及存储在存储器610上并可在处理器620上运行的计算机程序630,所述处理器620执行所述计算机程序630时实现前述源代码的缺陷检测与修复方法。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述源代码的缺陷检测与修复方法。
本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述源代码的缺陷检测与修复方法。
综上所述,本发明实施例中,获取待检测的源代码;对待检测的源代码进行静态代码缺陷分析,得到第一缺陷分析结果;对待检测的源代码进行动态代码缺陷分析,得到第二缺陷分析结果;根据第一缺陷分析结果和第二缺陷分析结果,确定待检测的源代码的缺陷信息,所述缺陷信息包括待检测的源代码的多个检测指标的缺陷评价信息;根据待检测的源代码的每个检测指标的缺陷评价信息、预先设置的每个检测指标的不同缺陷评价信息对应的评价分值,计算待检测的源代码的每个检测指标的熵值;根据待检测的源代码的每个检测指标的熵值,确定待检测的源代码的每个检测指标的权重;根据待检测的源代码的每个检测指标的权重,确定待检测的源代码的多个检测指标的缺陷修复优先级;根据待检测的源代码的多个检测指标的缺陷修复优先级,对待检测的源代码进行缺陷修复。
本发明通过对待检测的源代码进行静态代码分析和动态代码分析,确定待检测的源代码的缺陷信息;并利用熵权法考虑多个检测指标对源代码缺陷信息的影响,量化多个检测指标之间的权重和相关性,更全面地评估源代码的缺陷情况,提高源代码缺陷检测的覆盖范围、效率和准确性,节约人力资源。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (14)
1.一种源代码的缺陷检测与修复方法,其特征在于,包括:
获取待检测的源代码;
对待检测的源代码进行静态代码缺陷分析,得到第一缺陷分析结果,所述静态代码缺陷分析表征在未运行源代码时,对源代码静态数据存在的缺陷进行分析;
对待检测的源代码进行动态代码缺陷分析,得到第二缺陷分析结果,所述动态代码缺陷分析表征在运行源代码时,对源代码动态行为存在的缺陷进行分析;
根据第一缺陷分析结果和第二缺陷分析结果,确定待检测的源代码的缺陷信息,所述缺陷信息包括待检测的源代码的多个检测指标的缺陷评价信息;
根据待检测的源代码的每个检测指标的缺陷评价信息、预先设置的每个检测指标的不同缺陷评价信息对应的评价分值,计算待检测的源代码的每个检测指标的熵值;
根据待检测的源代码的每个检测指标的熵值,确定待检测的源代码的每个检测指标的权重;
根据待检测的源代码的每个检测指标的权重,确定待检测的源代码的多个检测指标的缺陷修复优先级;
根据待检测的源代码的多个检测指标的缺陷修复优先级,对待检测的源代码进行缺陷修复。
2.如权利要求1所述的方法,其特征在于,对待检测的源代码进行静态代码缺陷分析,得到第一缺陷分析结果,包括:
确定待检测的源代码静态数据的代码模式存在缺陷的可能性,标记潜在的缺陷爆发点;
获取缺陷爆发点标记位置的上下文信息,对缺陷爆发点标记位置的上下文信息进行缺陷分析,得到第一缺陷分析结果。
3.如权利要求2所述的方法,其特征在于,所述代码模式包括以下内容其中之一或任意组合:
代码结构清晰度、代码复杂度、代码耦合度和标识符命名规范性。
4.如权利要求1所述的方法,其特征在于,对待检测的源代码进行动态代码缺陷分析,得到第二缺陷分析结果,包括:
确定待检测的源代码在运行过程中的操作行为存在缺陷的可能性,标记潜在的缺陷爆发点;
获取缺陷爆发点标记位置的数据流动信息,对缺陷爆发点标记位置的数据流动信息进行缺陷分析,得到第二缺陷分析结果。
5.如权利要求1所述的方法,其特征在于,根据待检测的源代码的每个检测指标的缺陷评价信息、预先设置的每个检测指标的不同缺陷评价信息对应的评价分值,计算待检测的源代码的每个检测指标的熵值,包括:
根据待检测的源代码的每个检测指标的缺陷评价信息、预先设置的每个检测指标的不同缺陷评价信息对应的评价分值,确定待检测的源代码的每个检测指标的评价分值;
根据待检测的源代码的每个检测指标的评价分值,计算待检测的源代码的每个检测指标的熵值。
6.如权利要求5所述的方法,其特征在于,包括按照如下公式,根据待检测的源代码的每个检测指标的评价分值,计算待检测的源代码的每个检测指标的熵值:
其中,Ej表示第j个检测指标的熵值,j=1,2,...,m;n表示待检测的源代码的样本数目;xij表示第i个源代码样本的第j个检测指标的评价分值;fij表示第i个源代码样本的第j个检测指标的特征比重。
7.如权利要求1所述的方法,其特征在于,包括按照如下公式,根据待检测的源代码的每个检测指标的熵值,确定待检测的源代码的每个检测指标的权重:
其中,wj即为第j个检测指标的权重;Ej表示第j个检测指标的熵值,j=1,2,...,m;m表示检测指标的数目。
8.一种源代码的缺陷检测与修复装置,其特征在于,包括:
源代码获取模块,用于获取待检测的源代码;
第一缺陷分析模块,用于对待检测的源代码进行静态代码缺陷分析,得到第一缺陷分析结果,所述静态代码缺陷分析表征在未运行源代码时,对源代码静态数据存在的缺陷进行分析;
第二缺陷分析模块,用于对待检测的源代码进行动态代码缺陷分析,得到第二缺陷分析结果,所述动态代码缺陷分析表征在运行源代码时,对源代码动态行为存在的缺陷进行分析;
缺陷信息确定模块,用于根据第一缺陷分析结果和第二缺陷分析结果,确定待检测的源代码的缺陷信息,所述缺陷信息包括待检测的源代码的多个检测指标的缺陷评价信息;
熵值计算模块,用于根据待检测的源代码的每个检测指标的缺陷评价信息、预先设置的每个检测指标的不同缺陷评价信息对应的评价分值,计算待检测的源代码的每个检测指标的熵值;
权重确定模块,用于根据待检测的源代码的每个检测指标的熵值,确定待检测的源代码的每个检测指标的权重;
缺陷修复优先级确定模块,用于根据待检测的源代码的每个检测指标的权重,确定待检测的源代码的多个检测指标的缺陷修复优先级;
缺陷修复模块,用于根据待检测的源代码的多个检测指标的缺陷修复优先级,对待检测的源代码进行缺陷修复。
9.如权利要求8所述的装置,其特征在于,第一缺陷分析模块具体用于:
确定待检测的源代码静态数据的代码模式存在缺陷的可能性,标记潜在的缺陷爆发点;
获取缺陷爆发点标记位置的上下文信息,对缺陷爆发点标记位置的上下文信息进行缺陷分析,得到第一缺陷分析结果。
10.如权利要求8所述的装置,其特征在于,第二缺陷分析模块具体用于:
确定待检测的源代码在运行过程中的操作行为存在缺陷的可能性,标记潜在的缺陷爆发点;
获取缺陷爆发点标记位置的数据流动信息,对缺陷爆发点标记位置的数据流动信息进行缺陷分析,得到第二缺陷分析结果。
11.如权利要求8所述的装置,其特征在于,熵值计算模块具体用于:
根据待检测的源代码的每个检测指标的缺陷评价信息、预先设置的每个检测指标的不同缺陷评价信息对应的评价分值,确定待检测的源代码的每个检测指标的评价分值;
根据待检测的源代码的每个检测指标的评价分值,计算待检测的源代码的每个检测指标的熵值。
12.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7任一所述方法。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1至7任一所述方法。
14.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现权利要求1至7任一所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311083471.9A CN117215918A (zh) | 2023-08-25 | 2023-08-25 | 源代码的缺陷检测与修复方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311083471.9A CN117215918A (zh) | 2023-08-25 | 2023-08-25 | 源代码的缺陷检测与修复方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117215918A true CN117215918A (zh) | 2023-12-12 |
Family
ID=89034396
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311083471.9A Pending CN117215918A (zh) | 2023-08-25 | 2023-08-25 | 源代码的缺陷检测与修复方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117215918A (zh) |
-
2023
- 2023-08-25 CN CN202311083471.9A patent/CN117215918A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5669630B2 (ja) | テスト・ケース生成方法、プログラム及びシステム | |
US20090007078A1 (en) | Computer-Implemented Systems And Methods For Software Application Testing | |
US20140033174A1 (en) | Software bug predicting | |
US8397104B2 (en) | Creation of test plans | |
Damm et al. | Faults‐slip‐through—a concept for measuring the efficiency of the test process | |
US7451051B2 (en) | Method and system to develop a process improvement methodology | |
JPH10510385A (ja) | ソフトウエア品質のアーキテクチャに基づく分析のための方法およびシステム | |
US9384117B2 (en) | Machine and methods for evaluating failing software programs | |
CN110083514B (zh) | 软件测试缺陷评估方法、装置、计算机设备及存储介质 | |
KR102282382B1 (ko) | 소프트웨어의 신뢰성 시험 시스템 및 시험 방법 | |
CN110059010A (zh) | 基于动态符号执行与模糊测试的缓冲区溢出检测方法 | |
CN111160667A (zh) | 一种提高食品安全预测模型鲁棒性的方法及装置 | |
Muthusamy et al. | Effectiveness of test case prioritization techniques based on regression testing | |
CN110850358A (zh) | 基于逐步回归算法的电能表综合检定方法及系统 | |
CN110888809B (zh) | 一种测试任务的风险预测方法及装置 | |
CN111880957A (zh) | 一种基于随机森林模型的程序错误定位方法 | |
CN117215918A (zh) | 源代码的缺陷检测与修复方法及装置 | |
CN109189673B (zh) | 一种软件的测试方案、测试用例的确定方法及装置 | |
CN116383048A (zh) | 软件质量信息处理方法及装置 | |
CN115373984A (zh) | 代码覆盖率确定方法及装置 | |
JP2005129064A (ja) | 複雑なシステム障害の診断方法 | |
CN114443464A (zh) | 用于选择用来测试程序代码的模糊测试方法的方法和装置 | |
Yan et al. | Revisiting the correlation between alerts and software defects: A case study on myfaces, camel, and cxf | |
CN111367789A (zh) | 静态报告合并分析技术 | |
Wright | How to implement a PoD into a highly effective inspection strategy |
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 |