[發(fā)明專利]一種基于Github的軟件缺陷檢測模型建立、檢測方法及系統(tǒng)有效
| 申請?zhí)枺?/td> | 202010140642.7 | 申請日: | 2020-03-03 |
| 公開(公告)號: | CN111459799B | 公開(公告)日: | 2023-03-10 |
| 發(fā)明(設計)人: | 柯鑫;葉貴鑫;湯戰(zhàn)勇;尹小燕;龔曉慶;房鼎益 | 申請(專利權)人: | 西北大學 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 西安恒泰知識產(chǎn)權代理事務所 61216 | 代理人: | 李婷;金艷婷 |
| 地址: | 710069 *** | 國省代碼: | 陜西;61 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 github 軟件 缺陷 檢測 模型 建立 方法 系統(tǒng) | ||
1.一種基于Github的軟件缺陷檢測模型建立方法,其特征在于,包括以下步驟:
步驟1,數(shù)據(jù)預處理:
對Github中的倉庫進行排序,選取排名靠前的倉庫作為源數(shù)據(jù)集,對源數(shù)據(jù)集中的每個倉庫的變更記錄進行篩選和去重,得到符合要求的變更記錄及其對應的Bug-Fix文件對;
所述Bug-Fix文件對是指修改前的文件Bug file和修改后的文件Fixed file;
步驟2,對步驟1得到的符合要求的變更記錄及其對應的Bug-Fix文件對進行處理,生成切片的向量及標簽:
步驟2.1,對步驟1得到的符合要求的變更記錄的Bug-Fix文件對進行解析和比對,獲得每個變更記錄對應的增加和刪除的代碼行信息;
步驟2.2,根據(jù)步驟2.1獲得的增加和刪除的代碼行信息及其Bug-Fix文件對的數(shù)據(jù)流,確定每一個變更記錄導致缺陷的缺陷代碼行;
步驟2.3,根據(jù)步驟1得到的符合要求的變更記錄的Bug-Fix文件對的數(shù)據(jù)流和控制流信息,生成Bug-Fix文件對的切片;
步驟2.4,根據(jù)步驟2.2確定的缺陷代碼行,對步驟2.3得到的Bug-Fix文件對的切片添加標簽;
步驟2.5,對步驟2.3得到的Bug-Fix文件對的切片逐個進行變量名替換,替換為一個統(tǒng)一的令牌;
步驟2.6,對步驟2.5替換過變量名的切片逐個進行分詞處理,每個切片得到一個令牌序列;
步驟2.7,將步驟2.6得到的每一個令牌序列轉(zhuǎn)化為向量;
步驟3,模型訓練:
將步驟2得到的切片的向量及標簽輸入到雙向LSTM模型中進行訓練和學習,得到訓練好的檢測模型。
2.如權利要求1所述的基于Github的軟件缺陷檢測模型建立方法,其特征在于,所述的步驟1具體包括:
步驟1.1,對Github中的倉庫按照倉庫的影響因子fork由大到小進行排序,選取排名前30%~35%的倉庫作為源數(shù)據(jù)集;
步驟1.2,采用關鍵字搜索方法對源數(shù)據(jù)集中的每個倉庫的變更記錄進行篩選,得到具有不同缺陷類型的變更記錄;
步驟1.3,過濾掉步驟1.2得到的具有不同缺陷類型的變更記錄中不符合動詞/直接賓語模式的變更記錄;
步驟1.4,采用TextRank技術對步驟1.3得到的變更記錄進行再篩選,剔除掉混合型變更記錄;
所述TextRank技術是指TextRank算法,采用TextRank技術對步驟1.3得到的變更記錄進行篩選的具體方法是:將步驟1.3得到的變更記錄輸入到TextRank算法中,抽取出來的關鍵詞前五中如果包含步驟1.2中涉及到的關鍵詞,認為這一條變更記錄是符合要求的,進入步驟1.5,否則刪除;
步驟1.5,對步驟1.4得到的變更記錄進行去重,得到符合要求的變更記錄及其對應的Bug-Fix文件對。
3.如權利要求1所述的基于Github的軟件缺陷檢測模型建立方法,其特征在于,所述的步驟2.4中,在添加標簽過程中,包含缺陷代碼行的切片標記為0,不包含缺陷代碼行的切片標記為1。
4.如權利要求1所述的基于Github的軟件缺陷檢測模型建立方法,其特征在于,所述的步驟2.7中,使用word2vec工具將每一個令牌序列轉(zhuǎn)化為向量。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于西北大學,未經(jīng)西北大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業(yè)授權和技術合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010140642.7/1.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 一種基于社會化編程網(wǎng)站的領域?qū)<野l(fā)現(xiàn)方法
- 基于動態(tài)網(wǎng)絡圖挖掘的Github開源代碼庫推薦系統(tǒng)
- 基于情感因素對項目進展的協(xié)方差相關性提取方法
- 基于github的逃避CC檢測的方法和裝置
- 一種面向GitHub與Travis CI的完整持續(xù)集成數(shù)據(jù)收集方法
- 一種構(gòu)建本地項目的方法、終端和計算機可讀存儲介質(zhì)
- 一種面向GitHub大規(guī)模開源代碼的快速代碼文件溯源方法和裝置
- 一種基于Github的軟件缺陷檢測模型建立、檢測方法及系統(tǒng)
- 發(fā)布GitHub Issues的方法、系統(tǒng)、電子設備和計算機可讀存儲介質(zhì)
- 一種基于聯(lián)合嵌入模型的代碼推薦方法





