国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種基于倒排索引技術(shù)的軟件缺陷代碼文件定位方法

      文檔序號:9375479閱讀:495來源:國知局
      一種基于倒排索引技術(shù)的軟件缺陷代碼文件定位方法
      【專利說明】
      [0001]
      技術(shù)領(lǐng)域
      [0002] 本發(fā)明屬于計(jì)算機(jī)應(yīng)用領(lǐng)域,具體涉及計(jì)算機(jī)軟件測試和維護(hù)過程中,根據(jù)缺陷 和問題報(bào)告,定位和檢索包含缺陷的代碼文件的方法。
      【背景技術(shù)】
      [0003] 計(jì)算機(jī)軟件系統(tǒng)在開發(fā)和維護(hù)過程中不可避免地產(chǎn)生軟件缺陷,缺陷定位是軟件 調(diào)試過程中一件很困難的工作,對大規(guī)模軟件系統(tǒng)更是如此。軟件缺陷定位多年來一直是 軟件工程研究領(lǐng)域中的一個熱點(diǎn)問題。缺陷定位利用程序執(zhí)行信息和缺陷(問題)報(bào)告,預(yù) 測缺陷代碼可能存在的范圍,輔助開發(fā)人員找到缺陷位置。當(dāng)前軟件系統(tǒng)規(guī)模越來越大,代 碼文件越來越多,根據(jù)缺陷報(bào)告內(nèi)容,從海量的代碼文件中定位到缺陷代碼的過程可謂是 大海撈針。此外,在軟件開發(fā)周期中,龐大的軟件規(guī)模和有限的開發(fā)和測試成本之間也形成 反差。因此,需要設(shè)計(jì)一種高效的軟件缺陷定位方法,基于缺陷報(bào)告,在大量的代碼文件中 快速檢索和定位包含缺陷的軟件代碼文件。
      [0004] 目前,缺陷代碼定位仍然以人工定位和經(jīng)驗(yàn)判定為主,這類方法不僅耗費(fèi)時間和 成本,且不可重復(fù)。傳統(tǒng)的自動軟件缺陷定位多利用交互式的調(diào)試工具,需要大量人工干 預(yù),定位效率低,難以滿足和適應(yīng)大規(guī)模軟件系統(tǒng)的調(diào)試需求。近年來,研究者分別提出基 于謂詞的統(tǒng)計(jì)學(xué)缺陷定位方法(Predicates Based Statistical Debugging)、基于程序譜 的缺陷定位方法、以及統(tǒng)計(jì)缺陷定位(Statistical Fault Localization)方法。這些方法 需要獲取測試執(zhí)行過程的動態(tài)信息,包括語句、謂詞、分支或信息流覆蓋數(shù)據(jù)等,適用于小 范圍語句級的軟件缺陷定位,尚不能滿足大規(guī)模軟件系統(tǒng)在代碼文件級的缺陷定位要求。

      【發(fā)明內(nèi)容】

      [0005] 發(fā)明所要解決的技術(shù)問題是提供一種在大量代碼文件中快速檢索和定位包含缺 陷的軟件代碼文件的方法,進(jìn)而提高軟件測試維護(hù)的性能和效率。
      [0006] 本發(fā)明所述一種基于倒排索引技術(shù)的軟件缺陷代碼文件定位方法,包括以下步 驟, 步驟1)匯總軟件系統(tǒng)中的代碼文件,處理每個代碼文件,生成代碼文件記錄; 步驟2)對代碼文件記錄分詞,應(yīng)用代碼分詞技術(shù)和工具,將代碼行內(nèi)容分割成單詞; 過濾掉其中的無關(guān)詞;組織文件索引項(xiàng),建立倒排索引表; 步驟3)讀入缺陷報(bào)告,應(yīng)用分詞技術(shù)和工具,將缺陷報(bào)告內(nèi)容分割成單詞;過濾掉無 關(guān)詞;將剩余的單詞作為缺陷的關(guān)鍵詞,輸出關(guān)鍵詞列表; 步驟4)在倒排索引表中檢索每一個關(guān)鍵詞,匯總檢索到的文件索引項(xiàng);處理流程是: 首先對缺陷報(bào)告的每一個關(guān)鍵詞,檢索倒排索引表,得到對應(yīng)的關(guān)鍵詞記錄;然后提取關(guān)鍵 詞記錄中的文件索引項(xiàng),加入到文件索引項(xiàng)列表中;最后按照文件索引項(xiàng)中的文件路徑名 聚類,將針對同一個代碼文件的文件索引項(xiàng)組織在一起; 步驟5)根據(jù)關(guān)鍵詞評分對文件索引項(xiàng)排序,定位包含缺陷的代碼文件;處理流程是: 首先合并具有相同文件路徑名的文件索引項(xiàng)(指向同一個代碼文件),累加其中的相關(guān)度評 分,同時串接位置信息;然后根據(jù)相關(guān)度評分,按從大到小為合并后的文件索引項(xiàng)排序;最 后推薦具有高評分值的文件索引項(xiàng)對應(yīng)的代碼文件,并提示關(guān)鍵詞在代碼文件中的位置。
      [0007] 上述步驟1)中的代碼文件記錄CodeRecord可以定義為一個二元組:CodeRecord ::=〈PathName, [Line]〉,其中PathName是代碼文件的文件路徑名;[Line]表示一個或 多個Line,指文件中的所有代碼行;Line是一個二元組:Line ::=〈Offset, String〉,其 中Offset是代碼行相對于文件首部的偏移量,以字節(jié)為單位計(jì)數(shù);String表示代碼行的內(nèi) 容,用字符串表示。
      [0008] 上述步驟2)和3)中的無關(guān)詞包含以下五種類型:1)保留字:指代碼編程語言預(yù) 定義的保留字,例如C語言中的"int, float, class, public, return, while, include" 等;2)注釋標(biāo)記:指標(biāo)記代碼注釋內(nèi)容的特殊字符,例如C語言中的"http://,/**/"等;3)標(biāo) 點(diǎn)符號:指代碼行和注釋行中出現(xiàn)的標(biāo)點(diǎn)符號,例如";,.!>="等;4)停用詞:指代碼 注釋內(nèi)容中的助詞和連接詞,例如中文注釋中的"啊、的、比如、并且、不但"等;5)預(yù)定義符 或代碼簽名:指代碼編程語言中的宏定義標(biāo)記或預(yù)編譯指令,例如C語言中的"Oparam,@ user, Oreturn ',等。
      [0009] 上述步驟2)、4)和5)中的文件索引項(xiàng)指關(guān)鍵詞對于單個代碼文件的索引數(shù) 據(jù)結(jié)構(gòu) Filelnfo,F(xiàn)ileInfo 定義為一個三元組:FileInfo : : =〈PathName, Score, [Position]〉,其中PathName是代碼文件的文件路徑名;Score是關(guān)鍵詞對于該代碼文 件的相關(guān)度評分;[Position]是一個或多個Position,代表關(guān)鍵詞在代碼文件中的位 置,Position 定義為一個三元組:Position ::=〈isName,start, end>,其中 isName 指 Position針對代碼文件名稱(取值1),或者針對代碼文件內(nèi)容(取值0) ;start和end分別 是關(guān)鍵詞的起始和終止位置,按字節(jié)計(jì)算。
      [0010] 上述步驟2)中建立倒排索引表的處理流程分兩個步驟:第一個步驟是過濾掉無 關(guān)詞后,將代碼行中剩余的詞作為關(guān)鍵詞(Term),為每一個關(guān)鍵詞,建立針對單個代碼文件 的文件索引項(xiàng)FileInfo ;第二個步驟是在建立關(guān)鍵詞對每個代碼文件的文件索引項(xiàng)后,匯 總軟件系統(tǒng)中的所有代碼文件,建立以關(guān)鍵詞為檢索單位的倒排索引表;索引表由關(guān)鍵詞 記錄TermRecord組成,按照關(guān)鍵詞名稱的英文字母或者中文拼音順序排序;關(guān)鍵詞記錄 TermRecord 定義為一個二元組:TermRecord : : =〈Term, [FileInfo] >,其中 Term 是關(guān)鍵 詞的名稱;[Filelnfo]是一個或多個針對單個文件的文件索引項(xiàng)。
      [0011] 上述步驟2)和5)中關(guān)鍵詞對于代碼文件的相關(guān)度評分Score的計(jì)算公式是:
      其中isName表示關(guān)鍵詞是否出現(xiàn) 在代碼文件名中(1表示出現(xiàn)、〇表示未出現(xiàn));num_Content表示關(guān)鍵詞在代碼文件內(nèi)容中 的出現(xiàn)次數(shù);num_File指有多少個不同的代碼文件中出現(xiàn)過該關(guān)鍵詞。
      [0012] 與現(xiàn)有技術(shù)相比,本發(fā)明一種基于倒排索引技術(shù)的軟件缺陷代碼文件定位方法 的有益效果在于:1、本發(fā)明應(yīng)用倒排索引、TF-IDF、以及MapReduce等技術(shù),其中倒排索引 (Inverted index)是一種反向索引技術(shù),存儲全文搜索環(huán)境下單詞(詞組)在多個文檔中 的位置映射,構(gòu)成文件級檢索系統(tǒng)中常用的索引結(jié)構(gòu);TF-IDF (term frequency-inverse document frequency)是一種統(tǒng)計(jì)方法,用于評估單詞對于一個文擋(或文檔集合)的重要 (關(guān)聯(lián))程度,TF-IDF加權(quán)常被應(yīng)用于搜索引擎,作為文件與用戶查詢之間相關(guān)程度的度量 或評級;MapReduce是大數(shù)據(jù)背景下的一種并行運(yùn)算框架,包含Map (映射)和Reduce (歸 約)兩個階段,通過任務(wù)的分解和并行執(zhí)行,運(yùn)用"分而治之"的思想,進(jìn)而實(shí)現(xiàn)加快任務(wù)處 理速度的目的;2、本發(fā)明應(yīng)用倒排索引技術(shù)和統(tǒng)計(jì)方法,通過關(guān)鍵詞查詢和統(tǒng)計(jì)推薦高 風(fēng)險的代碼文件,能夠快速準(zhǔn)確地定位包含缺陷的軟件代碼文件,適用于大型軟件系統(tǒng)的 測試和維護(hù)工作;同時本發(fā)明計(jì)算簡單,適用于不同類型的編程語言,以及不同規(guī)模的計(jì)算 機(jī)軟件,具有擴(kuò)展性和適應(yīng)性;便于使用并行算法,能快速有效地分析和處理大量的缺陷報(bào) 告信息,進(jìn)而有效的提高軟件缺陷定位的效能。
      【附圖說明】
      [0013] 圖1是本發(fā)明的一種基于倒排索引技術(shù)的軟件缺陷代碼文件定位
      當(dāng)前第1頁1 2 3 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1