[發明專利]代碼的靜態檢測方法和裝置有效
| 申請號: | 202011496871.9 | 申請日: | 2020-12-17 |
| 公開(公告)號: | CN112527660B | 公開(公告)日: | 2022-11-22 |
| 發明(設計)人: | 凡志明;莊劼;韓俊波 | 申請(專利權)人: | 展訊通信(上海)有限公司 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 北京同立鈞成知識產權代理有限公司 11205 | 代理人: | 張娜;臧建明 |
| 地址: | 201203 上海市浦東新區中國(上*** | 國省代碼: | 上海;31 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 代碼 靜態 檢測 方法 裝置 | ||
本申請實施例提供了一種代碼的靜態檢測方法和裝置,在對軟件系統中的至少兩個工程對應的代碼進行編譯時,若檢測到新的對象,新的對象為新的外部聲明和/或新的原型聲明,則在數據庫中檢索是否存在與新的全局變量的變量名相同的原型聲明,和/或,是否存在與新的函數的函數名相同的原型聲明時,若存在與新的全局變量的變量名相同的原型聲明,和/或,與新的函數的函數名相同的原型聲明,則輸出與新的全局變量的變量名相同的原型聲明,和/或,與新的函數的函數名相同的原型聲明,這樣可以有效地檢測出具有相同的函數名或者全局變量的對象,從而解決了因軟件系統中包括兩個相同函數名或者全局變量的對象導致程序出現運行錯誤的問題。
技術領域
本發明涉及計算機技術領域,尤其涉及一種代碼的靜態檢測方法和裝置。
背景技術
對于一個大型的軟件產品而言,其包含至少兩個以上的工程。其中,每一個工程均可以根據實際需求定義所需的函數或者全局變量,這樣可能存在兩個工程具有相同的函數名或者全局變量。
例如,工程A定義了一個函數,工程B引用工程A定義的函數,該種情況可以認為工程A和工程B具有相同的函數名;但在該種情況下,若工程A后續又修改了函數的函數類型或者返回類型,則會導致工程B的程序運行出現錯誤;或者,工程A定義了一個函數,工程B也定義了一個具有相同函數名的函數,但函數類型與工程A定義的函數類型不同,該種情況也可以認為工程A和工程B具有相同的函數名;在該種情況下,若工程C引用了該函數,但由于工程A和工程B均定義有該函數,則同樣會導致工程C的程序運行出現錯誤。
因此,如何有效地檢測出具有相同的函數名或者全局變量的對象,以解決因軟件系統中包括兩個相同函數名或者全局變量的對象導致程序出現運行錯誤的問題,是本領域技術人員亟待解決的問題。
發明內容
本發明實施例提供了一種代碼的靜態檢測方法和裝置,可以有效地檢測出具有相同的函數名或者全局變量的對象,從而解決了因軟件系統中包括兩個相同函數名或者全局變量的對象導致程序出現運行錯誤的問題。
第一方面,本申請實施例提供了一種代碼的靜態檢測方法,該代碼的靜態檢測方法可以包括:
在對軟件系統中的至少兩個工程對應的代碼進行編譯時,檢測是否存在新的對象;其中,所述新的對象為新的外部聲明和/或新的原型聲明,所述聲明包括全局變量和/或函數。
若存在所述新的對象,則在數據庫中檢索是否存在與新的全局變量的變量名相同的原型聲明,和/或,與新的函數的函數名相同的原型聲明,所述數據庫中存儲有所述至少兩個工程對應的已編譯代碼中的原型聲明。
若存在,則輸出與所述新的全局變量的變量名相同的原型聲明和/或與所述新的函數的函數名相同的原型聲明。
在一種可能的實現方式中,所述代碼的靜態檢測方法還可以包括:
若所述數據庫中不存在與所述新的全局變量的變量名相同的原型聲明,則將所述新的全局變量存儲在所述數據庫中;和/或,
若所述數據庫中不存在與所述新的函數的函數名相同的原型聲明,則將所述新的函數存儲在所述數據庫中。
在一種可能的實現方式中,所述聲明為全局變量,所述方法還包括:
判斷所述新的全局變量的變量類型和所述數據庫中與所述新的全局變量相同的原型聲明的變量類型是否相同。
若變量類型相同,則輸出第一提示信息,所述第一提示信息用于提醒用戶已調用其他工程的全局變量。
若變量類型不同,則輸出第二提示信息,所述第二提示信息用于提醒用戶重新定義所述新的全局變量。
在一種可能的實現方式中,所述對象為函數,所述方法還包括:
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于展訊通信(上海)有限公司,未經展訊通信(上海)有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202011496871.9/2.html,轉載請聲明來源鉆瓜專利網。





