[發明專利]代碼穩定性檢測方法及裝置在審
| 申請號: | 201410449768.7 | 申請日: | 2014-09-04 |
| 公開(公告)號: | CN105468509A | 公開(公告)日: | 2016-04-06 |
| 發明(設計)人: | 徐會卿;張翔 | 申請(專利權)人: | 阿里巴巴集團控股有限公司 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 北京鴻德海業知識產權代理事務所(普通合伙) 11412 | 代理人: | 倪志華 |
| 地址: | 英屬開曼群島大開*** | 國省代碼: | 開曼群島;KY |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 代碼 穩定性 檢測 方法 裝置 | ||
【技術領域】
本申請涉及計算機技術領域,尤其涉及一種代碼穩定性檢測方法及裝置。
【背景技術】
代碼是指程序員利用開發工具所支持的語言編寫出來的源文件,是一組由字符、符號或信號碼元等以離散形式表示信息的明確的規則體系。隨著編程技術的發展,大多數功能都可以通過代碼實現。
在實際應用中,為確保代碼的穩定性和可用性等,在開發出代碼之后,通常還需要對其進行各種檢測,如靜態代碼檢測。現有技術存在以代碼中的函數為對象,驗證每個函數是否存在循環調用語句的靜態檢測方法。例如,該方法會檢測函數中是否存在類似while(true)這樣的初始化死循環語句,或者檢測是否存在類似for(;;)這樣的無限循環語句等,來判斷函數是否存在錯誤。
由于現有這種代碼穩定性檢測方法僅局限于代碼包含的函數內,因此在判定整個代碼的穩定性等級時準確度較低。
【發明內容】
本申請的多個方面提供一種代碼穩定性檢測方法及裝置,用以提高檢測代碼穩定性的準確度。
本申請的一方面,提供一種代碼穩定性檢測方法,包括:
對待檢測的代碼進行靜態分析,以確定所述代碼包含的函數和函數之間的調用關系;
根據所述代碼包含的函數和函數之間的調用關系,獲得所述代碼中存在的調用環路的個數;
根據所述調用環路的個數,確定所述代碼的穩定性等級。
本申請的另一方面,提供一種代碼穩定性檢測裝置,包括:
分析模塊,用于對待檢測的代碼進行靜態分析,以確定所述代碼包含的函數和函數之間的調用關系;
獲取模塊,用于根據所述代碼包含的函數和函數之間的調用關系,獲得所述代碼中存在的調用環路的個數;
確定模塊,用于根據所述調用環路的個數,確定所述代碼的穩定性等級。
在本申請中,通過對代碼進行靜態分析,確定代碼包含的函數以及函數之間的調用關系,基于代碼包含的函數以及函數之間的調用關系,確定代碼中存在的調用環路的個數,根據調用環路的個數確定代碼的穩定性等級。與現有函數內這種局部檢測方式相比,本申請是從全局角度發現函數之間的調用環路的個數,而不再局限于函數內的檢測,函數之間的調用環路可能導致代碼在運行時出現死循環,會嚴重影響代碼的穩定性,因此本申請根據調用環路的個數確定代碼的穩定性等級,可以極大的提高所確定的穩定性等級的準確度。
【附圖說明】
為了更清楚地說明本申請實施例中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本申請的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。
圖1為本申請一實施例提供的代碼穩定性檢測方法的流程示意圖;
圖2為本申請一實施例提供的步驟102的一種實施方法的流程示意圖;
圖3為本申請一實施例提供的第一函數調用圖的一種示意圖;
圖4為本申請一實施例提供的第二函數調用圖的一種示意圖;
圖5為本申請另一實施例提供的代碼穩定性檢測方法的流程圖;
圖6為本申請一實施例提供的代碼穩定性檢測裝置的結構示意圖;
圖7為本申請另一實施例提供的代碼穩定性檢測裝置的結構示意圖。
【具體實施方式】
為使本申請實施例的目的、技術方案和優點更加清楚,下面將結合本申請實施例中的附圖,對本申請實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本申請一部分實施例,而不是全部的實施例。基于本申請中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬于本申請保護的范圍。
圖1為本申請一實施例提供的代碼穩定性檢測方法的流程示意圖。如圖1所示,該方法包括:
101、對待檢測的代碼進行靜態分析,以確定該代碼包含的函數和函數之間的調用關系。
102、根據上述代碼包含的函數和函數之間的調用關系,確定代碼中存在的調用環路的個數。
103、根據上述調用環路的個數,確定代碼的穩定性等級。
本實施例的執行主體可以是代碼穩定性檢測裝置(后續簡稱為代碼檢測裝置),該裝置可以是任何具有一定處理能力的設備,例如可以是用戶終端、服務器或者代碼檢測專用設備等。
本實施例中待檢測的代碼可以是使用任何編程語言編寫的代碼,也可以是實現任何功能的代碼。編程語言可以是java、C、C++等。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于阿里巴巴集團控股有限公司,未經阿里巴巴集團控股有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410449768.7/2.html,轉載請聲明來源鉆瓜專利網。





