軟件缺陷檢測(cè)方法及裝置制造方法
【專利摘要】本發(fā)明公開了一種軟件缺陷檢測(cè)方法及裝置,其中,方法包括:掃描源代碼,檢測(cè)所述源代碼中是否存在缺陷;若所述源代碼中存在缺陷,則確定所述缺陷是否為已確認(rèn)過的誤報(bào)缺陷;若所述缺陷不是已確認(rèn)過的誤報(bào)缺陷,則將所述缺陷顯示給用戶,以供用戶進(jìn)行確認(rèn)或修改;若所述缺陷是已確認(rèn)過的誤報(bào)缺陷,則拒絕將所述缺陷顯示給用戶。本發(fā)明通過確定所述缺陷是否為已確認(rèn)過的誤報(bào)缺陷,將未確認(rèn)過的缺陷顯示給用戶,以供用戶進(jìn)行確認(rèn)或修改,將已確認(rèn)過的誤報(bào)缺陷屏蔽掉,不再顯示給用戶,這樣在后續(xù)的檢測(cè)過程中用戶就不用再對(duì)已確認(rèn)過的誤報(bào)缺陷進(jìn)行重復(fù)確認(rèn),可以大大減少用戶的工作量,減少用戶的負(fù)擔(dān)。
【專利說明】軟件缺陷檢測(cè)方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明實(shí)施例涉及計(jì)算機(jī)軟件技術(shù),尤其涉及一種軟件缺陷檢測(cè)方法及裝置。
【背景技術(shù)】
[0002]隨著科學(xué)技術(shù)的發(fā)展,軟件已經(jīng)成為影響國(guó)民經(jīng)濟(jì)、軍事、政治乃至社會(huì)生活的重要因素,而軟件缺限的存在容易導(dǎo)致軟件產(chǎn)品在某種程度上不能滿足用戶的需求,對(duì)軟件質(zhì)量有著重要的影響。
[0003]所謂軟件缺陷,即為計(jì)算機(jī)軟件或程序中存在的某種破壞正常運(yùn)行能力的問題、錯(cuò)誤,或者隱藏的功能缺限。目前,軟件缺陷的檢測(cè)方法有很多,最常見的是靜態(tài)分析法,即在不實(shí)際執(zhí)行程序的情況下,對(duì)被測(cè)試程序源代碼進(jìn)行掃描,提取程序關(guān)鍵語法,解釋其語義,理解程序行為,根據(jù)預(yù)先設(shè)定的漏洞特征、安全規(guī)則等檢測(cè)程序中所存在的缺陷。
[0004]但是,上述靜態(tài)檢測(cè)方法,一般采用將缺陷所在的位置顯示給用戶,以供用戶確認(rèn)是否是誤報(bào)的缺陷,并針對(duì)非誤報(bào)的缺陷進(jìn)行修改,當(dāng)用戶再次掃描源代碼時(shí)或者對(duì)后續(xù)版本的源代碼進(jìn)行掃描時(shí),原來已確認(rèn)后的誤報(bào)缺陷會(huì)再次被檢測(cè)出來,這樣就需要用戶對(duì)已確認(rèn)過的誤報(bào)缺陷再進(jìn)行一次確認(rèn),致使用戶做大量的重復(fù)性工作,給用戶帶來不便。
【發(fā)明內(nèi)容】
[0005]本發(fā)明提供一種軟件缺陷檢測(cè)方法及裝置,用以解決現(xiàn)有技術(shù)中當(dāng)用戶再次掃描源代碼時(shí)或者對(duì)后續(xù)版本的源代碼進(jìn)行掃描時(shí),原來已確認(rèn)后的誤報(bào)缺陷會(huì)再次被檢測(cè)出來,這樣就需要用戶對(duì)已確認(rèn)過的誤報(bào)缺陷再進(jìn)行一次確認(rèn),致使用戶做大量的重復(fù)性工作,給用戶帶來不便的缺陷。
[0006]本發(fā)明提供一種軟件缺陷檢測(cè)方法,包括:
[0007]掃描源代碼;
[0008]檢測(cè)所述源代碼中是否存在缺陷;
[0009]若所述源代碼中存在缺陷,則確定所述缺陷是否為已確認(rèn)過的誤報(bào)缺陷;
[0010]若所述缺陷不是已確認(rèn)過的誤報(bào)缺陷,則將所述缺陷顯示給用戶,以供用戶進(jìn)行確認(rèn)或修改;
[0011]若所述缺陷是已確認(rèn)過的誤報(bào)缺陷,則拒絕將所述缺陷顯示給用戶。
[0012]本發(fā)明還提供一種軟件缺陷檢測(cè)裝置,包括:
[0013]掃描模塊,用于掃描源代碼;
[0014]檢測(cè)模塊,用于檢測(cè)所述源代碼中是否存在缺陷;
[0015]確定模塊,用于若所述源代碼中存在缺陷,則確定所述缺陷是否為已確認(rèn)過的誤報(bào)缺陷;
[0016]顯示模塊,用于若所述缺陷不是已確認(rèn)過的誤報(bào)缺陷,則將所述缺陷顯示給用戶,以供用戶進(jìn)行確認(rèn)或修改;
[0017]拒絕模塊,用于若所述缺陷是已確認(rèn)過的誤報(bào)缺陷,則拒絕讓所述顯示模塊將所述缺陷顯示給用戶。
[0018]本發(fā)明通過確定所述缺陷是否為已確認(rèn)過的誤報(bào)缺陷,將未確認(rèn)過的缺陷顯示給用戶,以供用戶進(jìn)行確認(rèn)或修改,將已確認(rèn)過的誤報(bào)缺陷屏蔽掉,不再顯示給用戶,這樣在后續(xù)的檢測(cè)過程中用戶就不用再對(duì)已確認(rèn)過的誤報(bào)缺陷進(jìn)行重復(fù)確認(rèn),可以大大減少用戶的工作量,減少用戶的負(fù)擔(dān)。
【專利附圖】
【附圖說明】
[0019]圖1為本發(fā)明提供的軟件缺陷檢測(cè)方法實(shí)施例一流程示意圖;
[0020]圖2為本發(fā)明提供的軟件缺陷檢測(cè)方法實(shí)施例二流程示意圖;
[0021]圖3為本發(fā)明提供的軟件缺陷檢測(cè)裝置實(shí)施例一結(jié)構(gòu)示意圖;
[0022]圖4為本發(fā)明提供的軟件缺陷檢測(cè)裝置實(shí)施例二結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0023]為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0024]圖1為本發(fā)明提供的軟件缺陷檢測(cè)方法實(shí)施例一流程示意圖,如圖1所示,具體包括如下步驟:
[0025]S101、掃描源代碼;
[0026]需要說明的是,本實(shí)施例的執(zhí)行主體為圖3和圖4所示的軟件缺陷檢測(cè)裝置,在開始測(cè)試被測(cè)軟件存在的缺陷之前,需要獲取到軟件的源程序代碼,例如,可以采用用戶輸入或上傳的方式。在獲取到軟件的源程序代碼之后,則開始逐行掃描源代碼,以檢測(cè)所述源代碼中是否存在缺陷。
[0027]S102、檢測(cè)所述源代碼中是否存在缺陷;
[0028]具體來說,本實(shí)施例檢測(cè)所述源代碼中是否存在缺陷可以采用現(xiàn)有技術(shù),例如靜態(tài)檢測(cè)法,直接分析源代碼,通過詞法分析、語法分析和靜態(tài)語義分析,檢測(cè)源代碼中存在的缺陷,上述方法均為現(xiàn)有技術(shù),這里不再累述。若檢測(cè)到所述源代碼中存在的缺陷,例如,每檢測(cè)到一個(gè)缺陷,則執(zhí)行一次步驟S103,或者,等檢測(cè)完源代碼中存在的所有缺陷之后,執(zhí)行步驟S103,若檢測(cè)到所述源代碼中未存在缺陷,則結(jié)束本次檢測(cè)。
[0029]S103、確定所述缺陷是否為已確認(rèn)過的誤報(bào)缺陷;
[0030]具體來說,可以采用下述方法來確定:確定所述缺陷是否存在于誤報(bào)缺陷庫(kù)中,所述誤報(bào)缺陷庫(kù)存儲(chǔ)有所述用戶已確認(rèn)過的誤報(bào)缺陷,例如,所述誤報(bào)缺陷庫(kù)中可以存儲(chǔ)已確認(rèn)過的誤報(bào)缺陷所在的程序代碼或者程序代碼對(duì)應(yīng)的行號(hào)等,當(dāng)所述誤報(bào)缺陷庫(kù)中存儲(chǔ)有已確認(rèn)過的誤報(bào)缺陷所在的程序代碼時(shí),則提取所述缺陷所在的程序代碼,確定所述缺陷所在的程序代碼是否存在于所述誤報(bào)缺陷庫(kù)中,或者,當(dāng)所述誤報(bào)缺陷庫(kù)中存儲(chǔ)有已確認(rèn)過的誤報(bào)缺陷所在的程序代碼對(duì)應(yīng)的行號(hào)時(shí),提取所述缺陷所在的程序代碼對(duì)應(yīng)的行號(hào),確定所述缺陷所在的程序代碼對(duì)應(yīng)的行號(hào)是否存在于所述誤報(bào)缺陷庫(kù)中,若存在,則確定所述缺陷為已確認(rèn)過的誤報(bào)缺陷;若不存在,則確定所述缺陷為未確認(rèn)過的缺陷。若確定所述缺陷不是已確認(rèn)過的誤報(bào)缺陷,則執(zhí)行步驟S104,若確定所述缺陷是已確認(rèn)過的誤報(bào)缺陷,則執(zhí)行步驟S105。
[0031]S104、將所述缺陷顯示給用戶,以供用戶進(jìn)行確認(rèn)或修改;
[0032]S105、拒絕將所述缺陷顯示給用戶。
[0033]具體來說,上述檢測(cè)過程可以為每檢測(cè)到一個(gè)缺陷,則確定該缺陷是否為已確認(rèn)過的誤報(bào)缺陷,若確定該缺陷不是已確認(rèn)過的誤報(bào)缺陷,則將該缺陷顯示給用戶,以供用戶進(jìn)行確認(rèn)或修改,若確定該缺陷是已確認(rèn)過的誤報(bào)缺陷,則拒絕將該缺陷顯示給用戶,重復(fù)上述過程,直至檢測(cè)完源代碼中存在的所有缺陷;或者,等檢測(cè)完源代碼中存在的所有缺陷之后,一一確定上述所有缺陷是否為已確認(rèn)過的誤報(bào)缺陷,相應(yīng)地,則將不是已確認(rèn)過的誤報(bào)缺陷的缺陷一一顯示給用戶,以供用戶進(jìn)行確認(rèn)或修改,拒絕將已確認(rèn)過是誤報(bào)缺陷的缺陷顯示給用戶,或者,一一確定上述所有缺陷中不是已確認(rèn)過的誤報(bào)缺陷的缺陷,等確定完所有的缺陷之后,然后將這些不是已確認(rèn)過的誤報(bào)缺陷的缺陷一次性顯示給用戶,以供用戶進(jìn)行確認(rèn)或修改。
[0034]本實(shí)施例通過確定所述缺陷是否為已確認(rèn)過的誤報(bào)缺陷,將未確認(rèn)過的缺陷顯示給用戶,以供用戶進(jìn)行確認(rèn)或修改,將已確認(rèn)過的誤報(bào)缺陷屏蔽掉,不再顯示給用戶,這樣在后續(xù)的檢測(cè)過程中用戶就不用再對(duì)已確認(rèn)過的誤報(bào)缺陷進(jìn)行重復(fù)確認(rèn),可以大大減少用戶的工作量,減少用戶的負(fù)擔(dān)。
[0035]圖2為本發(fā)明提供的軟件缺陷檢測(cè)方法實(shí)施例二流程示意圖,如圖2所示,本實(shí)施例在上述方法實(shí)施例一的基礎(chǔ)上,進(jìn)一步增加了根據(jù)預(yù)設(shè)條件對(duì)檢測(cè)到的缺陷進(jìn)行分類,得到各類型的缺陷這一方法步驟,具體包括如下步驟:
[0036]S201、掃描源代碼;
[0037]S202、檢測(cè)所述源代碼中是否存在缺陷;
[0038]需要說明的是,檢測(cè)所述源代碼中是否存在缺陷,待檢測(cè)完源代碼中存在的所有缺陷之后,執(zhí)行步驟S203。
[0039]S203、根據(jù)預(yù)設(shè)條件對(duì)檢測(cè)到的缺陷進(jìn)行分類,得到各類型的缺陷;
[0040]具體來說,所述預(yù)設(shè)條件可以包含下述條件中的至少一種:各缺陷處對(duì)應(yīng)的變量是否是不同的變量;各缺陷從所述對(duì)應(yīng)的變量所在當(dāng)前節(jié)點(diǎn)到所在定義節(jié)點(diǎn)的前向蹤跡是否相似;各缺陷處的缺陷特征是否一致。下面以所述預(yù)設(shè)條件為各缺陷處對(duì)應(yīng)的變量是否是不同的變量、各缺陷從所述對(duì)應(yīng)的變量所在當(dāng)前節(jié)點(diǎn)到所在定義節(jié)點(diǎn)的前向蹤跡是否相似及各缺陷處的缺陷特征是否一致為例,進(jìn)行詳細(xì)說明得到各類型的缺陷的過程。分析所述源代碼,生成控制流圖,所述控制流圖是程序控制結(jié)構(gòu)的圖形表示,其基本元素為過程塊、節(jié)點(diǎn)、判定;如果所述源代碼由多個(gè)代碼文件組成,則先生成各自的控制流圖,再將控制流圖文件合并成一個(gè)全局的控制流圖文件;確定缺陷所在的當(dāng)前點(diǎn),即確定缺陷所在的當(dāng)前所在的位置,可以為行號(hào),確定缺陷所在當(dāng)前點(diǎn)對(duì)應(yīng)的變量并記錄變量名稱以及變量所使用的函數(shù);確定變量所使用的函數(shù)是否相同或具有相似的特征;根據(jù)控制流圖向上分析,確定缺陷所在的定義節(jié)點(diǎn),并記錄所述缺陷從缺陷所在當(dāng)前點(diǎn)到缺陷所在定義節(jié)點(diǎn)的前向蹤跡;比較上述特征,將滿足各缺陷處對(duì)應(yīng)的變量是不同的變量、各缺陷從所述對(duì)應(yīng)的變量所在當(dāng)前節(jié)點(diǎn)到所在定義節(jié)點(diǎn)的前向蹤跡相似且各缺陷處的缺陷特征一致即所使用的函數(shù)相同或具有相似的特征的各缺陷歸為同一類缺陷。通過上述方法可以得到各類型的缺陷。需要說明的是,可以采用下述方法判定各缺陷的前向蹤跡是否相似,若各缺陷的前向蹤跡中所包含的程序點(diǎn)均不影響缺陷的表現(xiàn)形式,即各缺陷的前向蹤跡中沒有使用缺陷處對(duì)應(yīng)的變量,則確定各缺陷的前向蹤跡相似。
[0041]S204、確定各類型的缺陷是否為已確認(rèn)過的同屬于該類型的誤報(bào)缺陷;
[0042]具體來說,確定所述缺陷是否存在于誤報(bào)缺陷庫(kù)中,所述誤報(bào)缺陷庫(kù)存儲(chǔ)有所述用戶已確認(rèn)過的各類型的誤報(bào)缺陷;若存在,則確定所述缺陷為已確認(rèn)過的同屬于該類型的誤報(bào)缺陷;若不存在,則確定所述缺陷為未確認(rèn)過的同屬于該類型的缺陷。若確定所述缺陷不是已確認(rèn)過的同屬于該類型的誤報(bào)缺陷,則執(zhí)行步驟S205,若確定所述缺陷是已確認(rèn)過的同屬于該類型的誤報(bào)缺陷,則執(zhí)行步驟S206。
[0043]S205、將所述缺陷顯示給用戶,以供用戶進(jìn)行確認(rèn)或修改;
[0044]S206、拒絕將所述缺陷顯示給用戶。
[0045]具體來說,在對(duì)上述檢測(cè)到的缺陷完成分類之后,分別確定各類型的缺陷是否存在于誤報(bào)缺陷庫(kù)中,所述誤報(bào)缺陷庫(kù)存儲(chǔ)有所述用戶已確認(rèn)過的各類型的誤報(bào)缺陷或者未經(jīng)分類的誤報(bào)缺陷;當(dāng)所述誤報(bào)缺陷庫(kù)存儲(chǔ)有所述用戶已確認(rèn)過的各類型的誤報(bào)缺陷時(shí),根據(jù)缺陷的類型在所述誤報(bào)缺陷庫(kù)中找到對(duì)應(yīng)的類型,然后確定在對(duì)應(yīng)的類型中是否存在上述缺陷對(duì)應(yīng)的誤報(bào)缺陷,若存在,則確定所述缺陷為已確認(rèn)過的同屬于該類型的誤報(bào)缺陷,則屏蔽掉所述缺陷,拒絕將所述缺陷顯示給用戶;若不存在,則確定所述缺陷為未確認(rèn)過的同屬于該類型的缺陷,則將所述缺陷分類別顯示給用戶,以供用戶進(jìn)行確認(rèn)或修改;或者,當(dāng)所述誤報(bào)缺陷庫(kù)存儲(chǔ)有未經(jīng)分類的誤報(bào)缺陷時(shí),分類別確定所述誤報(bào)缺陷庫(kù)中否存在上述缺陷對(duì)應(yīng)的誤報(bào)缺陷,若存在,則確定所述缺陷為已確認(rèn)過的誤報(bào)缺陷,則拒絕將所述缺陷顯示給用戶,若確定所述缺陷不是已確認(rèn)過的誤報(bào)缺陷,則將所述缺陷分類別顯示給用戶,以供用戶進(jìn)行確認(rèn)或修改。
[0046]需要說明的是,在對(duì)上述檢測(cè)到的缺陷完成分類之后,可以采用如下方式顯示給用戶:逐個(gè)確定上述各類別對(duì)應(yīng)的缺陷是否為已確認(rèn)過的誤報(bào)缺陷,相應(yīng)地,則將不是已確認(rèn)過的誤報(bào)缺陷的缺陷按照所在類別逐個(gè)顯示給用戶,以供用戶進(jìn)行確認(rèn)或修改,拒絕將已確認(rèn)過是誤報(bào)缺陷的缺陷顯示給用戶,或者,逐個(gè)確定上述各類別對(duì)應(yīng)的缺陷中是否為已確認(rèn)過的誤報(bào)缺陷的缺陷,等確定完所有類別的缺陷之后,然后將不是已確認(rèn)過的誤報(bào)缺陷的缺陷按照類別一次性顯示給用戶,以供用戶進(jìn)行確認(rèn)或修改,拒絕將已確認(rèn)過是誤報(bào)缺陷的缺陷顯示給用戶。
[0047]本實(shí)施例通過將所述缺陷進(jìn)行分類,以便于用戶針對(duì)各個(gè)類型的缺陷分別確定所述缺陷是否為已確認(rèn)過的該類型的誤報(bào)缺陷,將未確認(rèn)過的該類型的缺陷顯示給用戶,以供用戶針對(duì)該類型的進(jìn)行確認(rèn)或修改,將已確認(rèn)過的該類型的誤報(bào)缺陷屏蔽掉,不再顯示給用戶,這樣在后續(xù)的檢測(cè)過程中用戶就不用再對(duì)已確認(rèn)過的該類型的誤報(bào)缺陷進(jìn)行重復(fù)確認(rèn),可以大大減少用戶的工作量,減少用戶的負(fù)擔(dān)。
[0048]圖3為本發(fā)明提供的軟件缺陷檢測(cè)裝置實(shí)施例一結(jié)構(gòu)示意圖,如圖3所示,具體包括:掃描模塊31、檢測(cè)模塊32、確定模塊33及顯示模塊34。
[0049]掃描模塊31,用于掃描源代碼;
[0050]檢測(cè)模塊32,用于檢測(cè)所述源代碼中是否存在缺陷;
[0051]確定模塊33,用于若所述源代碼中存在缺陷,則確定所述缺陷是否為已確認(rèn)過的誤報(bào)缺陷;
[0052]顯示模塊34,用于若所述缺陷不是已確認(rèn)過的誤報(bào)缺陷,則將所述缺陷顯示給用戶,以供用戶進(jìn)行確認(rèn)或修改;
[0053]拒絕模塊35,用于若所述缺陷是已確認(rèn)過的誤報(bào)缺陷,則拒絕讓所述顯示模塊34將所述缺陷顯示給用戶。
[0054]本實(shí)施例所述的裝置用于執(zhí)行方法實(shí)施例一所述的方法步驟,其技術(shù)原理和產(chǎn)生的技術(shù)效果類似,這里不再累述。
[0055]圖4為本發(fā)明軟件缺陷檢測(cè)裝置實(shí)施例二結(jié)構(gòu)示意圖,如圖4所示,本實(shí)施例在上述裝置實(shí)施例一的基礎(chǔ)上,進(jìn)一步增加了分類模塊45。
[0056]掃描模塊41,用于掃描源代碼;
[0057]檢測(cè)模塊42,用于檢測(cè)所述源代碼中是否存在缺陷;
[0058]確定模塊43,用于若所述源代碼中存在缺陷,則確定所述缺陷是否為已確認(rèn)過的誤報(bào)缺陷;
[0059]顯示模塊44,用于若所述缺陷不是已確認(rèn)過的誤報(bào)缺陷,則將所述缺陷顯示給用戶,以供用戶進(jìn)行確認(rèn)或修改;
[0060]拒絕模塊46,用于若所述缺陷是已確認(rèn)過的誤報(bào)缺陷,則拒絕讓所述顯示模塊44將所述缺陷顯示給用戶。
[0061]進(jìn)一步地,所述確定模塊43,具體用于確定所述缺陷是否存在于誤報(bào)缺陷庫(kù)中,所述誤報(bào)缺陷庫(kù)存儲(chǔ)有所述用戶已確認(rèn)過的誤報(bào)缺陷;若存在,則確定所述缺陷為已確認(rèn)過的誤報(bào)缺陷;若不存在,則確定所述缺陷為未確認(rèn)過的缺陷。
[0062]進(jìn)一步地,所述裝置,還包括:
[0063]分類模塊45,用于在確定所述缺陷是否為已確認(rèn)過的誤報(bào)缺陷之前,根據(jù)預(yù)設(shè)條件對(duì)檢測(cè)到的缺陷進(jìn)行分類,得到各類型的缺陷;
[0064]相應(yīng)地,所述確定模塊43,還用于確定各類型的缺陷是否為已確認(rèn)過的同屬于該類型的誤報(bào)缺陷。
[0065]進(jìn)一步地,所述預(yù)設(shè)條件包含下述條件中的至少一種:
[0066]各缺陷處對(duì)應(yīng)的變量是否是不同的變量;
[0067]各缺陷從所述對(duì)應(yīng)的變量所在當(dāng)前節(jié)點(diǎn)到所在定義節(jié)點(diǎn)的前向蹤跡是否相似;
[0068]各缺陷處的缺陷特征是否一致。
[0069]本實(shí)施例所述的裝置用于執(zhí)行方法實(shí)施例一和方法實(shí)施例二所述的方法步驟,其技術(shù)原理和產(chǎn)生的技術(shù)效果類似,這里不再累述。
[0070]需要說明的是:對(duì)于前述的各方法實(shí)施例,為了簡(jiǎn)單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本發(fā)明,某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作和模塊并不一定是本發(fā)明所必須的。
[0071]本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述方法實(shí)施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成,前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),執(zhí)行包括上述方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括:R0M、RAM、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
[0072]最后應(yīng)說明的是:以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精神和范圍。
【權(quán)利要求】
1.一種軟件缺陷檢測(cè)方法,其特征在于,包括: 掃描源代碼; 檢測(cè)所述源代碼中是否存在缺陷; 若所述源代碼中存在缺陷,則確定所述缺陷是否為已確認(rèn)過的誤報(bào)缺陷; 若所述缺陷不是已確認(rèn)過的誤報(bào)缺陷,則將所述缺陷顯示給用戶,以供用戶進(jìn)行確認(rèn)或修改; 若所述缺陷是已確認(rèn)過的誤報(bào)缺陷,則拒絕將所述缺陷顯示給用戶。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述確定所述缺陷是否為已確認(rèn)過的誤報(bào)缺陷,包括: 確定所述缺陷是否存在于誤報(bào)缺陷庫(kù)中,所述誤報(bào)缺陷庫(kù)存儲(chǔ)有所述用戶已確認(rèn)過的誤報(bào)缺陷; 若存在,則確定所述缺陷為已確認(rèn)過的誤報(bào)缺陷; 若不存在,則確定所述缺陷為未確認(rèn)過的缺陷。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,在所述確定所述缺陷是否為已確認(rèn)過的誤報(bào)缺陷之前,還包括: 根據(jù)預(yù)設(shè)條件對(duì)檢測(cè)到的缺陷進(jìn)行分類,得到各類型的缺陷; 相應(yīng)地,所述確定所述缺陷是否為已確認(rèn)過的誤報(bào)缺陷,包括: 確定各類型的缺陷是否為已確認(rèn)過的同屬于該類型的誤報(bào)缺陷。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述預(yù)設(shè)條件包含下述條件中的至少一種: 各缺陷處對(duì)應(yīng)的變量是否是不同的變量; 各缺陷從所述對(duì)應(yīng)的變量所在當(dāng)前節(jié)點(diǎn)到所在定義節(jié)點(diǎn)的前向蹤跡是否相似; 各缺陷處的缺陷特征是否一致。
5.一種軟件缺陷檢測(cè)裝置,其特征在于,包括: 掃描模塊,用于掃描源代碼; 檢測(cè)模塊,用于檢測(cè)所述源代碼中是否存在缺陷; 確定模塊,用于若所述源代碼中存在缺陷,則確定所述缺陷是否為已確認(rèn)過的誤報(bào)缺陷; 顯示模塊,用于若所述缺陷不是已確認(rèn)過的誤報(bào)缺陷,則將所述缺陷顯示給用戶,以供用戶進(jìn)行確認(rèn)或修改; 拒絕模塊,用于若所述缺陷是已確認(rèn)過的誤報(bào)缺陷,則拒絕讓所述顯示模塊將所述缺陷顯示給用戶。
6.根據(jù)權(quán)利要求5所述的裝置,其特征在于,所述確定模塊,具體用于確定所述缺陷是否存在于誤報(bào)缺陷庫(kù)中,所述誤報(bào)缺陷庫(kù)存儲(chǔ)有所述用戶已確認(rèn)過的誤報(bào)缺陷;若存在,則確定所述缺陷為已確認(rèn)過的誤報(bào)缺陷;若不存在,則確定所述缺陷為未確認(rèn)過的缺陷。
7.根據(jù)權(quán)利要求5或6所述的裝置,其特征在于,還包括: 分類模塊,用于在確定所述缺陷是否為已確認(rèn)過的誤報(bào)缺陷之前,根據(jù)預(yù)設(shè)條件對(duì)檢測(cè)到的缺陷進(jìn)行分類,得到各類型的缺陷; 相應(yīng)地,所述確定模塊,還用于確定各類型的缺陷是否為已確認(rèn)過的同屬于該類型的誤報(bào)缺陷。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述預(yù)設(shè)條件包含下述條件中的至少一種: 各缺陷處對(duì)應(yīng)的變量是否是不同的變量; 各缺陷從所述對(duì)應(yīng)的變量所在當(dāng)前節(jié)點(diǎn)到所在定義節(jié)點(diǎn)的前向蹤跡是否相似; 各缺陷處的缺陷特征是否一致。
【文檔編號(hào)】G06F11/36GK103970657SQ201410196027
【公開日】2014年8月6日 申請(qǐng)日期:2014年5月9日 優(yōu)先權(quán)日:2014年5月9日
【發(fā)明者】楊學(xué)紅 申請(qǐng)人:中國(guó)聯(lián)合網(wǎng)絡(luò)通信集團(tuán)有限公司