CN114064472B - 基于代码表示的软件缺陷自动修复加速方法 - Google Patents
基于代码表示的软件缺陷自动修复加速方法 Download PDFInfo
- Publication number
- CN114064472B CN114064472B CN202111337290.5A CN202111337290A CN114064472B CN 114064472 B CN114064472 B CN 114064472B CN 202111337290 A CN202111337290 A CN 202111337290A CN 114064472 B CN114064472 B CN 114064472B
- Authority
- CN
- China
- Prior art keywords
- candidate
- similarity
- patch
- patches
- code
- 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
- 230000007547 defect Effects 0.000 title claims abstract description 43
- 238000000034 method Methods 0.000 title claims abstract description 40
- 230000001133 acceleration Effects 0.000 title abstract description 6
- 230000008439 repair process Effects 0.000 claims abstract description 45
- 238000001914 filtration Methods 0.000 claims abstract description 23
- 239000013598 vector Substances 0.000 claims abstract description 16
- 230000008569 process Effects 0.000 claims abstract description 12
- 102100027708 Astrotactin-1 Human genes 0.000 claims abstract description 8
- 101000936741 Homo sapiens Astrotactin-1 Proteins 0.000 claims abstract description 8
- 238000012545 processing Methods 0.000 claims abstract description 5
- 238000012216 screening Methods 0.000 claims abstract description 4
- 238000012795 verification Methods 0.000 claims description 15
- 238000013528 artificial neural network Methods 0.000 claims description 11
- 238000012549 training Methods 0.000 claims description 10
- 238000012360 testing method Methods 0.000 claims description 8
- 238000007781 pre-processing Methods 0.000 claims description 3
- 238000012423 maintenance Methods 0.000 abstract description 2
- 238000005516 engineering process Methods 0.000 description 14
- 238000005259 measurement Methods 0.000 description 6
- 238000013135 deep learning Methods 0.000 description 3
- 230000000306 recurrent effect Effects 0.000 description 3
- 238000011160 research Methods 0.000 description 3
- 238000013136 deep learning model Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 238000011524 similarity measure Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000009776 industrial production Methods 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000000691 measurement method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000002787 reinforcement Effects 0.000 description 1
- 230000000630 rising effect Effects 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于代码表示的软件缺陷自动修复加速方法,对于给定的代码片段,使用代码表示模型获得它们的向量表示;利用ASTNN算法和CodeBERT算法分别计算候选相似代码段与疑似的错误代码段、生成的候选补丁与疑似的错误代码段的相似度之间的相似度;在候选补丁列表中根据候选补丁与疑似错误代码段之间的相似度以及各个候选补丁之间的相似度进行候选补丁筛选,其中与疑似的错误代码段相似度低于阈值的候选补丁以及与已知错误补丁相似度高于阈值的候选补丁被动态过滤掉;最后,对动态过滤过程处理结果进行修复验证。与现有技术相比,本发明在计算机软件的运行和维护方面提高了软件缺陷自动修复工具的修复效率,并减少了修复耗时。
Description
技术领域
本发明涉及计算机软件技术领域,特别是涉及一种软件缺陷自动修复加速方法。
背景技术
一、软件缺陷自动修复技术
随着计算机科学与技术的高速发展,软件产业已成为当代最受关注的朝阳产业之一,软件也已经深入到社会生活、工业生产和科学研究等各个领域。有时,一个小小的程序缺陷就可能造成重大的损失。所以,为保证高质量的软件,关键在于程序缺陷的及时修复。
实践表明,程序缺陷的修复是一项难度高且费时费力的工作。当开发人员在测试程序中发现失败用例时,往往是在程序的多个缺陷嫌疑语句设置断点,通过执行失败用例,观察程序断点处的变量值,直至找到真正缺陷语句为止;最后,进行缺陷的理解、移除和修复。这种人工修复程序缺陷的方法,不仅效率低下、代价高昂,而且并未充分利用失败用例的执行过程和结果中包含的信息。
为了提高软件调试的效率,解放软件开发人员的人工劳动力,国内外研究均开展了对程序缺陷的自动修复工作,并取得了重要的进展。其中,基于相似代码的自动缺陷修复技术(比如GenProg,CapGen,SCRepair,CRSearcher,ssFix,SimFix和Refactory)是该领域中非常重要的一类技术。这类技术的工作流程为首先从代码库中搜索一组与可疑的错误代码相似的代码段,然后通过提取代码段的修改生成候选补丁,针对测试用例逐一对候选补丁进行验证。
基于相似代码的自动程序缺陷修复是一种被广泛关注并研究的解决方案,但目前它仍然面对着效率问题的挑战,由于这类程序缺陷自动修复技术需要从庞大的搜索空间中搜索相似代码,并对候选补丁进行逐一验证,因此往往具有比较大的运算开销和比较低的修复效率,性能也受到了显著的限制。如果一个缺陷被拖了较长时间才得到修复,会给软件的使用者带来巨大的损失。
二、基于深度学习模型的代码表示
深度学习(Deep Learning)是近些年来非常流行的机器学习方法之一,已经在众多的领域进行了广泛应用。在软件工程领域中,深度学习模型也有了相当深入的研究。在代码表示等领域,广泛使用的模型主要是门控循环神经网络(Gated Recurrent Unit,GRU)和递归神经网络(Recursive Neural Network,RVNN)。GRU属于循环神经网络的一种,通过循环、迭代等步骤,来保留模型学习到的状态信息,主要用于处理自然语言文本相关或类似的数据,获取语义信息。RvNN则可以很好的处理按结构展开的非线性结构(如语法树),获取语法信息。此外,自然语言处理领域兴起的BERT在代码表示领域也获得了初步的应用。
基于相似代码的自动程序缺陷修复技术的效率主要受到两个问题的影响:
第一个问题是搜索到的相似代码片段的相似度衡量并不准确。具体来说,目前的基于相似代码的自动缺陷修复技术仅仅使用一些简单的语法信息(如抽象语法树信息)来衡量代码相似度,而无法很好的获取到代码的语义信息,因此相似度的衡量并不准确。这导致现有方法会生成大量的不正确的候选补丁,验证这些补丁会耗费大量的时间;
第二个问题是现有方法在验证补丁时往往会在验证正确的候选补丁前先验证了许多相似但不正确的候选补丁,这种验证顺序也大大影响了修复效率。
发明内容
本发明首次将深度学习技术应用到基于相似代码的程序缺陷自动修复中,旨在提出一种基于代码表示的软件缺陷自动修复加速方法,通过引入表示学习优化相似度衡量方式和通过动态过滤优化补丁的验证过程,实现了高效率的软件缺陷自动修复。
本发明采用以下的技术方案来实现:
步骤一:候选相似代码向量化,即对于给定的代码片段m和n,使用代码表示模型来获得它们的向量表示:
首先,对于给定的错误程序和自动缺陷修复工具以函数的粒度提取出潜在的候选相似代码;其次,将提取出的候选相似代码进行预处理,之后输入ASTNN神经网络和CodeBERT神经网络进行训练,得到训练后的候选相似代码的向量表示;对于每个候选相似代码段,利用代码表示模型ASTNN从语法层面和语义层面共同提取候选相似代码段信息,以及,利用代码表示模型CodeBERT从语义层面将候选相似代码段作为自然语言进行处理,使用预训练语言模型对候选相似代码段进行编码,得到候选相似代码的向量表示;
步骤二:利用ASTNN算法和CodeBERT算法分别计算候选相似代码段与疑似的错误代码段、生成的候选补丁与疑似的错误代码段的相似度之间的相似度;
步骤三:动态过滤,即在候选补丁列表中根据候选补丁与疑似的错误代码段之间的相似度以及各个候选补丁之间的相似度进行候选补丁筛选,其中与疑似的错误代码段相似度低于阈值的候选补丁以及与已知错误补丁相似度高于阈值的候选补丁被动态过滤掉;
步骤四:修复验证,在大规模使用的基准数据集上进行验证,根据验证的结果对前面的动态过滤过程进行信息反馈,直到成功修复或程序运行结束。
与现有技术相比,本发明在计算机软件的运行和维护方面提高了软件缺陷自动修复工具的修复效率,并且减少了修复耗时。
附图说明
图1为本发明的一种基于代码表示的软件缺陷自动修复加速方法整体流程图;
图2为基于深度强化学习算法结构示意图。
具体实施方式
以下结合附图和具体实施例对本发明的技术方案进行详细说明。
本发明的基于代码表示的软件缺陷自动修复加速方法,利用优化的相似度衡量方法对相似代码搜索和候选补丁排序进行优化,并利用动态过滤机制对候选补丁进行过滤。旨在优化相似度匹配方法和排序方法,以及引入动态过滤机制,提升程序缺陷自动修复技术的修复效率。并且,本发明应用于现有的最先进的程序缺陷自动修复工具SimFix,以提升其修复效率。
本发明的技术方案主要包括以下三点:1)基于代码表示的相似度衡量;2)基于反馈的动态补丁过滤策略;3)基于相似度的候选代码排序和补丁排序,这三者均为本发明的主要创新点。如图1所示,为本发明的一种基于代码表示的软件缺陷自动修复加速方法整体流程图。具体流程描述如下:
步骤一:候选相似代码向量化,即对于给定的代码片段m和n,首先使用代码表示模型来获得它们的向量表示:
首先,对于给定的错误程序和自动缺陷修复工具以函数的粒度提取出潜在的候选相似代码(即自动缺陷修复工具的搜索空间中的代码段,比如程序缺陷自动修复技术SimFix);其次,借助业内公开的代码表示模型和预训练语言模型,将提取出的候选相似代码进行预处理(包括对候选相似代码进行分词,对分词后的结果进行词型还原并转换为小写以及去除停用词处理;)之后输入ASTNN和CodeBERT神经网络进行训练,得到训练后的候选相似代码的向量表示;对于每个候选相似代码段,利用代码表示模型ASTNN从语法层面和语义层面共同提取候选相似代码段信息,以及,利用代码表示模型CodeBERT从语义层面将候选相似代码段作为自然语言进行处理,使用预训练语言模型(即基于大量包括Python、Java、JavaScript等六种语言的开源代码的双模态和单模态数据训练得到的预训练语言模型)对候选相似代码段进行编码,得到候选相似代码的向量表示;
ASTNN在语法层面通过RvNN结构的神经网络来适应由代码段解析出AST的特殊结构。在语义层面,它通过广泛应用的Word2Vec对代码中的token进行编码,并结合其AST的结构信息作为神经网络的输入,经过encoding输入BiGRU,并使用一个池化层作为最后的输出层,获取输入代码对应的向量表示,可以很好的获得代码段的语法以及语义信息。
CodeBERT遵循BERT和RoBERTa,使用多层双向Transformer作为CodeBERT的模型架构。CodeBERT将自然语言文本和编程语言代码token的片段组合作为输入,输出包括两个部分:1)每个token的语境向量表示和2)聚合序列表示。CodeBERT可以充分获取代码的语义信息。
作为通用模型,ASTNN和CodeBERT不局限于具体的任务,因此很适合本发明的使用场景。
步骤二:利用ASTNN算法和CodeBERT算法分别计算候选相似代码段与疑似的错误代码段、生成的候选补丁与疑似的错误代码段的相似度之间的相似度,具体计算公式如下:
对于ASTNN,通过向量的Norm-1范数来计算两个候选相似代码段m和n之间的相似度,如公式(1)所示:
Simi(m,n)=||astnn(m)-astnn(n)|| (1)
对于CodeBERT,使用向量的余弦相似度两个候选相似代码段m和n之间的相似度,如公式(2)所示:
其中,astnn(*)和codebert(*)分别代表ASTNN和CodeBERT对给定代码段的编码结果(即代码的向量表示),;本步骤分别采用了向量的Norm-1范数和余弦相似度来作为衡量标准,衡量候选相似代码段相似度;对于每个给定的疑似错误代码,分别计算候选相似代码段与疑似的错误代码段、生成的候选补丁与疑似的错误代码段的相似度,按照相似度降序进行排列,以此来保证尽早生成和验证正确的候选补丁;
步骤三:动态过滤,即:在候选补丁列表中根据相似度进行筛选,认为相似度低于阈值的候选补丁为潜在的错误补丁并对其进行动态过滤,以此来减少补丁验证过程的时间开销;本步骤具体过程如下:
给定一个疑似的错误代码段n,首先搜索到一批相似代码段M作为生成补丁的候选相似代码,与疑似的错误代码段更相似的候选相似代码更容易生成正确的补丁;
动态补丁过滤即对候选补丁实施了多层次的排序和过滤策略,按照以下规则进行:
(1)相似度:由于正确的补丁往往只进行简单的修改,因此和疑似的错误代码具有更高相似度的补丁排名更靠前;
(2)动态过滤:由于与已知的错误补丁很相似的补丁大概率也是错误的,因此这些补丁将会被过滤掉,以便尽可能早的过滤掉潜在的错误补丁。具体来说,给定一个已知验证失败的补丁fp和阈值guard,对于候选补丁列表中的每个补丁p,如果Simi(p,fp)<guard,就认为p与fp十分相似并且有很大可能是错误的,因此p将不会再被验证以节约时间。该技术按照候选补丁列表进行验证(该列表根据以上规则进行动态更新)。
步骤四:修复验证。在大规模使用的基准数据集Defects4j(1.2.0)上进行验证,根据验证的结果对后面的动态过滤过程进行信息反馈,具体来说,首先根据每个补丁与疑似的错误代码之间的相似性过滤掉相似度比较低的补丁。接下来,在对一个补丁进行验证时,首先将该补丁应用在待修复的疑似错误代码上,然后在应用补丁后的代码上执行测试,如果通过了所有测试,则认为是候选正确补丁,进一步人工验证其是否与数据集中给定的正确补丁语义等价来确定补丁是否正确;若未能通过全部测试,则说明该补丁不正确,此时过滤掉剩余待验证补丁中与该不正确补丁相似度高于阈值的补丁,实现动态过滤,即将每次补丁验证的结果反馈给动态过滤的过程。直到成功修复或程序运行结束。
为了验证本发明有效性,本发明与现有的最先进的基于相似代码的程序缺陷自动修复技术SimFix进行了结合,并在该领域大规模使用的Benchmark数据集Defects4j上进行了实验验证。
如表1所示,为本发明的软件缺陷自动修复实验结果。
实验选择SimFix,ASTNN和CodeBERT的理由是,它们分别代表了基于相似代码的程序缺陷自动修复技术和代码表示技术的最新研究进展,和它们进行对比能够充分地证明本发明在利用代码表示加速现有的基于相似代码的程序缺陷自动修复的有效性。
在度量指标方面,本发明使用了Time Cost和NPC两个指标来进行衡量。Time Cost指的是用于补丁生成和验证的时间(去除了错误定位和相似代码搜索等离线时间),NPC指的是在找到正确补丁之前尝试验证的候选补丁的数量。因为在进行验证时是按照候选补丁列表进行验证,因此在找到真正的正确补丁前,程序缺陷自动修复技术会尝试验证许多不正确的补丁,这会耗费大量的时间,因此这些补丁的数目也可以反应本发明加速程序缺陷自动修复,提高效率的有效性。
可以看出本发明可以大大提高SimFix的修复效率。在平均修复所用时长的指标上由11.34分钟分别降低到了7.58分钟和5.91分钟,分别降低了33.15%和47.85%的修复时长。此外,本发明对代码表示效果更好的方法进行了进一步实验和记录,发现在找到正确补丁前验证的候选补丁的数量也得到了很大的减少,平均减少了46.48%。总体来看,实验结果表明本发明可以有效的加速现有的基于相似代码的程序缺陷自动修复技术。这一组实验结果验证了本发明提出的方法的有效性。
本发明的优势在于:一方面,由于引入了表示学习方法来提取代码段中的深层语义信息,以此来优化现有的基于语法信息的相似度衡量方式,使用了目前最先进的代码表示神经网络模型ASTNN和CodeBERT来进行代码表示,因此能够使得搜索到的相似代码片段的相似度衡量准确。另一方面,由于引入动态的补丁过滤策略,因此通过过滤掉与错误补丁十分相似的补丁来节约验证时间。此外,由于正确补丁往往只进行简单的修改,针对每个疑似的错误代码段,将候选补丁按照相似度降序排列,使得正确的补丁可以更早的被验证。
Claims (3)
1.一种基于代码表示的软件缺陷自动修复加速方法,其特征在于,该方法包括以下步骤:
步骤一:候选相似代码向量化,即对于给定的代码片段m和n,使用代码表示模型来获得它们的向量表示:
首先,对于给定的错误程序和自动缺陷修复工具以函数的粒度提取出潜在的候选相似代码;其次,将提取出的候选相似代码进行预处理,之后输入ASTNN神经网络和CodeBERT神经网络进行训练,得到训练后的候选相似代码的向量表示;对于每个候选相似代码段,利用代码表示模型ASTNN从语法层面和语义层面共同提取候选相似代码段信息,以及,利用代码表示模型CodeBERT从语义层面将候选相似代码段作为自然语言进行处理,使用预训练语言模型对候选相似代码段进行编码,得到候选相似代码的向量表示;
步骤二:利用ASTNN算法和CodeBERT算法分别计算候选相似代码段与疑似的错误代码段、生成的候选补丁与疑似的错误代码段的相似度之间的相似度;
步骤三:动态过滤,即在候选补丁列表中根据候选补丁与疑似的错误代码段之间的相似度以及各个候选补丁之间的相似度进行候选补丁筛选,其中与疑似的错误代码段相似度低于阈值的候选补丁以及与已知错误补丁相似度高于阈值的候选补丁被动态过滤掉;
步骤四:修复验证,在大规模使用的基准数据集上进行验证,根据验证的结果对前面的动态过滤过程进行信息反馈,直到成功修复或程序运行结束。
2.如权利要求1所述的一种基于代码表示的软件缺陷自动修复加速方法,其特征在于,其中所述步骤一中的预训练语言模型基于大量开源代码的双模态和单模态数据训练得到。
3.如权利要求1所述的一种基于代码表示的软件缺陷自动修复加速方法,其特征在于,其中所述步骤四中的验证处理具体包括以下步骤:
根据每个补丁与疑似的错误代码之间的相似性过滤掉相似度低的补丁;接下来,在对一个补丁进行验证时,首先将该补丁应用在待修复的疑似错误代码上,然后在应用补丁后的代码上执行测试,如果通过了所有测试,则认为是候选正确补丁,进一步人工验证其是否与数据集中给定的正确补丁语义等价来确定补丁是否正确;若未能通过全部测试,则说明该补丁不正确,此时过滤掉剩余待验证补丁中与该不正确补丁相似度高于阈值的补丁,实现动态过滤,即将每次补丁验证的结果反馈给动态过滤的过程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111337290.5A CN114064472B (zh) | 2021-11-12 | 2021-11-12 | 基于代码表示的软件缺陷自动修复加速方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111337290.5A CN114064472B (zh) | 2021-11-12 | 2021-11-12 | 基于代码表示的软件缺陷自动修复加速方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114064472A CN114064472A (zh) | 2022-02-18 |
CN114064472B true CN114064472B (zh) | 2024-04-09 |
Family
ID=80275302
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111337290.5A Active CN114064472B (zh) | 2021-11-12 | 2021-11-12 | 基于代码表示的软件缺陷自动修复加速方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114064472B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116225770B (zh) * | 2023-04-26 | 2023-10-20 | 阿里云计算有限公司 | 补丁匹配方法、装置、设备及存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010154269A (ja) * | 2008-12-25 | 2010-07-08 | Toshiba Corp | 画像高品質化方法、装置およびプログラム |
CN109683946A (zh) * | 2018-12-13 | 2019-04-26 | 南开大学 | 一种基于代码克隆技术的用户评论推荐方法 |
CN110109835A (zh) * | 2019-05-05 | 2019-08-09 | 重庆大学 | 一种基于深度神经网络的软件缺陷定位方法 |
CN110427316A (zh) * | 2019-07-04 | 2019-11-08 | 沈阳航空航天大学 | 基于访问行为感知的嵌入式软件缺陷修复方法 |
CN112597063A (zh) * | 2021-02-26 | 2021-04-02 | 北京北大软件工程股份有限公司 | 缺陷代码定位的方法、装置以及存储介质 |
CN112685320A (zh) * | 2021-01-09 | 2021-04-20 | 北京信息科技大学 | 一种基于多候选程序的软件缺陷修复方法及装置 |
CN112905188A (zh) * | 2021-02-05 | 2021-06-04 | 中国海洋大学 | 一种基于生成式对抗gan网络的代码翻译方法及系统 |
CN113127339A (zh) * | 2021-03-24 | 2021-07-16 | 西北大学 | 一种Github开源平台数据的获取方法及源代码缺陷修复系统 |
WO2021169227A1 (zh) * | 2020-02-25 | 2021-09-02 | 华为技术有限公司 | 一种代码处理方法、装置、设备及介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017181286A1 (en) * | 2016-04-22 | 2017-10-26 | Lin Tan | Method for determining defects and vulnerabilities in software code |
US9959111B2 (en) * | 2016-07-11 | 2018-05-01 | Sap Se | Prioritization of software patches |
US10671511B2 (en) * | 2018-06-20 | 2020-06-02 | Hcl Technologies Limited | Automated bug fixing |
US11003444B2 (en) * | 2019-06-28 | 2021-05-11 | Intel Corporation | Methods and apparatus for recommending computer program updates utilizing a trained model |
-
2021
- 2021-11-12 CN CN202111337290.5A patent/CN114064472B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010154269A (ja) * | 2008-12-25 | 2010-07-08 | Toshiba Corp | 画像高品質化方法、装置およびプログラム |
CN109683946A (zh) * | 2018-12-13 | 2019-04-26 | 南开大学 | 一种基于代码克隆技术的用户评论推荐方法 |
CN110109835A (zh) * | 2019-05-05 | 2019-08-09 | 重庆大学 | 一种基于深度神经网络的软件缺陷定位方法 |
CN110427316A (zh) * | 2019-07-04 | 2019-11-08 | 沈阳航空航天大学 | 基于访问行为感知的嵌入式软件缺陷修复方法 |
WO2021169227A1 (zh) * | 2020-02-25 | 2021-09-02 | 华为技术有限公司 | 一种代码处理方法、装置、设备及介质 |
CN112685320A (zh) * | 2021-01-09 | 2021-04-20 | 北京信息科技大学 | 一种基于多候选程序的软件缺陷修复方法及装置 |
CN112905188A (zh) * | 2021-02-05 | 2021-06-04 | 中国海洋大学 | 一种基于生成式对抗gan网络的代码翻译方法及系统 |
CN112597063A (zh) * | 2021-02-26 | 2021-04-02 | 北京北大软件工程股份有限公司 | 缺陷代码定位的方法、装置以及存储介质 |
CN113127339A (zh) * | 2021-03-24 | 2021-07-16 | 西北大学 | 一种Github开源平台数据的获取方法及源代码缺陷修复系统 |
Non-Patent Citations (2)
Title |
---|
基于遗传算法和代码相似性自动修复程序错误;石建树;王宪勇;电脑知识与技术:学术版;20191231(011);全文 * |
基于遗传算法和代码相似性自动修复程序错误;石建树;王宪勇;电脑知识与技术;20191231;15(031);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN114064472A (zh) | 2022-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Joshi et al. | Repair is nearly generation: Multilingual program repair with llms | |
Jiang et al. | Shaping program repair space with existing patches and similar code | |
Wang et al. | Search, align, and repair: data-driven feedback generation for introductory programming exercises | |
Dinella et al. | Hoppity: Learning graph transformations to detect and fix bugs in programs | |
CN112733137B (zh) | 一种面向漏洞检测的二进制代码相似性分析方法 | |
US10521224B2 (en) | Automatic identification of relevant software projects for cross project learning | |
CN108563555B (zh) | 基于四目标优化的故障更改代码预测方法 | |
Meng et al. | Improving fault localization and program repair with deep semantic features and transferred knowledge | |
CN113741886B (zh) | 一种基于图的语句级程序修复方法及系统 | |
CN111897946B (zh) | 漏洞补丁推荐方法、系统、计算机设备和存储介质 | |
CN112463424A (zh) | 一种基于图的端到端程序修复方法 | |
CN115576840B (zh) | 基于机器学习的静态程序插桩检测方法及装置 | |
CN114547619B (zh) | 一种基于树的漏洞修复系统及修复方法 | |
CN114064472B (zh) | 基于代码表示的软件缺陷自动修复加速方法 | |
CN111858323B (zh) | 一种基于代码表示学习的即时软件缺陷预测方法 | |
CN110825642B (zh) | 一种基于深度学习的软件代码行级缺陷检测方法 | |
CN116627490A (zh) | 一种智能合约字节码相似性检测方法 | |
CN108228232B (zh) | 一种针对程序中循环问题的自动修复方法 | |
CN111897734B (zh) | 基于在线式增量学习的模糊测试用例选择方法和装置 | |
CN115495085A (zh) | 一种基于深度学习细粒度代码模板的生成方法及装置 | |
CN111737120B (zh) | 一种软件缺陷修复方法及装置 | |
CN115221045A (zh) | 一种基于多任务多视角学习的多目标软件缺陷预测方法 | |
Van Thuy et al. | Automated large program repair based on big code | |
Wang et al. | Data-driven feedback generation for introductory programming exercises | |
Duy et al. | VulnSense: Efficient Vulnerability Detection in Ethereum Smart Contracts by Multimodal Learning with Graph Neural Network and Language Model |
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 |