[發明專利]一種基于多目標優化算法NSGA-Ⅱ推薦跨項目關聯缺陷報告的方法在審
| 申請號: | 201710932159.0 | 申請日: | 2017-09-30 |
| 公開(公告)號: | CN109597747A | 公開(公告)日: | 2019-04-09 |
| 發明(設計)人: | 陳林;任浩;馬皖王瑩 | 申請(專利權)人: | 南京大學 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36;G06F17/27 |
| 代理公司: | 暫無信息 | 代理人: | 暫無信息 |
| 地址: | 210023 *** | 國省代碼: | 江蘇;32 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 缺陷報告 多目標優化算法 關聯度 主題相似性 關聯缺陷 關聯 查詢 關聯度計算 源代碼文件 主題相似度 有效定位 源文件 排序 修復 | ||
1.一種基于多目標優化算法NSGA-II推薦跨項目關聯缺陷報告的方法,其特征在于,首先需要獲取與查詢缺陷報告所在項目關聯的其他項目,主要是基于待查詢缺陷的項目源代碼和項目參與人的信息;然后對于得到的關聯項目,計算其與待查詢缺陷所在的項目之間的關聯度,主要有三個方面的因素:項目之間的主題相似性、項目之間的距離(將這些項目以網絡圖的形式組織起來,計算在圖中的距離)、項目的重要程度。得到關聯度較大的關聯項目;對于些關聯項目,計算項目中的缺陷報告與待查詢缺陷報告之間的相關度,主要有兩個因素:缺陷報告之間的文本相似度、與缺陷相關的源代碼文件之間的距離;對于上述項目之間關聯度以及缺陷報告之間的關聯度,最后利用多目標優化算法NSGA-II推薦得到跨項目關聯缺陷報告。該方法包括下列步驟:
1)收集python項目中的查詢缺陷報告信息,從Github上提取查詢缺陷報告的文本信息、該項目的源代碼和主題信息以及該項目的參與人的信息。其中缺陷報告的信息主要有id(擁有者/包名#issue.number)、標題、描述信息、參與者、時間(創建、更新、關閉時間),并且獲取項目的參與人(Contributors、Owners、Watchers、Stargazers)的相關信息以及項目的源代碼文件;
2)根據缺陷報告所在項目的源代碼文件,從中獲取相關項目;根據源代碼文件中的語句抽取該項目所引用的其他項目,在python項目的源代碼文件中往往會出現類似于“import***”等這樣的語句用來導入其他項目。因此,可以得到該項目在源代碼中所引入的其他項目。利用正則式匹配可能會出現一些不正確的項目,例如導入的項目內的模塊等,因此需要對這些項目進行人工審查;
3)獲取缺陷報告所在項目的Contributors的活動信息,獲取相關項目;在Github上,查詢缺陷報告的項目中的Contributors往往會關注(Watch/Star、Follow)其他的相關項目或者其他開發者,因此可以利用Github提供的接口獲取每個Contributor所關注的開發者或者項目;
4)根據步驟2)和步驟3)中得到的與查詢缺陷所在的項目有關聯的其他項目,并且可以計算查詢缺陷所在的項目與其他關聯項目之間的關聯程度,按照關聯度進行排序;
41)根據項目的主題信息,計算這些關聯項目與查詢缺陷所在的項目之間的主題相似度;
42)根據每個項目Owner之間的關注信息或者每個項目Contributors的關系建立項目之間的網絡圖。其中Owner的關注信息主要是Owner之間的follow關系,以及項目Owner關注(Star)另外一個項目;Contributors的關系主要是任意兩個項目之間是否有共同的Contributor;
43)利用上一步中建立的網絡圖,能夠計算的到項目的重要程度以及這些關聯項目與查詢缺陷所在的項目之間的距離;
44)結合計算得到的項目之間的主題相似度、項目重要程度、項目之間的距離,可以按照這些信息對項目之間的相關聯程度進行排序;
5)對于得到的與查詢缺陷報告所在項目相關聯程度較高的其他項目,分析這些項目中的缺陷,獲取這些缺陷報告中的文本信息;其中文本信息主要包括缺陷的標題和描述信息;
6)對于步驟5)中的到的缺陷報告的文本信息和查詢缺陷報告中的文本信息進行相關處理,主要包括以下幾個步驟:
61)利用python中的NLTK包對所有缺陷報告的文本信息(標題和描述信息)進行分詞,需要去除其中的停詞以及詞形還原;
62)對于所有的缺陷報告中的標題以及描述信息根據TF-IDF、Word Embedding進行向量化;
63)采用余弦相似度分別計算TF-IDF相似度(TS)、Word Embedding詞向量相似度(WS),因為TS和WS是互補的,因此考慮使用兩者只和計算得到兩個缺陷報告之間的主題相似性;
7)根據步驟5)中得到的缺陷報告的文本信息以及源代碼,利用LDA模型進行缺陷定位,然后計算得到源文件距離,主要包括以下幾個步驟:
71)對于缺陷報告文本信息以及源代碼進行簡單的文本處理,去除其中的停詞以及詞根;
72)使用基于Gibbs抽樣的參數推理方法得到LDA模型中最重要的兩個參數;
73)使用LDA模型得到缺陷報告以及源代碼的文章-主題分布和主題-詞語分布,得到詞語在主題維度的分布;
74)計算兩個文本的相似度,使用KL(Kullback-Leibler)距離作為相似度度量標準;
75)得到與缺陷報告相關度最大的三個源文件路徑,計算其與對應的查詢缺陷報告相似的源文件之間的距離;
8)根據步驟6)和步驟7)中得到的缺陷報告之間的關聯度以及步驟4)中計算得到的項目之間的關聯度,可以計算得到適應值;
9)根據步驟8)得到的適應值,在利用NSGA-II算法時,需要先計算得到遺傳算法中的三個算子:選擇算子、交叉算子、變異算子,然后使用多目標優化算法NSGA-II推薦得到與查詢缺陷報告相關聯的跨項目缺陷報告。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于南京大學,未經南京大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201710932159.0/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:故障分析方法及裝置
- 下一篇:代碼缺陷預警方法及裝置





