国产精品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>

      代碼穩(wěn)定性檢測方法及裝置的制造方法

      文檔序號:9708212閱讀:423來源:國知局
      代碼穩(wěn)定性檢測方法及裝置的制造方法
      【專利說明】
      【技術(shù)領(lǐng)域】
      [0001]本申請涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種代碼穩(wěn)定性檢測方法及裝置。
      【【背景技術(shù)】】
      [0002]代碼是指程序員利用開發(fā)工具所支持的語言編寫出來的源文件,是一組由字符、符號或信號碼元等以離散形式表示信息的明確的規(guī)則體系。隨著編程技術(shù)的發(fā)展,大多數(shù)功能都可以通過代碼實(shí)現(xiàn)。
      [0003]在實(shí)際應(yīng)用中,為確保代碼的穩(wěn)定性和可用性等,在開發(fā)出代碼之后,通常還需要對其進(jìn)行各種檢測,如靜態(tài)代碼檢測?,F(xiàn)有技術(shù)存在以代碼中的函數(shù)為對象,驗(yàn)證每個(gè)函數(shù)是否存在循環(huán)調(diào)用語句的靜態(tài)檢測方法。例如,該方法會檢測函數(shù)中是否存在類似while (true)這樣的初始化死循環(huán)語句,或者檢測是否存在類似for (;;)這樣的無限循環(huán)語句等,來判斷函數(shù)是否存在錯(cuò)誤。
      [0004]由于現(xiàn)有這種代碼穩(wěn)定性檢測方法僅局限于代碼包含的函數(shù)內(nèi),因此在判定整個(gè)代碼的穩(wěn)定性等級時(shí)準(zhǔn)確度較低。

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

      [0005]本申請的多個(gè)方面提供一種代碼穩(wěn)定性檢測方法及裝置,用以提高檢測代碼穩(wěn)定性的準(zhǔn)確度。
      [0006]本申請的一方面,提供一種代碼穩(wěn)定性檢測方法,包括:
      [0007]對待檢測的代碼進(jìn)行靜態(tài)分析,以確定所述代碼包含的函數(shù)和函數(shù)之間的調(diào)用關(guān)系;
      [0008]根據(jù)所述代碼包含的函數(shù)和函數(shù)之間的調(diào)用關(guān)系,獲得所述代碼中存在的調(diào)用環(huán)路的個(gè)數(shù);
      [0009]根據(jù)所述調(diào)用環(huán)路的個(gè)數(shù),確定所述代碼的穩(wěn)定性等級。
      [0010]本申請的另一方面,提供一種代碼穩(wěn)定性檢測裝置,包括:
      [0011]分析模塊,用于對待檢測的代碼進(jìn)行靜態(tài)分析,以確定所述代碼包含的函數(shù)和函數(shù)之間的調(diào)用關(guān)系;
      [0012]獲取模塊,用于根據(jù)所述代碼包含的函數(shù)和函數(shù)之間的調(diào)用關(guān)系,獲得所述代碼中存在的調(diào)用環(huán)路的個(gè)數(shù);
      [0013]確定模塊,用于根據(jù)所述調(diào)用環(huán)路的個(gè)數(shù),確定所述代碼的穩(wěn)定性等級。
      [0014]在本申請中,通過對代碼進(jìn)行靜態(tài)分析,確定代碼包含的函數(shù)以及函數(shù)之間的調(diào)用關(guān)系,基于代碼包含的函數(shù)以及函數(shù)之間的調(diào)用關(guān)系,確定代碼中存在的調(diào)用環(huán)路的個(gè)數(shù),根據(jù)調(diào)用環(huán)路的個(gè)數(shù)確定代碼的穩(wěn)定性等級。與現(xiàn)有函數(shù)內(nèi)這種局部檢測方式相比,本申請是從全局角度發(fā)現(xiàn)函數(shù)之間的調(diào)用環(huán)路的個(gè)數(shù),而不再局限于函數(shù)內(nèi)的檢測,函數(shù)之間的調(diào)用環(huán)路可能導(dǎo)致代碼在運(yùn)行時(shí)出現(xiàn)死循環(huán),會嚴(yán)重影響代碼的穩(wěn)定性,因此本申請根據(jù)調(diào)用環(huán)路的個(gè)數(shù)確定代碼的穩(wěn)定性等級,可以極大的提高所確定的穩(wěn)定性等級的準(zhǔn)確度。
      【【附圖說明】】
      [0015]為了更清楚地說明本申請實(shí)施例中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本申請的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
      [0016]圖1為本申請一實(shí)施例提供的代碼穩(wěn)定性檢測方法的流程示意圖;
      [0017]圖2為本申請一實(shí)施例提供的步驟102的一種實(shí)施方法的流程示意圖;
      [0018]圖3為本申請一實(shí)施例提供的第一函數(shù)調(diào)用圖的一種示意圖;
      [0019]圖4為本申請一實(shí)施例提供的第二函數(shù)調(diào)用圖的一種示意圖;
      [0020]圖5為本申請另一實(shí)施例提供的代碼穩(wěn)定性檢測方法的流程圖;
      [0021]圖6為本申請一實(shí)施例提供的代碼穩(wěn)定性檢測裝置的結(jié)構(gòu)示意圖;
      [0022]圖7為本申請另一實(shí)施例提供的代碼穩(wěn)定性檢測裝置的結(jié)構(gòu)示意圖。
      【【具體實(shí)施方式】】
      [0023]為使本申請實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本申請實(shí)施例中的附圖,對本申請實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本申請一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾堉械膶?shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本申請保護(hù)的范圍。
      [0024]圖1為本申請一實(shí)施例提供的代碼穩(wěn)定性檢測方法的流程示意圖。如圖1所示,該方法包括:
      [0025]101、對待檢測的代碼進(jìn)行靜態(tài)分析,以確定該代碼包含的函數(shù)和函數(shù)之間的調(diào)用關(guān)系。
      [0026]102、根據(jù)上述代碼包含的函數(shù)和函數(shù)之間的調(diào)用關(guān)系,確定代碼中存在的調(diào)用環(huán)路的個(gè)數(shù)。
      [0027]103、根據(jù)上述調(diào)用環(huán)路的個(gè)數(shù),確定代碼的穩(wěn)定性等級。
      [0028]本實(shí)施例的執(zhí)行主體可以是代碼穩(wěn)定性檢測裝置(后續(xù)簡稱為代碼檢測裝置),該裝置可以是任何具有一定處理能力的設(shè)備,例如可以是用戶終端、服務(wù)器或者代碼檢測專用設(shè)備等。
      [0029]本實(shí)施例中待檢測的代碼可以是使用任何編程語言編寫的代碼,也可以是實(shí)現(xiàn)任何功能的代碼。編程語目可以是java、C、C++等。
      [0030]在檢測代碼的穩(wěn)定性等級時(shí),代碼檢測裝置首先對代碼進(jìn)行靜態(tài)分析,以確定代碼包含的函數(shù)和函數(shù)之間的調(diào)用關(guān)系。靜態(tài)分析這種方法主要是對代碼的語法文件進(jìn)行分析,具體的,代碼檢測裝置可以使用靜態(tài)代碼掃描工具掃描待檢測的代碼,獲得代碼中每一個(gè)函數(shù),例如函數(shù)Foo(int,int),以及函數(shù)之間的調(diào)用關(guān)系。
      [0031 ] 可選的,待檢測的代碼可能位于至少一個(gè)代碼文件中,代碼檢測裝置可以逐個(gè)掃描代碼文件,獲取代碼文件中的代碼并進(jìn)行靜態(tài)分析。
      [0032]之后,代碼檢測裝置根據(jù)代碼包含的函數(shù)和函數(shù)之間的調(diào)用關(guān)系,確定代碼中存在的調(diào)用環(huán)路的個(gè)數(shù)。調(diào)用環(huán)路是指由至少一個(gè)函數(shù)形成的循環(huán)調(diào)用。例如,假設(shè)有四個(gè)函數(shù),分別為函數(shù)A、B、C和D,若A調(diào)用B,B調(diào)用C,C調(diào)用D,而D又調(diào)用A,在函數(shù)A、B、C和D之間形成一條調(diào)用環(huán)路。又例如,假設(shè)有兩個(gè)函數(shù),分別為函數(shù)F和G,若F調(diào)用G,G又調(diào)用F,則函數(shù)F和G之間形成一條調(diào)用環(huán)路。
      [0033]在一可選實(shí)施方式中,如圖2所示,上述步驟102的一種【具體實(shí)施方式】包括:
      [0034]1021、根據(jù)代碼包含的函數(shù)和函數(shù)之間的調(diào)用關(guān)系,生成第一函數(shù)調(diào)用圖;
      [0035]其中,第一函數(shù)調(diào)用圖實(shí)際上就是函數(shù)調(diào)用圖,為便于區(qū)分在前面冠以“第一”,該“第一”既沒有先后的限定,也沒有數(shù)量的限定。第一函數(shù)調(diào)用圖用于表示代碼包含的函數(shù)以及函數(shù)之間的調(diào)用關(guān)系。具體的,該第一函數(shù)調(diào)用圖包括節(jié)點(diǎn)和有向邊,第一函數(shù)調(diào)用圖中的節(jié)點(diǎn)表示代碼包含的函數(shù),即一個(gè)節(jié)點(diǎn)對應(yīng)一個(gè)函數(shù),節(jié)點(diǎn)的數(shù)目與代碼包含的函數(shù)的個(gè)數(shù)相同;第一函數(shù)調(diào)用圖中的有向邊表示該有向邊所連接的兩個(gè)節(jié)點(diǎn)所表示的兩個(gè)函數(shù)之間的調(diào)用關(guān)系,如果有向邊從一個(gè)節(jié)點(diǎn)指向另一個(gè)節(jié)點(diǎn),表示該節(jié)點(diǎn)所表示的函數(shù)調(diào)用另一個(gè)節(jié)點(diǎn)所表示的函數(shù)。如圖3所示,為本實(shí)施例給出的一種第一函數(shù)調(diào)用圖的結(jié)構(gòu)示意圖,圖3中的小圓圈表示節(jié)點(diǎn),兩個(gè)小圓圈之間的有向箭頭表示有向邊。
      [0036]1022、對第一函數(shù)調(diào)用圖進(jìn)行拓?fù)渑判蛱幚?,以獲得不包括入度為0的節(jié)點(diǎn)的第二函數(shù)調(diào)用圖。
      [0037]例如,一種對第一函數(shù)調(diào)用圖進(jìn)行拓?fù)渑判蛱幚淼倪^程包括:第一步:判斷第一函數(shù)調(diào)用圖中是否存在入度為0的節(jié)點(diǎn),如果存在,則執(zhí)行第二步,如果不存在,則將第一函數(shù)調(diào)用圖直接作為第二函數(shù)調(diào)用圖,并結(jié)束操作;第二步:將入度為0的節(jié)點(diǎn)以及由該節(jié)點(diǎn)發(fā)出的有向邊全部刪除,并返回繼續(xù)執(zhí)行第一步以及第二步,直到不存在入度為0的節(jié)點(diǎn)為止,將此時(shí)的函數(shù)調(diào)用圖作為第二函數(shù)調(diào)用圖。結(jié)合圖3所示的第一函數(shù)調(diào)用圖,則得到的第二函數(shù)調(diào)用圖的結(jié)構(gòu)如圖4所示,包括兩個(gè)調(diào)用環(huán)路。
      [0038]1023、判斷第二函數(shù)調(diào)用圖中是否存在節(jié)點(diǎn);如果是,則執(zhí)行步驟1024 ;如果否,則執(zhí)行步驟1025。
      [0039]結(jié)合圖4所示第二函數(shù)調(diào)用圖,該調(diào)用圖中有節(jié)點(diǎn),包括兩個(gè)調(diào)用環(huán)路。
      [0040]1024、對第二函數(shù)調(diào)用圖進(jìn)行深度優(yōu)先搜索(Deep First Search, DFS)遍歷,以獲得遍歷第二函數(shù)調(diào)用圖中所有節(jié)點(diǎn)需要的DFS遍歷次數(shù),并確定該DFS遍歷次數(shù)為調(diào)用環(huán)路的個(gè)數(shù)。
      [0041]其中,DFS遍歷算法屬于現(xiàn)有技術(shù),在此不再贅述。結(jié)合圖4,需要進(jìn)行兩次DFD遍歷,所以調(diào)用環(huán)路的個(gè)數(shù)為2。
      [0042]值得說明的是,DFS遍歷出的調(diào)用環(huán)路之間不存在相同節(jié)點(diǎn)。
      [0043]1025、確定調(diào)用環(huán)路的個(gè)數(shù)為0。
      [0044
      當(dāng)前第1頁1 2 3 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1