[發明專利]一種面向缺陷定位的代碼搜索方法有效
| 申請號: | 201811412576.3 | 申請日: | 2018-11-26 |
| 公開(公告)號: | CN109558166B | 公開(公告)日: | 2021-06-29 |
| 發明(設計)人: | 孫小兵;常建明;張慶輝 | 申請(專利權)人: | 揚州大學 |
| 主分類號: | G06F8/75 | 分類號: | G06F8/75;G06F8/41 |
| 代理公司: | 南京理工大學專利中心 32203 | 代理人: | 馬魯晉 |
| 地址: | 226009 *** | 國省代碼: | 江蘇;32 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 面向 缺陷 定位 代碼 搜索 方法 | ||
1.一種面向缺陷定位的代碼搜索方法,其特征在于,包括以下步驟:
步驟1、對軟件歷史庫中的bug報告進行自然語言預處理,并構建bug報告對應的源代碼文件抽象語法樹;
步驟2、提取所有與bug相關的codediff文件,并將codediff文件中連續的代碼修改行定義為一個chunk;在步驟1源代碼文件抽象語法樹的基礎上建立每個codediff文件的chunk關系圖;
步驟3、遍歷chunk關系圖,獲取chunk關系圖中每個節點v的重要性分值degree,并對degree進行標準化處理;
步驟4、根據bug報告與codediff文件之間的一對多關系以及每個codediff文件的chunk關系圖,建立bug報告與chunk之間的關系;
步驟5、結合步驟1的bug報告和步驟4建立的bug報告和chunk之間的關系,利用知識庫建立工具建立bug-chunk知識庫;
步驟6、針對新的bug報告,獲取新的bug報告與bug-chunk知識庫中bug報告的相似度sim;
步驟7、結合bug-chunk知識庫中各個chunk的重要性分值degree和相似度sim生成chunk列表,根據chunk列表即可獲取與新的bug報告中bug相關的代碼,實現缺陷的定位。
2.根據權利要求1所述的面向缺陷定位的代碼搜索方法,其特征在于,步驟1中所述自然語言預處理包括文本規范化、去停詞和詞干化。
3.根據權利要求1或2所述的面向缺陷定位的代碼搜索方法,其特征在于,步驟1所述構建bug報告對應的源代碼文件的抽象語法樹,具體為:
步驟1-1、利用軟件開發工具包構建代碼文件解析工具;
步驟1-2、提取bug報告對應的源代碼文件,并將該源代碼文件作為所述代碼文件解析工具的輸入,從而解析出源代碼文件的抽象語法樹。
4.根據權利要求3所述的面向缺陷定位的代碼搜索方法,其特征在于,步驟2所述在步驟1源代碼文件抽象語法樹的基礎上建立每個codediff文件的chunk關系圖,具體為:對于每個codediff文件,將源代碼文件抽象語法樹上與該codediff文件中chunk相關的節點保留,并將代碼文件抽象語法樹上的節點用chunk表示,由此建立每個codediff文件的chunk關系圖。
5.根據權利要求1所述的面向缺陷定位的代碼搜索方法,其特征在于,步驟4所述獲取chunk關系圖中每個節點v的重要性分值degree,所有公式為:
degree=BC+CC
式中,BC為經過節點v的某一對節點之間的最短路徑數目與該對節點之間所有最短路徑的數目的比值,CC為節點v與其他節點之間最短路徑之和。
6.根據權利要求5所述的面向缺陷定位的代碼搜索方法,其特征在于,步驟4所述對degree進行標準化處理,具體為:對degree進行歸一化處理,即將degree的值限定于區間(0,1)內,假設chunk關系圖獲得的degree數據集為{d1,d2,d3,…,dn},則對其進行標準化處理后為其中sum=d1+d2+d3+…+dn。
7.根據權利要求1所述的面向缺陷定位的代碼搜索方法,其特征在于,步驟5所述知識庫建立工具采用Neo4j圖形知識庫建立工具。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于揚州大學,未經揚州大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201811412576.3/1.html,轉載請聲明來源鉆瓜專利網。





