天天看點

《中國人工智能學會通訊》——8.44 基于使用者缺陷報告挖掘軟體缺陷

缺陷報告是使用者向軟體開發者彙報軟體使用過程中所遇故障的報告。該報告基于自然語言書寫,記錄了軟體發生故障場景和症狀等資訊。通過分析軟體缺陷報告,可以有效定位出導緻該缺陷的程式代碼,進而幫助程式員對其進行修複。

由于缺陷報告是終端使用者通過自然語言書寫,是以基于使用者缺陷報告進行缺陷挖掘的關鍵在于如何建立缺陷報告與符合其功能描述的代碼之間的聯系。現有技術通常将程式代碼視為自然語言,然後基于文本空間建立缺陷報告與程式代碼之間的相關性,進而發現缺陷代碼。向量空間模型 (vectorspace model) 是應用最多的一種技術,首先将缺陷報告和程式代碼表示成空間中的向量,然後利用向量之間的餘弦距離尋找與缺陷報告最相關的程式代碼[33] 。Zhou et al [34]對此進行了擴充,通過綜合考慮文本長度以及相似軟體缺陷,進一步提升了發現缺陷代碼的性能。Ye et al [35] 利用排序學習(learningto rank)直接建立缺陷報告與程式代碼之間的關聯關系,進而更準确地發現缺陷代碼。

上述技術直接在詞彙級建構缺陷報告和程式代碼二者的關聯關系,可能會因近義詞、多義詞問題造成語義失配。為解決這一問題, Poshyvanyk etal [36] 利用 LSI (latent semantic indexing) 将缺陷報告與程式代碼從高維輸入空間投影至語義相對緊湊的低維空間,并在此基礎上挖掘缺陷報告與程式代碼之間的關聯關系;Lukins et al [37] 利用LDA (latentDirichlet allocation) 為缺陷報告與程式代碼進行主題模組化,并基于此計算二者之間的關聯關系。Lamet al [38] 基于自動編碼器 (auto-encoder) 從缺陷報告和程式代碼中提取高層詞彙特征,并結合多種元特征進行學習,有效提升了發現缺陷程式代碼的性能。

然而,現有大多數技術均簡單将軟體程式視為自然語言,忽視了程式構件以及程式結構所展現的功能語義。最近,Huo et al [39] 提出了一種能夠針對自然語言書寫的缺陷報告與程式設計語言書寫的程式代碼學習統一語義特征表示的新型卷積神經網絡模型 NP-CNN。該模型在學習統一特征過程中能夠同時考慮程式代碼詞彙與程式結構,能夠更加準确地模組化缺陷報告與程式功能行為的關聯關系,進而更加準确地發現包含缺陷的程式代碼。

繼續閱讀