基于數(shù)據(jù)流函數(shù)調(diào)用路徑的變更影響域分析方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種基于數(shù)據(jù)流函數(shù)調(diào)用路徑的變更影響域分析方法及系統(tǒng),所述方法包括:對源代碼和變更后的代碼中的每個函數(shù)進行靜態(tài)路徑分析,獲得每個函數(shù)對應(yīng)的局部數(shù)據(jù)流影響樹;分別將源代碼和變更后的代碼中的所有局部數(shù)據(jù)流影響樹整合為對應(yīng)的全局?jǐn)?shù)據(jù)流影響樹;比較源代碼和變更后的代碼的全局?jǐn)?shù)據(jù)流影響樹,獲得數(shù)據(jù)流變更影響域。本發(fā)明能夠有效確定數(shù)據(jù)流變更影響域,大大減少了系統(tǒng)的冗余路徑,提高了測試效率,為開發(fā)人員快速處理回歸測試中的軟件缺陷提供了幫助,為回歸測試在數(shù)據(jù)流方面的發(fā)展提供了一種新思路。
【專利說明】基于數(shù)據(jù)流函數(shù)調(diào)用路徑的變更影響域分析方法及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明設(shè)及軟件測試領(lǐng)域,具體地,設(shè)及一種基于數(shù)據(jù)流函數(shù)調(diào)用路徑的變更影 響域分析方法及系統(tǒng)。
【背景技術(shù)】
[0002] 回歸測試是對之前已測試過、經(jīng)過修改的程序進行重新測試,W驗證該修改沒有 引入新的錯誤或者由于更改而發(fā)現(xiàn)之前未發(fā)現(xiàn)的錯誤。計算機程序有很大一部分是數(shù)據(jù)聲 明,數(shù)據(jù)的變化對軟件功能的影響將是巨大的。因此,對數(shù)據(jù)變更的測試是進行回歸測試首 先應(yīng)該考慮的問題。通常,影響域分析用來確定變更影響范圍,影響域可W劃分為控制流影 響域、數(shù)據(jù)流影響域和信息流影響域。控制流只是從控制方面沒有辦法分析數(shù)據(jù),范圍比較 ??;信息流影響范圍廣,信息量大,難W準(zhǔn)確提取影響數(shù)據(jù);數(shù)據(jù)流分析了帶有控制關(guān)系的 數(shù)據(jù)流,其影響范圍大,變更影響域相對容易確定。
[0003] 函數(shù)調(diào)用路徑的思想是在每個函數(shù)完成單元測試的前提下,將代碼分析粒度由語 句擴展到函數(shù)。其W函數(shù)為基本單位,分析源程序里基于控制流的函數(shù)之間的邏輯關(guān)系。因 此,本發(fā)明提出了一種基于數(shù)據(jù)流函數(shù)調(diào)用路徑的變更影響域分析方法及系統(tǒng)。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明的目的是提供一種基于數(shù)據(jù)流函數(shù)調(diào)用路徑的變更影響域分析方法及系 統(tǒng),用于解決代碼變更后,如何確定變更影響域的問題。
[0005] 本發(fā)明的技術(shù)方案包括一種基于數(shù)據(jù)流函數(shù)調(diào)用路徑的變更影響域分析方法,其 包括:
[0006] 對源代碼和變更后的代碼中的每個函數(shù)進行靜態(tài)路徑分析,獲得每個函數(shù)對應(yīng)的 局部數(shù)據(jù)流影響樹;
[0007] 分別將源代碼和變更后的代碼中的所有局部數(shù)據(jù)流影響樹整合為對應(yīng)的全局?jǐn)?shù) 據(jù)流影響樹;W及
[000引 比較源代碼和變更后的代碼的全局?jǐn)?shù)據(jù)流影響樹,獲得數(shù)據(jù)流變更影響域。
[0009] 優(yōu)選地,所述對源代碼和變更后的代碼中的每個函數(shù)進行靜態(tài)分析,獲得每個函 數(shù)對應(yīng)的局部數(shù)據(jù)流影響樹,具體包括;將每個函數(shù)作為一個語句塊,W語句塊為單位進行 靜態(tài)分析,獲得每個語句塊對應(yīng)的局部數(shù)據(jù)流影響樹。
[0010] 優(yōu)選地,所述語句塊包括選擇語句塊、循環(huán)語句塊、跳轉(zhuǎn)語句塊和/或開關(guān)語句 塊。
[0011] 優(yōu)選地,獲得選擇語句塊的局部數(shù)據(jù)流影響樹,具體包括:
[0012] 對于不W else語句塊結(jié)束的選擇語句塊,當(dāng)整個if語句塊結(jié)束時,需在if語句 塊的第一個孩子的兄弟鏈表中添加一個空的結(jié)點;當(dāng)最后一個else if語句塊結(jié)束時,將 該語句塊同上一層if語句塊相連,且在if語句塊中連接一個空的兄弟結(jié)點;
[0013] 對于W else語句塊結(jié)束的選擇語句塊,當(dāng)else語句塊結(jié)束時,標(biāo)識整個if語句 塊結(jié)束,將else語句塊同上一層if語句塊相連,再將整個if語句塊同其父語句塊相連,不 添加空的兄弟結(jié)點。
[0014] 優(yōu)選地,獲得循環(huán)語句塊的局部數(shù)據(jù)流影響樹,具體包括;循環(huán)語句塊包括for語 句塊、while-do語句塊和do-while語句塊,對于for語句塊和while-do語句塊,當(dāng)整個語 句塊結(jié)束時,為該語句塊添加一個空的兄弟結(jié)點,對于do-while語句塊,不需要添加空的 兄弟結(jié)點。
[0015] 優(yōu)選地,獲得跳轉(zhuǎn)語句塊的局部數(shù)據(jù)流影響樹,具體包括;跳轉(zhuǎn)語句塊包括break 語句塊、continue語句塊和re化rn語句塊,若函數(shù)名為break語句塊、continue語句塊或 re化rn語句塊,則對應(yīng)的結(jié)點不進行連接操作,若一個循環(huán)語句塊或switch整個語句塊結(jié) 束,要從該語句塊中刪除函數(shù)名為break和continue的結(jié)點,若一個函數(shù)語句塊結(jié)束,從該 語句塊中刪除函數(shù)名為re化rn的結(jié)點。
[0016] 優(yōu)選地,獲得開關(guān)語句塊的局部數(shù)據(jù)流影響樹,具體包括;所述開關(guān)語句塊包括 switch語句塊和case語句塊,當(dāng)一個case語句塊結(jié)束時,將當(dāng)前case語句塊同其父語句 塊進行兄弟連接操作,當(dāng)父語句塊沒有break關(guān)鍵字,則將當(dāng)前語句塊同父語句塊進行孩 子連接操作;當(dāng)整個switch語句塊結(jié)束時,刪除switch語句塊中的函數(shù)名為break的結(jié) 點。
[0017] 優(yōu)選地,將源局部數(shù)據(jù)流影響樹整合為全局?jǐn)?shù)據(jù)流影響樹,具體包括;基于每個函 數(shù)的第一層數(shù)據(jù)流影響樹,對main函數(shù)的局部數(shù)據(jù)流影響樹進行擴展,獲得全局?jǐn)?shù)據(jù)流影 響樹。
[001引優(yōu)選地,所述比較源代碼和變更后的代碼的全局?jǐn)?shù)據(jù)流影響樹,獲得數(shù)據(jù)流變更 影響域,具體包括;確定變更后的代碼相對于源代碼的變更點,分析變更點時,建立變更影 響模型,將要分析的全局?jǐn)?shù)據(jù)流影響樹進行對比分析,并將變更點后面的數(shù)據(jù)流分別標(biāo)記, 并將標(biāo)記的節(jié)點讀取出來得到數(shù)據(jù)流變更影響域。
[0019] 本發(fā)明的技術(shù)方案還包括一種基于數(shù)據(jù)流函數(shù)調(diào)用路徑的變更影響域分析系統(tǒng), 包括:
[0020] 局部數(shù)據(jù)流影響樹獲取模塊,用于對源代碼和變更后的代碼中的每個函數(shù)進行靜 態(tài)路徑分析,獲得每個函數(shù)對應(yīng)的局部數(shù)據(jù)流影響樹;
[0021] 全局?jǐn)?shù)據(jù)流影響樹獲取模塊,用于分別將源代碼和變更后的代碼中的所有局部數(shù) 據(jù)流影響樹整合為對應(yīng)的全局?jǐn)?shù)據(jù)流影響樹;W及
[0022] 變更影響域獲取模塊,用于比較源代碼和變更后的代碼的全局?jǐn)?shù)據(jù)流影響樹,獲 得數(shù)據(jù)流變更影響域。
[0023] 本發(fā)明的有益效果是:本發(fā)明能夠有效確定數(shù)據(jù)流變更影響域,大大減少了系統(tǒng) 的冗余路徑,提高了測試效率,為開發(fā)人員快速處理回歸測試中的軟件缺陷提供了幫助,為 回歸測試在數(shù)據(jù)流方面的發(fā)展提供了一種新思路。
【專利附圖】
【附圖說明】
[0024] 圖1是基于數(shù)據(jù)流函數(shù)調(diào)用路徑的變更影響域分析方法的流程示意圖;
[0025] 圖2是基于數(shù)據(jù)流函數(shù)調(diào)用路徑的變更影響域分析方法的實施過程示意圖;
[0026] 圖3是選擇語句塊中示例代碼的局部數(shù)據(jù)流影響樹示意圖;
[0027] 圖4是基于數(shù)據(jù)流函數(shù)調(diào)用路徑的變更影響域分析方法的結(jié)構(gòu)示意圖;
[002引圖5是應(yīng)用例中main函數(shù)的局部數(shù)據(jù)流影響樹的示意圖;
[0029] 圖6是應(yīng)用例中b化nc函數(shù)的局部數(shù)據(jù)流影響樹的示意圖;
[0030] 圖7是應(yīng)用例中源代碼的全局?jǐn)?shù)據(jù)流影響樹的示意圖;
[0031] 圖8是應(yīng)用例中變更后的代碼的全局?jǐn)?shù)據(jù)流影響樹的示意圖;
[0032] 圖9是應(yīng)用例中函數(shù)數(shù)據(jù)流變更影響域的示意圖。
【具體實施方式】
[0033] W下結(jié)合附圖對本發(fā)明的【具體實施方式】進行詳細說明。應(yīng)當(dāng)理解的是,此處所描 述的【具體實施方式】僅用于說明和解釋本發(fā)明,并不用于限制本發(fā)明。
[0034] 為便于描述,本實施方式首先給出了部分術(shù)語的定義,其僅用于對技術(shù)方案進行 解釋,并不限定本發(fā)明的保護范圍。
[0035] 1、函數(shù)調(diào)用路徑(化nction化lling Path, FCP);指根據(jù)函數(shù)調(diào)用關(guān)系得到的由 程序入口點到出口點的一個函數(shù)名序列,表示為path; = {f 1。,fU,f 12……f J。其中,fu表 示函數(shù)名,fu與f u+i之間的相鄰關(guān)系表示f u調(diào)用了 f u+i或f u與f u+i順序執(zhí)行。
[0036] 2、數(shù)據(jù)流函數(shù)調(diào)用路徑;數(shù)據(jù)流函數(shù)調(diào)用路徑指同一數(shù)據(jù)與所關(guān)聯(lián)的函數(shù)之間的 序列,使用P表示,Pi= { (V VV。,…叫k/V化…,nv%m}。其中叫n代表起始數(shù)據(jù),V 代表被 調(diào)函數(shù),路徑中相鄰結(jié)點表示調(diào)用關(guān)系或者順序執(zhí)行關(guān)系。例如Pi= {(Va,I%mi)}表示源 函數(shù)中的數(shù)據(jù)流函數(shù)調(diào)用關(guān)路徑V。一 m。一 m 1。
[0037] 3、局部數(shù)據(jù)流影響樹;局部數(shù)據(jù)流影響樹表示源程序中單個函數(shù)中所發(fā)生的數(shù)據(jù) 流調(diào)用。本實施方式中使用S元組T(M,R,巧表示局部數(shù)據(jù)流影響樹,M表示數(shù)據(jù)集合,R表 示數(shù)據(jù)流之間的調(diào)用關(guān)系,S表示源函數(shù)。
[003引 4、靜態(tài)路徑;是指對源代碼進行靜態(tài)分析,根據(jù)數(shù)據(jù)流調(diào)用關(guān)系得到的數(shù)據(jù)流調(diào) 用路徑。全局靜態(tài)路徑集是全部靜態(tài)路徑的集合,表示為;B化C)=巧1 A,…口。},其中S 是源代碼,C是數(shù)據(jù)流調(diào)用關(guān)系準(zhǔn)則,Pi是數(shù)據(jù)流調(diào)用路徑。
[0039] 5、語句塊:是指過程語言中特定程序結(jié)構(gòu),由關(guān)鍵字構(gòu)成的一個語句序列,或不在 特定程序結(jié)構(gòu)中的單條語句。
[0040] 基于上述定義,本實施方式給出了一種基于數(shù)據(jù)流函數(shù)調(diào)用路徑的變更影響域分 析方法,如圖1所示,包括W下步驟:
[0041] 步驟1,對源代碼和變更后的代碼中的每個函數(shù)進行靜態(tài)路徑分析,獲得每個函數(shù) 對應(yīng)的局部數(shù)據(jù)流影響樹。
[0042] 步驟2,分別將源代碼和變更后的代碼中的所有局部數(shù)據(jù)流影響樹整合為對應(yīng)的 全局?jǐn)?shù)據(jù)流影響樹。
[0043] 步驟3,比較源代碼和變更后的代碼的全局?jǐn)?shù)據(jù)流影響樹,獲得數(shù)據(jù)流變更影響 域。
[0044] 上述S個步驟僅示意了一種優(yōu)選的執(zhí)行順序,本發(fā)明并不限制于此。
[0045] 如圖2所示,本實施例方式的大致實施過程為:對源代碼和變更后代碼通過局部 數(shù)據(jù)處理得到局部數(shù)據(jù)流影響樹,然后通過全局?jǐn)?shù)據(jù)流影響樹獲取算法得到全局?jǐn)?shù)據(jù)流影 響樹,將分別得到的全局?jǐn)?shù)據(jù)流影響樹使用變更影響模型算法得到數(shù)據(jù)流影響域分析報 告。因此,基于上述=個步驟,具體的實施過程如下所述。
[0046] 一、語句塊及各語句塊的局部數(shù)據(jù)流影響樹
[0047] 本實施方式中,所述對源代碼和變更后的代碼中的每個函數(shù)進行靜態(tài)分析,獲得 每個函數(shù)對應(yīng)的局部數(shù)據(jù)流影響樹,具體包括;將每個函數(shù)作為一個語句塊,W語句塊為單 位進行靜態(tài)分析,獲得每個語句塊對應(yīng)的局部數(shù)據(jù)流影響樹。
[0048] 首先,進行語句塊分析。
[0049] 所述語句塊包括選擇語句塊、循環(huán)語句塊、跳轉(zhuǎn)語句塊和/或開關(guān)語句塊。
[0050] (1)選擇語句塊
[0化1] 選擇語句塊包括if語句塊、else語句塊和else if語句塊,針對該種結(jié)構(gòu)可W分 為兩類:
[0052] 1) if、if/else if/…/else if
[0化3] 不W else語句塊結(jié)束,當(dāng)整個if語句塊結(jié)束時,需在if語句塊的第一個孩子的 兄弟鏈表中添加一個空的結(jié)點,W下面所示的代碼為例,其對應(yīng)的局部數(shù)據(jù)流影響樹如圖3 所示。
[0054] 示例代碼;
[0055] if (i>3)
[0化6] tVari 油 le++ ;
[0057] else if(i<4)
[0化引 tVari 油 le-;
[0化9] 上述示例代碼中,當(dāng)最后一個else if語句塊結(jié)束時,將其語句塊對應(yīng)的樹同上一 層if語句塊相連,由于else if語句塊結(jié)束標(biāo)識整個if語句塊結(jié)束,因此,還需要在if語 句塊樹中連接一個空的兄弟結(jié)點。
[0060] 2) if/…/else
[0061] W else語句塊結(jié)束,當(dāng)語句塊else結(jié)束時,標(biāo)識整個if語句塊結(jié)束,將else語 句塊同上一層if語句塊相連,最后將整個if語句塊同其父語句塊相連,沒有必要再添加一 個空的兄弟結(jié)點。
[0062] (2)循環(huán)語句塊
[0063] 循環(huán)語句塊包括for語句塊、while-do語句塊和do-while語句塊,采用Z路徑測 試思想處理,只考慮循環(huán)的兩個可能性;重復(fù)零次和多于零次的重復(fù)。因此,在處理for語 句塊和while-do語句塊結(jié)構(gòu)類似于處理if/'''/else if結(jié)構(gòu)。當(dāng)整個語句塊結(jié)束時,需為 其添加一個空的兄弟結(jié)點。
[0064] do-while結(jié)構(gòu)由于該循環(huán)至少被執(zhí)行了一次,因此,不需要為其添加空的兄弟結(jié) 點。
[0065] 做固齡語句塊
[0066] 跳轉(zhuǎn)語句塊包括break語句塊、continue語句塊和re化rn語句塊,break語句塊 主要出現(xiàn)在循環(huán)、switch/case結(jié)構(gòu)中,continue語句塊主要出現(xiàn)在循環(huán)結(jié)構(gòu)中,return語 句塊可W出現(xiàn)在任何語句塊中。在程序處理過程中,W上關(guān)鍵字均被識為函數(shù)名處理,在W 下情況中要對局部數(shù)據(jù)流影響樹進行特殊處理。
[0067] 1)當(dāng)進行語句塊連接處理時,如果函數(shù)名為W上關(guān)鍵字,那么該結(jié)點不進行連接 操作。
[0068] 2)當(dāng)一個循環(huán)語句塊、switch整個語句塊結(jié)束時,要從語句塊中刪除函數(shù)名為 break、continue 的結(jié)點。
[0069] 3)當(dāng)一個函數(shù)語句塊結(jié)束時,從函數(shù)語句塊樹中刪除函數(shù)名為re化rn的結(jié)點。
[0070] (4)開關(guān)語句塊
[0071] 開關(guān)語句塊包括switch語句塊和case語句塊,在處理case語句塊時,case語句 塊之間通過break關(guān)鍵字來實現(xiàn)并列關(guān)系,因此,當(dāng)一個case語句塊結(jié)束時,要進行W下兩 步操作;將當(dāng)前case語句塊同其父語句塊進行兄弟連接操作,case語句塊本身就存在并列 關(guān)系;當(dāng)父語句塊沒有break關(guān)鍵字,將當(dāng)前語句塊同父語句塊進行孩子連接操作。
[0072] 當(dāng)整個switch語句塊結(jié)束時,刪除switch中函數(shù)名為break的結(jié)點。
[0073] 其次,采用局部數(shù)據(jù)處理算法獲取局部數(shù)據(jù)流影響樹。
[0074] 在分析函數(shù)時,首先建立隊列,設(shè)置臨時變量,遇到語句塊、遇到測試變量加 1,并將數(shù)值加入隊列中,如果是控制字則將其入隊,遇到含有所測數(shù)據(jù)的函數(shù)名和數(shù)據(jù)時 都要入隊,在遇到臨時變量減1并入隊,通過兩端對臨時變量數(shù)值的比較得到數(shù)據(jù)流函 數(shù)調(diào)用關(guān)系,最后得到局部數(shù)據(jù)流調(diào)用關(guān)系隊列。
[0075] 從分析得到的隊列來建立局部數(shù)據(jù)流影響樹,隊列出隊,創(chuàng)建一個樹頭,如果是數(shù) 字將其存儲到變量中,如果是控制字,根據(jù)控制字的不同類別來進行結(jié)構(gòu)的選擇,遇到數(shù)據(jù) 流則添加數(shù)據(jù)流信息到孩子節(jié)點,按此下去,直到隊列出隊完,得到局部數(shù)據(jù)流函數(shù)影響樹
[0076] 局部數(shù)據(jù)處理算法的算法實現(xiàn)描述如下:
[0077] 輸入;源程序,變更后程序 [007引輸出;局部數(shù)據(jù)流函數(shù)影響樹
[0079] BEGIN //對函數(shù)F進行 ForF. lines<-0 If F. lines, contains ("{',) xragTemp<-xra呂Terap+1 dataQueue. insertQue(xragTerap) if F. lines, contains (keyWords) dataQueue. insertQue(keyWords)
[0080]
【權(quán)利要求】
1. 一種基于數(shù)據(jù)流函數(shù)調(diào)用路徑的變更影響域分析方法,其特征在于,包括: 對源代碼和變更后的代碼中的每個函數(shù)進行靜態(tài)路徑分析,獲得每個函數(shù)對應(yīng)的局部 數(shù)據(jù)流影響樹; 分別將源代碼和變更后的代碼中的所有局部數(shù)據(jù)流影響樹整合為對應(yīng)的全局?jǐn)?shù)據(jù)流 影響樹;以及 比較源代碼和變更后的代碼的全局?jǐn)?shù)據(jù)流影響樹,獲得數(shù)據(jù)流變更影響域。
2. 根據(jù)權(quán)利要求1所述的變更影響域分析方法,其特征在于,所述對源代碼和變更后 的代碼中的每個函數(shù)進行靜態(tài)分析,獲得每個函數(shù)對應(yīng)的局部數(shù)據(jù)流影響樹,具體包括:將 每個函數(shù)作為一個語句塊,以語句塊為單位進行靜態(tài)分析,獲得每個語句塊對應(yīng)的局部數(shù) 據(jù)流影響樹。
3. 根據(jù)權(quán)利要求2所述的變更影響域分析方法,其特征在于,所述語句塊包括選擇語 句塊、循環(huán)語句塊、跳轉(zhuǎn)語句塊和/或開關(guān)語句塊。
4. 根據(jù)權(quán)利要求3所述的變更影響域分析方法,其特征在于,獲得選擇語句塊的局部 數(shù)據(jù)流影響樹,具體包括: 對于不以else語句塊結(jié)束的選擇語句塊,當(dāng)整個if語句塊結(jié)束時,需在if語句塊的 第一個孩子結(jié)點的兄弟鏈表中添加一個空的結(jié)點;當(dāng)最后一個else if語句塊結(jié)束時,將 該語句塊同上一層if語句塊相連,且在if語句塊中連接一個空的兄弟結(jié)點; 對于以else語句塊結(jié)束的選擇語句塊,當(dāng)else語句塊結(jié)束時,標(biāo)識整個if語句塊結(jié) 束,將else語句塊同上一層if語句塊相連,再將整個if語句塊同其父語句塊相連,不添加 空的兄弟結(jié)點。
5. 根據(jù)權(quán)利要求3所述的變更影響域分析方法,其特征在于,獲得循環(huán)語句塊的局部 數(shù)據(jù)流影響樹,具體包括:循環(huán)語句塊包括for語句塊、while-do語句塊和do-while語句 塊,對于for語句塊和while-do語句塊,當(dāng)整個語句塊結(jié)束時,為該語句塊添加一個空的兄 弟結(jié)點,對于do-while語句塊,不需要添加空的兄弟結(jié)點。
6. 根據(jù)權(quán)利要求3所述的變更影響域分析方法,其特征在于,獲得跳轉(zhuǎn)語句塊的局部 數(shù)據(jù)流影響樹,具體包括:跳轉(zhuǎn)語句塊包括break語句塊、continue語句塊和return語句 塊,若函數(shù)名為break語句塊、continue語句塊或return語句塊,則對應(yīng)的結(jié)點不進行連接 操作,若一個循環(huán)語句塊或switch整個語句塊結(jié)束,要從該語句塊中刪除函數(shù)名為break 和continue的結(jié)點,若一個函數(shù)語句塊結(jié)束,從該語句塊中刪除函數(shù)名為return的結(jié)點。
7. 根據(jù)權(quán)利要求3所述的變更影響域分析方法,其特征在于,獲得開關(guān)語句塊的局 部數(shù)據(jù)流影響樹,具體包括:所述開關(guān)語句塊包括switch語句塊和case語句塊,當(dāng)一個 case語句塊結(jié)束時,將當(dāng)前case語句塊同其父語句塊進行兄弟連接操作,當(dāng)父語句塊沒有 break關(guān)鍵字,則將當(dāng)前語句塊同父語句塊進行孩子連接操作;當(dāng)整個switch語句塊結(jié)束 時,刪除switch語句塊中的函數(shù)名為break的結(jié)點。
8. 根據(jù)權(quán)利要求1所述的變更影響域分析方法,其特征在于,將源局部數(shù)據(jù)流影響樹 整合為全局?jǐn)?shù)據(jù)流影響樹具體包括:基于每個函數(shù)的第一層數(shù)據(jù)流影響樹,對main函數(shù)的 局部數(shù)據(jù)流影響樹進行擴展,獲得全局?jǐn)?shù)據(jù)流影響樹。
9. 根據(jù)權(quán)利要求1所述的變更影響域分析方法,其特征在于,所述比較源代碼和變更 后的代碼的全局?jǐn)?shù)據(jù)流影響樹,獲得數(shù)據(jù)流變更影響域,具體包括:確定變更后的代碼相對 于源代碼的變更點,分析變更點時,建立變更影響模型,將要分析的全局?jǐn)?shù)據(jù)流影響樹進行 對比分析,并將變更點后面的數(shù)據(jù)流分別標(biāo)記,并將標(biāo)記的節(jié)點讀取出來得到數(shù)據(jù)流變更 影響域。
10. -種基于數(shù)據(jù)流函數(shù)調(diào)用路徑的變更影響域分析系統(tǒng),其特征在于,包括: 局部數(shù)據(jù)流影響樹獲取模塊,用于對源代碼和變更后的代碼中的每個函數(shù)進行靜態(tài)路 徑分析,獲得每個函數(shù)對應(yīng)的局部數(shù)據(jù)流影響樹; 全局?jǐn)?shù)據(jù)流影響樹獲取模塊,用于分別將源代碼和變更后的代碼中的所有局部數(shù)據(jù)流 影響樹整合為對應(yīng)的全局?jǐn)?shù)據(jù)流影響樹;以及 變更影響域獲取模塊,用于比較源代碼和變更后的代碼的全局?jǐn)?shù)據(jù)流影響樹,獲得數(shù) 據(jù)流變更影響域。
【文檔編號】G06F11/36GK104503917SQ201510004022
【公開日】2015年4月8日 申請日期:2015年1月4日 優(yōu)先權(quán)日:2015年1月4日
【發(fā)明者】牟永敏 申請人:牟永敏, 北京信息科技大學(xué)