一種分布式代碼檢測方法
【專利摘要】本發(fā)明涉及一種分布式代碼檢測方法,所述方法通過檢測系統(tǒng)檢測;所述方法包括以下步驟:初始化參數(shù);分析函數(shù)引用;整合數(shù)據(jù)流;分解約束集;回溯結果。所述檢測系統(tǒng)包括控制端和分布式終端。所述控制端對各分布式終端E的管理,同時提供測試系統(tǒng)代碼整體的預處理并分配給分布式終端E進行協(xié)處理;所述分布式終端負責對所分配的代碼進行檢測處理。本發(fā)明的方法通過將數(shù)據(jù)流進行分解,使用不同的分布式終端進行協(xié)同處理,降低原有單一設備處理的檢測負載問題,提升處理代碼的容量。
【專利說明】一種分布式代碼檢測方法
【技術領域】
:
[0001]本發(fā)明涉及一種代碼檢測方法,更具體涉及一種分布式代碼檢測方法。
【背景技術】
:
[0002]代碼檢測是白盒測試的一種靜態(tài)測試方法,是眾多軟件測試方法中發(fā)現(xiàn)軟件缺陷最有效的方法之一。代碼測試分為兩種分析方法:
[0003]1、靜態(tài)分析
[0004]靜態(tài)分析主要對源代碼進行詞法分析、語法分析,提取被分析程序的靜態(tài)信息,所提取的靜態(tài)信息是代碼缺陷檢測的基礎。靜態(tài)分析結果主要包括三部分信息:
[0005]程序定義信息:程序定義信息包含了程序中所有的定義和聲明信息,如類定義、方法和數(shù)據(jù)成員的定義、方法內局部變量的定義等。
[0006]程序結構信息:主要指方法內的控制流信息和方法間的調用關系。靜態(tài)分析器分析程序的語句分支、分支間的嵌套關系和方法調用,記錄方法的控制流信息和調用信息,構造語法樹。
[0007]分支內的變量操作:以方法控制流程中的分支為基本單元,記錄每一分支中各語句對各變量施加的操作和操作序列。
[0008]2、數(shù)據(jù)流分析
[0009]數(shù)據(jù)流分析也是一種靜態(tài)代碼檢查方法。它是在不通過計算機運行被測程序的條件下,利用預先進行靜態(tài)分析后獲取的信息,檢測對變量的賦值與使用操作中,是否存在不合理情況,即找出被測程序中是否存在變量在使用前未被賦值;變量在兩次賦值之間未被使用;一個變量在被賦值后是否未被使用等異常情況。
[0010]數(shù)據(jù)流分析目前的主要用途大多局限在編譯器的實現(xiàn)和優(yōu)化技術方面,而在代碼檢查系統(tǒng)中實用的數(shù)據(jù)流分析技術并不多見,主要集中在某幾種缺陷檢測上,如賦值引用異常檢測以及內存錯誤檢測,使用方式主要是定義數(shù)據(jù)流操作的符號,使用該符號系統(tǒng)構造數(shù)據(jù)流表達式(由數(shù)據(jù)操作符號構成的符號串),再分析該符號串來確定是否存在代碼缺陷。
[0011]故需要提出一種分布式代碼檢測方法,以克服上述缺陷。
【發(fā)明內容】
:
[0012]本發(fā)明的目的是提供一種分布式代碼檢測方法,所述方法針對數(shù)據(jù)流分析,提供高性能的分析方法。
[0013]為實現(xiàn)上述目的,本發(fā)明采用以下技術方案:一種分布式代碼檢測方法,所述方法通過檢測系統(tǒng)檢測;所述方法包括以下步驟:
[0014](I)初始化參數(shù);
[0015](2)分析函數(shù)引用;
[0016](3)整合數(shù)據(jù)流;
[0017](4)分解約束集;
[0018](5)回溯結果。
[0019]本發(fā)明提供的一種分布式代碼檢測方法,其特征在于:所述檢測系統(tǒng)包括控制端和分布式終端。
[0020]本發(fā)明提供的一種分布式代碼檢測方法,所述步驟(I)中的初始化參數(shù)為在所述主控端對所有代碼數(shù)據(jù)進行整理,整合所有分散文件中的代碼數(shù)據(jù)。
[0021]本發(fā)明提供的另一優(yōu)選的一種分布式代碼檢測方法,所述代碼數(shù)據(jù)通過主函數(shù)開始進行預處理。
[0022]本發(fā)明提供的再一優(yōu)選的一種所述的一種分布式代碼檢測方法,所述步驟(2)中的分析過程為遍歷檢索所有引用的外部函數(shù),并對其引用位置進行標記。
[0023]本發(fā)明提供的又一優(yōu)選的一種分布式代碼檢測方法,所述步驟(3)中的整合過程為對從主函數(shù)開始的所有數(shù)據(jù)流進行整合,形成約束集,并開始代碼檢測。
[0024]本發(fā)明提供的又一優(yōu)選的一種分布式代碼檢測方法,所述步驟(4)中的分解過程為包括以下步驟:
[0025]當新參數(shù)產生或遇到判斷語句,則根據(jù)新參數(shù)引入后的每個參數(shù)所處的數(shù)據(jù)流和判斷語句所產生的不同數(shù)據(jù)流分解出約束子集,并分配到不同的分布式終端進行代碼檢測;
[0026]當約束子集有新參數(shù)產生或遇到判斷語句,則根據(jù)新參數(shù)引入后的每個參數(shù)所處的數(shù)據(jù)流和判斷語句所產生的不同數(shù)據(jù)流分解出新的約束子集并分配給不同的分布式終端E進行處理。
[0027]本發(fā)明提供的又一優(yōu)選的一種分布式代碼檢測方法,當無法再分解的約束子集檢測結束后,則根據(jù)所述步驟(5)將結果回溯給分解前的約束子集提供后續(xù)處理,直到回溯到原約束集。
[0028]本發(fā)明提供的又一優(yōu)選的一種分布式代碼檢測方法,所述控制端對若干所述分布式終端進行控制。
[0029]本發(fā)明提供的又一優(yōu)選的一種分布式代碼檢測方法,所述控制端對各分布式終端E的管理,同時提供測試系統(tǒng)代碼整體的預處理并分配給分布式終端E進行協(xié)處理;
[0030]所述分布式終端負責對所分配的代碼進行檢測處理。
[0031 ] 和最接近的現(xiàn)有技術比,本發(fā)明提供技術方案具有以下優(yōu)異效果
[0032]1、本發(fā)明通過將數(shù)據(jù)流進行分解,使用不同的分布式終端進行協(xié)同處理;
[0033]2、本發(fā)明降低原有單一設備處理的檢測負載問題,提升處理代碼的容量;
[0034]3、本發(fā)明針對數(shù)據(jù)流分析,提供高性能的分析方法;
[0035]4、本發(fā)明減少檢測錯誤的產生;
[0036]5、本發(fā)明能夠較為準確的發(fā)現(xiàn)軟件缺陷。
【專利附圖】
【附圖說明】
[0037]圖1為本發(fā)明方法的約束集分解示意圖;
[0038]圖2為本發(fā)明的分布式代碼檢測技術邏輯圖;
[0039]圖3為本發(fā)明方法的流程圖。
【具體實施方式】
[0040]下面結合實施例對發(fā)明作進一步的詳細說明。
[0041]實施例1:
[0042]如圖1-3所示,本例的發(fā)明一種分布式代碼檢測方法,所述方法通過檢測系統(tǒng)檢測,如圖2所示;
[0043]所述包括控制端C和分布式終端E ;所述控制端C和分布式終端E相互之間進行代碼檢測的運作過程。
[0044]控制端C:主要負責對各分布式終端E的管理,同時提供系統(tǒng)代碼整體的預處理并分配給分布式終端E進行協(xié)處理。
[0045]分布式終端E:可以是一臺實際可運行的設備,也可以設備上的指定的一個處理線程。負責對所分配的代碼進行檢測處理。
[0046]針對一種分布式代碼檢測方法的處理流程參見圖3,為:
[0047]1、參數(shù)初始化
[0048]對所有參數(shù)進行初始化,首先在主控端C對所有代碼數(shù)據(jù)進行整理,整合所有分散文件中的代碼數(shù)據(jù)。然后通過主函數(shù)開始進行預處理。
[0049]2、函數(shù)引用分析
[0050]遍歷檢索所有引用的外部函數(shù),并對其引用位置進行標記,以便于所引用部分代碼分配給指定分布式終端時能夠及時傳遞被引用外部函數(shù)。
[0051]3、整合數(shù)據(jù)流
[0052]整合從主函數(shù)開始的所有數(shù)據(jù)流,形成約束集vl,開始代碼檢測工作。
[0053]4、約束集分解
[0054]對代碼進行逐條檢測過程中,如果有新參數(shù)產生或遇到if、switch等判斷語句,則根據(jù)新參數(shù)引入后的每參數(shù)所處數(shù)據(jù)流、判斷語句所產生的不同數(shù)據(jù)流分解出約束子集vl、v2……vk(圖1中僅以分解為vl、v2兩個約束子集為示例),分配到不同的分布式終端E1、E2……Ek中進行代碼檢測。
[0055]如果約束子集vl、v2......vk有新參數(shù)產生或遇到if、switch等判斷語句,則根據(jù)新參數(shù)引入后的每參數(shù)所處數(shù)據(jù)流、判斷語句所產生的不同數(shù)據(jù)流分解出新的約束子集并分配給不同的分布式終端E進行處理。
[0056]重復此動作,至自約束子集無法再分解。
[0057]5、結果回溯
[0058]當無法再分解的約束子集檢測結束后,則將結果回溯給分解前的約束子集提供后續(xù)處理,直到回溯到原約束集vl。
[0059]最后應當說明的是:以上實施例僅用以說明本發(fā)明的技術方案而非對其限制,所屬領域的普通技術人員盡管參照上述實施例應當理解:依然可以對本發(fā)明的【具體實施方式】進行修改或者等同替換,這些未脫離本發(fā)明精神和范圍的任何修改或者等同替換,均在申請待批的本發(fā)明的權利要求保護范圍之內。
【權利要求】
1.一種分布式代碼檢測方法,所述方法通過檢測系統(tǒng)檢測;其特征在于:所述方法包括以下步驟: (1)初始化參數(shù); (2)分析函數(shù)引用; (3)整合數(shù)據(jù)流; (4)分解約束集; (5)回溯結果。
2.如權利要求1所述的一種分布式代碼檢測方法,其特征在于:所述檢測系統(tǒng)包括控制端和分布式終端。
3.如權利要求2所述的一種分布式代碼檢測方法,其特征在于:所述步驟(I)中的初始化參數(shù)為在所述主控端對所有代碼數(shù)據(jù)進行整理,整合所有分散文件中的代碼數(shù)據(jù)。
4.如權利要求3所述的一種分布式代碼檢測方法,其特征在于:所述代碼數(shù)據(jù)通過主函數(shù)開始進行預處理。
5.如權利要求1-4任意一項所述的一種分布式代碼檢測方法,其特征在于:所述步驟(2)中的分析過程為遍歷檢索所有引用的外部函數(shù),并對其引用位置進行標記。
6.如權利要求5所述的一種分布式代碼檢測方法,其特征在于:所述步驟(3)中的整合過程為對從主函數(shù)開始的所有數(shù)據(jù)流進行整合,形成約束集,并開始代碼檢測。
7.如權利要求1所述的一種分布式代碼檢測方法,其特征在于:所述步驟(4)中的分解過程為包括以下步驟: 當新參數(shù)產生或遇到判斷語句,則根據(jù)新參數(shù)引入后的每個參數(shù)所處的數(shù)據(jù)流和判斷語句所產生的不同數(shù)據(jù)流分解出約束子集,并分配到不同的分布式終端進行代碼檢測; 當約束子集有新參數(shù)產生或遇到判斷語句,則根據(jù)新參數(shù)引入后的每個參數(shù)所處的數(shù)據(jù)流和判斷語句所產生的不同數(shù)據(jù)流分解出新的約束子集并分配給不同的分布式終端E進行處理。
8.如權利要求7所述的一種分布式代碼檢測方法,其特征在于:當無法再分解的約束子集檢測結束后,則根據(jù)所述步驟(5)將結果回溯給分解前的約束子集提供后續(xù)處理,直到回溯到原約束集。
9.如權利要求2所述的一種分布式代碼檢測方法,其特征在于:所述控制端對若干所述分布式終端進行控制。
10.如權利要求9所述的一種分布式代碼檢測方法,其特征在于:所述控制端對各分布式終端E的管理,同時提供測試系統(tǒng)代碼整體的預處理并分配給分布式終端E進行協(xié)處理; 所述分布式終端負責對所分配的代碼進行檢測處理。
【文檔編號】G06F11/36GK104331371SQ201410696785
【公開日】2015年2月4日 申請日期:2014年11月26日 優(yōu)先權日:2014年11月26日
【發(fā)明者】郭騫, 李尼格, 范杰, 高鵬, 余勇, 石聰聰, 蔣誠智, 俞庚申, 曹宛恬, 馮谷 申請人:國家電網公司, 中國電力科學研究院