亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于深度學(xué)習(xí)的軟件自動修復(fù)方法的修復(fù)偏好研究

        2023-10-12 02:24:26姜元鵬姜淑娟
        計算機工程與應(yīng)用 2023年19期
        關(guān)鍵詞:編碼器語句工具

        姜元鵬,黃 穎,姜淑娟

        1.中國礦業(yè)大學(xué) 圖書館,江蘇 徐州 221116

        2.中國礦業(yè)大學(xué) 計算機科學(xué)與技術(shù)學(xué)院,江蘇 徐州 221116

        軟件缺陷修復(fù)是軟件調(diào)試維護過程中的重要環(huán)節(jié),并且隨著軟件復(fù)雜程度的增加以及軟件規(guī)模的擴大,人工定位并修復(fù)軟件缺陷越來越難實現(xiàn),且面臨成本昂貴、難以修復(fù)等問題[1-2]。而利用軟件自動修復(fù)方法可以大幅度提高軟件調(diào)試的效率,減少軟件維護所耗費的開銷。近年來,隨著深度學(xué)習(xí)技術(shù)的發(fā)展,越來越多研究人員將深度學(xué)習(xí)方法引入到軟件自動修復(fù)領(lǐng)域,軟件自動修復(fù)方法成為軟件工程領(lǐng)域研究熱點[3-5]。

        目前主要的傳統(tǒng)的軟件自動修復(fù)方法可以分為基于搜索的方法與基于語義的方法,國內(nèi)外專家學(xué)者已經(jīng)重點對傳統(tǒng)的基于搜索的程序自動修復(fù)方法以及基于語義的軟件自動修復(fù)方法進行了大量研究[6-9];近幾年提出了不少基于深度學(xué)習(xí)的軟件自動修復(fù)方法[10-12],基于深度學(xué)習(xí)的軟件修復(fù)方法主要從使用學(xué)習(xí)模型學(xué)習(xí)正確補丁特征、學(xué)習(xí)搜索相似性代碼以及學(xué)習(xí)錯誤代碼與正確代碼的轉(zhuǎn)換等角度來生成正確補丁。

        目前的深度學(xué)習(xí)的軟件自動修復(fù)方法大多是通用的,即不針對某種特定的缺陷類型,更多的是引入深度學(xué)習(xí)模型與相關(guān)的程序分析技術(shù)嘗試修復(fù)軟件代碼中的所有缺陷。而通用的自動修復(fù)方法由于針對性不強,因此對不同類型缺陷的修復(fù)效果通常是不同的。在已有的文獻中,部分文獻對修復(fù)的缺陷進行了簡單的分類,但是并沒有系統(tǒng)地對缺陷庫中的缺陷進行分類;不同類型的缺陷以及補丁具有不同的特征,在基于深度學(xué)習(xí)的程序自動修復(fù)方法中,深度學(xué)習(xí)模型的選擇是至關(guān)重要的,因為不同模型可能提取的特征不同。目前基于不同學(xué)習(xí)模型的程序修復(fù)方法針對不同類型缺陷的修復(fù)偏好尚不明確,在現(xiàn)存的文獻中沒有關(guān)于基于深度學(xué)習(xí)的軟件自動修復(fù)方法以及不同學(xué)習(xí)模型對不同缺陷類型修復(fù)性能的研究,因此,本文擬在對缺陷分類的基礎(chǔ)上通過分析比較近幾年有代表性的深度學(xué)習(xí)自動軟件修復(fù)方法對不同缺陷類型的修復(fù)偏好,可以幫助研究人員更好地了解不同的深度學(xué)習(xí)模型在軟件自動修復(fù)當中的作用,以便更好地進行軟件自動修復(fù)工作。

        1 基于深度學(xué)習(xí)的軟件修復(fù)工具

        目前幾種比較常用的基于深度學(xué)習(xí)的軟件缺陷修復(fù)工具,其使用的深度學(xué)習(xí)模型包括自編碼器、卷積神經(jīng)網(wǎng)絡(luò)、循環(huán)神經(jīng)網(wǎng)絡(luò)、長短期記憶模型,它們的相關(guān)修復(fù)工具信息如表1所示。

        表1 修復(fù)工具信息Table 1 Ⅰnformation about repair tools

        表1 的第一列為5 種自動修復(fù)工具;第二列是每種修復(fù)工具使用的模型,其中EDM指的是編碼器-解碼器模型(encoder-decoder model,EDM),LSTM-EDM 即為基于LSTM 的編碼器-解碼器模型,同理CNNs-EDM 是指基于CNNs的編碼器-解碼器模型,attention指注意力機制,copy 則是指復(fù)制機制;第三列是各種工具工作的代碼粒度,包括了多粒度級、代碼行以及方法級;最后一列則是各個工具用于評估的數(shù)據(jù)集,這5種自動修復(fù)工具都在Java程序的缺陷庫Defects4J[13]上進行驗證評估。

        1.1 DeepRepair

        DeepRepair[14]工具旨在通過深度學(xué)習(xí)代碼的相似性排序并轉(zhuǎn)換語句來推導(dǎo)程序修復(fù)成分,主要使用的學(xué)習(xí)模型為嵌入模型與自編碼器。實現(xiàn)這一工具的技術(shù)方法可分為三個階段:語言識別、機器學(xué)習(xí)與程序修復(fù)階段。該工具的方法框架如圖1所示。

        圖1 DeepRepair方法框架Fig.1 Framework of DeepRepair

        1.2 SequenceR

        SequenceR[15]是一種基于序列到序列的端到端的程序修復(fù)方法,該方法主要使用兩層的雙向長短期記憶模型。這一技術(shù)主要分為兩個階段:訓(xùn)練以及推理階段。如圖2為SequenceR的方法框架。

        圖2 SequenceR方法框架Fig.2 Framework of SequenceR

        1.3 CODIT

        CODⅠT[16]使用基于樹的神經(jīng)網(wǎng)絡(luò)對源代碼更改進行建模并學(xué)習(xí)代碼更改模式,即利用一個基于樹神經(jīng)機器翻譯模型來學(xué)習(xí)代碼中更改的概率分布,該方法包括兩個模型,使用的都為LSTM。如圖3 所示,實現(xiàn)這一工具同樣為三個階段:補丁預(yù)處理、模型訓(xùn)練、模型測試階段。

        圖3 CODⅠT方法框架Fig.3 Framework of CODⅠT

        1.4 DLFix

        DLFix[17]是用于程序自動修復(fù)的基于上下文的代碼轉(zhuǎn)換學(xué)習(xí)方法,使用的是雙層基于樹的深度學(xué)習(xí)模型,該深度學(xué)習(xí)模型同樣為LSTM。工具實現(xiàn)主要分為四個階段:預(yù)處理、模型訓(xùn)練、程序分析過濾和補丁重排序階段。如圖4為DLFix的方法框架。

        圖4 DLFix方法框架Fig.4 Framework of DLFix

        1.5 CoCoNuT

        CoCoNuT[18]結(jié)合上下文感知的神經(jīng)機器翻譯模型并使用集成學(xué)習(xí)來進行跨多語言的自動修復(fù),主要使用的神經(jīng)網(wǎng)絡(luò)模型為卷積神經(jīng)網(wǎng)絡(luò),這是卷積神經(jīng)網(wǎng)絡(luò)在程序自動修復(fù)中的首次應(yīng)用。如圖5所示,這一技術(shù)同樣包括三個階段:訓(xùn)練、推理和驗證階段。

        圖5 CoCoNuT方法框架Fig.5 Framework of CoCoNuT

        2 缺陷分類研究

        2.1 缺陷分類

        缺陷分類有很多種方法,根據(jù)不同的分類目的,缺陷分類的過程、復(fù)雜度和應(yīng)用領(lǐng)域也不同。在程序修復(fù)領(lǐng)域,Pan 等人[19]提出了針對Java 程序中的缺陷分類方法,并將缺陷根據(jù)語句特征分為9 大類。參照Pan 等人[19]及Liu 等人[20]提出修復(fù)模式,總結(jié)了10 個缺陷修復(fù)模式,并對缺陷庫Defects4J中缺陷進行分類。

        通過對Defects4J 中的補丁進行分析,總結(jié)了基于代碼更改操作的10 個基本的缺陷類型,每個類型下會有不同的子類型。

        (1)ⅠF語句:這一類是與ⅠF語句相關(guān)的缺陷,包括增加/刪除ⅠF謂詞、增加/刪除ⅠF主體、增加/刪除else語句、ⅠF條件表達式的更改,以及ⅠF語句與其他語句的替換。

        (2)方法語句:這一類是與方法語句相關(guān)的缺陷。包括增加/刪除/更改方法聲明、增加/刪除方法調(diào)用、更改調(diào)用方法、更改參數(shù)值或參數(shù)數(shù)量、其他語句與方法調(diào)用的替換。

        (3)循環(huán)語句:這一類是與循環(huán)語句相關(guān)的缺陷。包括增加/刪除循環(huán)、循環(huán)條件更改以及其他語句與循環(huán)體之間的替換。

        (4)賦值語句:這一類是與賦值語句相關(guān)的缺陷。包括增加/刪除賦值語句以及賦值表達式的更改。

        (5)switch:這一類是與switch語句相關(guān)的缺陷。主要包括增加/刪除case分支/switch條件的更改。

        (6)try/catch:這一類是與try/catch 語句相關(guān)的缺陷。包括添加/刪除try語句或catch語句塊。

        (7)return:這里的return 指代是return/break/continue/throw(拋出異常)語句,這類缺陷是指與它們相關(guān)的缺陷。包括增加/刪除這些語句、return 表達式的更改,以及這些語句之間的替換。

        (8)類字段:這一類是與類字段相關(guān)的缺陷。包括類字段聲明更改、執(zhí)行多個類實例創(chuàng)建。

        (9)移動語句:這一類主要是指需要改變語句所在位置的缺陷。

        (10)其他:這一類缺陷的修復(fù)包括類型更改、運算符更改、變量更改、整數(shù)除法更改。這些類型排除之前提到過的相關(guān)類型。

        2.2 評測對象

        由于目前Defects4J 是軟件自動修復(fù)工具最常使用的基準集,且進行比較的幾種基于深度學(xué)習(xí)的軟件自動修復(fù)工具都可在Defects4J 上進行評估,Defects4J 缺陷庫中的缺陷類型包括6 個項目,如表2 所示。這里使用的是Defects4J-v1.1.0

        表2 Defects4J 的組成Table 2 Composition of Defects4J

        在使用Defects4J數(shù)據(jù)集時,需要根據(jù)不同的模型對數(shù)據(jù)集進行不同的預(yù)處理。比如,在使用工具SequenceR時,由于SequenceR 專注于修復(fù)單行缺陷代碼,所以需要排除掉Defects4J中的非單行缺陷;在使用CODⅠT時,則需要從Defects4J的6個項目中創(chuàng)建一個代碼更改集。

        2.3 Defects4J缺陷類型分析

        Defects4J中全部缺陷類型組成,如表3所示。

        表3 Defects4J中缺陷的類型Table 3 Types of defects in Defects4J

        Defects4J中與ⅠF語句相關(guān)的缺陷多達230個,占所有缺陷的58.5%,其中類型為“增加ⅠF主體的缺陷”數(shù)量最多,有120個,占ⅠF語句缺陷類型的51.9%,其次有80個缺陷為“ⅠF條件表達式更改”類型,占ⅠF語句缺陷類型的34.6%;方法語句類型:Defects4J 中與其相關(guān)的缺陷有92 個,是全部缺陷的23.3%,是除ⅠF 語句類型外最多的缺陷類型,而其中“更改方法調(diào)用參數(shù)”類型的缺陷數(shù)量最多;除此之外,Defects4J 中與return 語句類型相關(guān)的缺陷數(shù)量最多,共50個,占Defects4J中缺陷的12.7%;最少的是try/catch類型。要注意的是,由于Defects4J中的缺陷一般包含多個錯誤行,因此一個缺陷可能和多種缺陷類型相關(guān),在表3 中,將Defects4J 中的缺陷歸到某一類時,主要是指該缺陷包含該缺陷類型的錯誤行,所以每種缺陷類型的缺陷數(shù)量之和會超過Defects4J中的缺陷數(shù)量395,因為同一個缺陷可能會與多種缺陷類型相關(guān)。

        3 實驗

        該實證研究的目的是研究基于深度學(xué)習(xí)的軟件自動修復(fù)方法對不同類型缺陷的修復(fù)偏好。為此,首先分析基于深度學(xué)習(xí)模型的軟件自動修復(fù)方法整體上對不同類型缺陷的修復(fù)概率,然后比較不同學(xué)習(xí)模型對不同類型缺陷的修復(fù)偏好,并比較分析每種方法各自更傾向于修復(fù)哪一類型的缺陷。

        本文實驗的運行環(huán)境為64 位Windows 與Linux 系統(tǒng),編譯環(huán)境為Python3。

        3.1 不同缺陷類型的總修復(fù)概率

        表4展示了5種修復(fù)工具通過實驗修復(fù)的不同類型缺陷的總的修復(fù)概率。由第三列可以看出,5種修復(fù)工具修復(fù)的缺陷類型涉及了除try/catch語句之外的9種基本類型,修復(fù)的缺陷數(shù)量最多的3種缺陷類型依次為ⅠF語句類型、方法語句類型以及return語句類型,然后是賦值語句與類字段類型的缺陷。而try/catch 語句類型的缺陷沒有得到修復(fù)的原因,可能是Defects4J 中這一類型的缺陷量最少,總共只有5個。

        表4 所有修復(fù)缺陷的缺陷類型Table 4 Types of all repaired defects

        表4所示的修復(fù)概率可以看出,其他類型的缺陷修復(fù)概率最高,其次是方法語句類型的缺陷,然后是return語句類型,賦值語句與類字段類型的修復(fù)概率相當,其后才是ⅠF語句類型的缺陷??梢钥闯觯迯?fù)概率與修復(fù)缺陷數(shù)量并不是成正比的關(guān)系,基于下面的原因。

        首先,其他類型的缺陷基本上只包含運算符更改、類型更改等簡單易修復(fù)的缺陷,而且數(shù)據(jù)集中這一類缺陷數(shù)量較少,因此盡管結(jié)果顯示這一類缺陷修復(fù)概率較高,但這只是表明修復(fù)方法傾向于修復(fù)復(fù)雜程度低的缺陷,而方法語句與return語句類型的修復(fù)概率較高,與之對應(yīng)的修復(fù)缺陷數(shù)量也較高,可以得出基于深度學(xué)習(xí)的軟件自動修復(fù)方法對這兩種缺陷的修復(fù)偏好是較高的;對于賦值語句與類字段類型來說,由于類字段類型當中包括類字段的聲明與賦值,所以這兩種在很大程度上可以看作是賦值語句類型,因此兩者的修復(fù)數(shù)量與概率都相差不大;對于ⅠF語句,從缺陷分類的結(jié)果可以看到,數(shù)據(jù)集中與這一類型相關(guān)的缺陷數(shù)量最多,而復(fù)雜程度較高的缺陷基本都與這一類型相關(guān),復(fù)雜程度越高越難以修復(fù),因此這一類型相關(guān)的缺陷修復(fù)概率與前面幾種相比顯得不高。

        因此,經(jīng)過綜合分析后可以得知:對于修復(fù)的缺陷數(shù)量來說,基于深度學(xué)習(xí)的軟件自動修復(fù)方法修復(fù)最多的是ⅠF 語句類型、方法語句類型、return 語句類型的缺陷,但是對于缺陷修復(fù)的概率來說,由于受到缺陷復(fù)雜程度的影響,基于深度學(xué)習(xí)的軟件自動修復(fù)方法對ⅠF語句的修復(fù)概率較低,其他類型的缺陷修復(fù)概率較高,同時修復(fù)方法語句類型、return語句類型、賦值語句與類字段類型缺陷的概率也較高。

        3.2 缺陷的修復(fù)偏好比較分析

        表5 展示了基于不同深度學(xué)習(xí)模型的軟件修復(fù)工具在Defects4J上修復(fù)的不同類型的缺陷數(shù)量。第一列為缺陷類型,第二至六列是5種缺陷修復(fù)工具的修復(fù)缺陷數(shù)量;最后一行的缺陷總數(shù)總是小于等于10 種缺陷類型的修復(fù)缺陷數(shù)量之和,因為存在同一缺陷與多種缺陷類型相關(guān)的情況。

        表5 各修復(fù)工具修復(fù)缺陷的缺陷類型組成Table 5 Types composition of defects repaired by each repair tool

        如果僅從表4的占比來看,每一種類型缺陷的修復(fù)偏好相差不大,其根本原因在于現(xiàn)有的缺陷自動修復(fù)方法修復(fù)能力不足。例如,表5 中所示的修復(fù)Defect4J 數(shù)據(jù)集缺陷最多的DeepRepair 方法,僅僅修復(fù)了51 個缺陷,占總?cè)毕輸?shù)的12.9%(51/395),使得每一種類的修復(fù)占比都比較低,差距小。在此背景下,DeepRepair 修復(fù)24個ⅠF語句類型缺陷,10個方法語句缺陷,前者是后者的2.4倍,由此可以看出修復(fù)偏好相差較大。

        整體來看,除了CODⅠT之外,其他每種修復(fù)工具與3.1節(jié)的結(jié)論相符,修復(fù)最多的缺陷為ⅠF語句類型、方法語句類型以及return 語句類型的缺陷;對于CODⅠT,除了方法語句類型以及return語句類型的缺陷,修復(fù)的類字段類型的缺陷比ⅠF語句類型的缺陷更多。從最后一行可以看到,基于自編碼器且在多粒度上運行的Deep-Repair 修復(fù)的缺陷最多,與其他的修復(fù)工具相比,它修復(fù)的ⅠF語句類型、循環(huán)語句類型、賦值語句類型以及類字段類型相關(guān)的缺陷數(shù)量明顯高于其他工具,原因是DeepRepair使用了多個修復(fù)策略,并在多個粒度上尋找補丁。由此可知,修復(fù)策略、工作粒度對學(xué)習(xí)模型的修復(fù)效果具有極大的促進作用;而SequenceR修復(fù)的缺陷數(shù)最少,因為它只針對單行缺陷。下面詳細分析比較幾種修復(fù)方法的修復(fù)結(jié)果。

        (1)基于LSTM、AE以及CNNs模型修復(fù)工具的修復(fù)結(jié)果分析

        由于SequenceR、CODⅠT 與DLFix 使用基本的深度學(xué)習(xí)模型都為基于LSTM的編碼器-解碼器的神經(jīng)機器翻譯模型,可將三者的修復(fù)結(jié)果合為一體以LSTM 表示,與其他兩種工具的修復(fù)結(jié)果進行比較;AE指的是基于自編碼器的DeepRepair 的結(jié)果;CNNs 指的是基于CNNs的CoCoNuT的結(jié)果。

        如圖6通過韋恩圖表示了3種學(xué)習(xí)模型所修復(fù)缺陷的重疊的情況,重點關(guān)注修復(fù)結(jié)果的不同之處,并結(jié)合表5分析圖6中非重疊的部分的缺陷。

        圖6 3種不同學(xué)習(xí)模型修復(fù)缺陷的重疊情況Fig.6 Overlapping of repaired defects of three different learning models

        首先,對于DeepRepair,非重疊部分的27個缺陷,其中有48.1%的缺陷與ⅠF語句類型相關(guān),這表明與其他模型相比,它更擅長于修復(fù)ⅠF 語句類型的缺陷,這與表5中的結(jié)果一致;同時,DeepRepair 修復(fù)的缺陷種類數(shù)是最多的,只有它修復(fù)了一個移動語句類型的缺陷,而且它修復(fù)缺陷中的賦值語句類型的缺陷占比明顯高于其他兩種基本學(xué)習(xí)模型。這表明基于自編碼器且擁有多種修復(fù)策略與工作粒度的軟件自動修復(fù)方法在修復(fù)的缺陷數(shù)量和缺陷類型數(shù)量上具有一定優(yōu)勢。

        其次,對使用基于LSTM 的編碼器-解碼器的神經(jīng)機器翻譯模型的修復(fù)方法來說,與其他兩種模型相比,它們修復(fù)的26個缺陷中與方法語句類型相關(guān)的缺陷數(shù)最多,占比達到61.5%,這表明本文用于比較的3種基于LSTM 的修復(fù)方法整體上更傾向于修復(fù)方法語句類型的缺陷,這同樣與表5中的結(jié)果一致;同時,只有它獨自修復(fù)的缺陷中包含switch類型的語句。

        最后,對于基于CNNs 的修復(fù)工具CoCoNuT 來說,不僅是從非重疊部分的11個缺陷的分析,還是從表5的分析中都可以發(fā)現(xiàn),它的修復(fù)結(jié)果中,與ⅠF語句類型、方法語句類型以及return語句類型相關(guān)的缺陷數(shù)量相差不大,這表明它對這3 種類型缺陷的修復(fù)偏好相差不大。而從缺陷的復(fù)雜程度來看,DeepRepair 與CoCoNuT 能修復(fù)更高復(fù)雜程度的缺陷。

        (2)SequenceR與CODⅠT的修復(fù)結(jié)果分析

        對于同樣使用LSTM模型的兩種修復(fù)方法SequenceR與CODⅠT來說,SequenceR是序列到序列的神經(jīng)機器翻譯模型,CODⅠT 是基于樹的序列到序列的神經(jīng)機器翻譯模型,如圖7是SequenceR與CODⅠT的修復(fù)結(jié)果的重疊情況。

        圖7 SequenceR與CODⅠT修復(fù)缺陷的重疊情況Fig.7 Overlapping of repaired defects of SequenceR and CODⅠT

        其中SequenceR 單獨修復(fù)13 個缺陷,而CODⅠT 單獨修復(fù)20個缺陷。在非重疊部分,SequenceR修復(fù)更多的是與ⅠF 語句類型相關(guān)的缺陷,而CODⅠT 修復(fù)更多的是與方法語句類型相關(guān)的缺陷。造成這一結(jié)果的原因是SequenceR 是序列到序列的模型,針對的是代碼行,而CODⅠT和DLFix都是方法粒度的。這說明工作粒度在很大程度上影響了修復(fù)的缺陷類型。

        (3)CODⅠT與DLFix的修復(fù)結(jié)果分析

        對于使用LSTM 模型的兩種修復(fù)方法CODⅠT 與DLFix來說,CODⅠT是基于樹的序列到序列的神經(jīng)機器翻譯模型,而DLFix則是雙層基于樹的代碼轉(zhuǎn)換的神經(jīng)機器翻譯模型,如圖8是CODⅠT與DLFix的修復(fù)結(jié)果的重疊情況,CODⅠT單獨修復(fù)缺陷17個,而DLFix單獨修復(fù)缺陷32個。對圖8的非重疊部分的缺陷進行分析,并結(jié)合表5可以看到,使用DLFix比CODⅠT能夠修復(fù)更多缺陷;同時,從表5中可以看到,CODⅠT主要修復(fù)方法語句類型缺陷而較大程度上忽略ⅠF 語句類型的缺陷,而DLFix則彌補了這一缺陷,它對這兩種類型缺陷的修復(fù)偏好相差不大。

        圖8 CODⅠT與DLFix修復(fù)缺陷的重疊情況Fig.8 Overlapping of repaired defects of CODⅠT and DLFix

        3.3 有效性影響因素分析

        可從內(nèi)部有效性和外部有效性兩個方面來分析可能影響到本文實證研究結(jié)論有效性的影響因素。

        影響內(nèi)部有效性的因素主要來自兩個方面,一個是缺陷分類的標準,另一個是用于比較的修復(fù)方法。對于缺陷分類,本文參考了多篇文獻,根據(jù)修復(fù)模式逐個對缺陷進行了分類,保證了分類的準確性;對于修復(fù)方法,本文主要比較的是文中選取的五種修復(fù)方法的結(jié)果,而其他修復(fù)方法的結(jié)果如何有待進一步研究。而且在研究不同模型對缺陷類型的修復(fù)偏好時,其他因素(如工作粒度等)的影響較大,之后的工作可以進行探討。

        而影響外部有效性的因素主要來源于缺陷庫。Defects4J中部分項目的缺陷數(shù)量較少,因此在分析不同項目內(nèi)的缺陷時對結(jié)果的影響較大,但是本文主要是針對整體缺陷進行研究,因此很大程度上可以避免這一影響;而Defect4J 數(shù)據(jù)集不涉及深度學(xué)習(xí)模型的訓(xùn)練,只是對訓(xùn)練后的深度學(xué)習(xí)模型進行評估。本文之所以選取Defect4J進行分析,是因為本文中所有的方法在評估時都用到了該數(shù)據(jù)集。同時,Defect4J數(shù)據(jù)集是一個被廣泛使用的缺陷基準數(shù)據(jù)集,涉及的缺陷類型全面,適合進行缺陷修復(fù)偏好研究。為了進一步減少數(shù)據(jù)集方面存在的有效性威脅,在未來的工作中,將進行更全面的實驗,從而分析本文中的這些方法在更多缺陷基準中的修復(fù)偏好性。

        4 結(jié)束語

        本文根據(jù)缺陷修復(fù)模式對Defects4J 中的缺陷進行分類,通過實驗給出了5種基于不同學(xué)習(xí)模型的修復(fù)工具 在Defects4J 上整體的修復(fù)概率,同時分析這5 種修復(fù)工具各自在Defects4J 上的修復(fù)結(jié)果,并對各類缺陷的修復(fù)偏好進行比較分析。實驗結(jié)果表明,基于深度學(xué)習(xí)的軟件自動修復(fù)方法傾向于修復(fù)ⅠF語句類型、方法語句類型、return 語句類型的缺陷。基于自編碼器的軟件自動修復(fù)方法DeepRepair 更傾向于修復(fù)ⅠF 語句類型的缺陷,選取的基于LSTM 的編碼器-解碼器的修復(fù)方法整體上更傾向于修復(fù)與方法語句類型相關(guān)的缺陷,而基于CNNs 編碼器-解碼器的修復(fù)方法則對ⅠF 語句類型、方法語句類型以及return語句類型這3種類型缺陷的修復(fù)偏好相差不大。

        猜你喜歡
        編碼器語句工具
        波比的工具
        波比的工具
        重點:語句銜接
        基于FPGA的同步機軸角編碼器
        精彩語句
        “巧用”工具
        讀者(2017年18期)2017-08-29 21:22:03
        基于PRBS檢測的8B/IOB編碼器設(shè)計
        JESD204B接口協(xié)議中的8B10B編碼器設(shè)計
        電子器件(2015年5期)2015-12-29 08:42:24
        多總線式光電編碼器的設(shè)計與應(yīng)用
        如何搞定語句銜接題
        語文知識(2014年4期)2014-02-28 21:59:52
        亚洲伊人av天堂有码在线| 五月综合高清综合网| 亚洲av无码一区二区三区系列| 男人j进女人p免费视频| 天堂av中文在线官网| 草逼动态图视频免费观看网站| 一本一道久久综合久久| 最好看的最新高清中文视频| 99JK无码免费| 我和丰满老女人性销魂| 国产亚洲精品视频网站| 好看的日韩精品视频在线| 日韩乱码人妻无码系列中文字幕| 人妻体内射精一区二区三四| 国产香蕉一区二区三区在线视频| 国产精品美女一级在线观看| 麻豆国产av在线观看| 中文字幕av久久亚洲精品| 成人免费看片又大又黄| 色偷偷88888欧美精品久久久 | 北条麻妃在线视频观看| 一区二区三区国产视频在线观看| 亚洲高清一区二区精品| 精品一区二区av天堂色偷偷| 国产专区一线二线三线码| 亚洲尺码电影av久久| AV人人操| 色婷婷在线一区二区三区| 亚洲中文无码av永久| 国产成年女人特黄特色毛片免 | 一区二区三区放荡人妻| 国产色第一区不卡高清| 中文无码伦av中文字幕| 国产成人亚洲精品91专区手机| 国产乱老熟视频乱老熟女1| 巨爆中文字幕巨爆区爆乳| 中文字幕久无码免费久久| 婷婷丁香91| 国产色婷亚洲99精品av网站| 欧美性生交活xxxxxdddd| 国产av无码专区亚洲av|