[發明專利]一種檢測代碼異常的方法和裝置在審
| 申請號: | 202110643409.5 | 申請日: | 2021-06-09 |
| 公開(公告)號: | CN113342657A | 公開(公告)日: | 2021-09-03 |
| 發明(設計)人: | 楊澤偉 | 申請(專利權)人: | 網易(杭州)網絡有限公司 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 北京潤澤恒知識產權代理有限公司 11319 | 代理人: | 吳文心 |
| 地址: | 310052 浙江省杭州*** | 國省代碼: | 浙江;33 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 檢測 代碼 異常 方法 裝置 | ||
本發明實施例提供了一種檢測代碼異常的方法及裝置,所述方法包括:獲取項目文件的初始源代碼,識別初始源代碼中的初始異步代碼塊,然后為初始異步代碼塊添加異常捕獲代碼,生成目標異步代碼塊,其中,異常捕獲代碼可以用于捕獲項目文件運行過程中的異常狀態,然后可以將目標異步代碼塊替換初始源代碼中的初始異步代碼塊,生成目標源代碼,得到新的項目文件,從而通過對異步代碼塊添加異常捕獲代碼實現在項目文件中添加異常捕獲機制,使得項目文件在運行過程中,異常捕獲代碼可以對其運行過程中出現的異常狀態進行捕獲,進而實現快速對代碼的異常狀態進行定位,不僅可以實現全局的異常狀態檢測,而且可以有效降低代碼異常排查的時間。
技術領域
本發明涉及數據處理技術領域,特別是涉及一種檢測代碼異常的方法和一種檢測代碼異常的裝置。
背景技術
對于許多前端開發者而言,在編碼時并不會注重腳本執行過程中的異常捕獲,因此在頁面出現問題時,很難定位異常出現的位置。開發者們常用的是使用console.log()這種比較基礎的調試方式逐個位置打印日志從而判斷問題所在,或通過windows監聽全局代碼的執行過程,從而捕獲異常狀態。
通過上述方式雖然能夠捕獲異常狀態的信息,但是上述方式只能捕獲同步代碼的異常代碼,而無法捕獲異步代碼的異常狀態。然而,隨著ES6標準的廣泛使用,async/await異步語法得到了前端開發者的青睞。其使書寫異步代碼變得像書寫同步代碼那樣方便,消除了由于多層嵌套而引發地獄回調問題,使整體代碼的可閱讀性和可維護性變得更強。雖然async/await能將異步代碼寫成同步代碼的形式,但其本質上依舊是異步代碼,因此仍然無法通過window.onerror事件捕獲異常信息。可見,對于當前異步代碼的編寫過程中,存在著無法有效捕獲異常信息,異常狀態獲取的全面性低的問題,且由于async/await的書寫代碼同步化的方式容易讓開發者認為是同步代碼,導致忽略或忘記添加異常捕獲機制,無法對代碼異常進行有效地定位。
發明內容
本發明實施例是提供一種檢測代碼異常的方法、裝置、電子設備以及計算機可讀存儲介質,以解決或部分解決現有技術中無法有效對代碼的異常進行定位、定位全面性低的問題。
本發明實施例公開了一種檢測代碼異常的方法,包括:
獲取項目文件的初始源代碼;
識別所述初始源代碼中的初始異步代碼塊;
為所述初始異步代碼塊添加異常捕獲代碼,生成目標異步代碼塊,所述異常捕捉代碼用于捕獲所述項目文件運行過程中的異常狀態;
將所述目標異步代碼塊替換所述初始源代碼中的初始異步代碼塊,生成目標源代碼。
可選地,還包括:
根據所述異常捕獲代碼對所述目標源代碼運行過程中出現的異常狀態進行定位,生成與所述異常狀態匹配的異常結果。
可選地,所述識別所述初始源代碼中的初始異步代碼塊,包括:
對所述初始源代碼進行分詞,獲得兩個以上的Token對象;
遍歷每個所述Token對象,基于抽象語法樹對每個所述Token對象進行解析,得到初始異步代碼塊。
可選地,所述遍歷每個所述Token對象,基于抽象語法樹對每個所述Token對象進行解析,得到初始異步代碼塊,包括:
遍歷每個所述Token對象,基于抽象語法樹對每個所述Token對象進行解析,提取包含異步函數的代碼作為初始異步代碼塊。
可選地,所述異常捕獲代碼包含針對所述初始異步代碼塊的開發信息。
可選地,所述開發信息包含以下至少一種:所述項目文件的路徑、所述初始異步代碼塊的起始行數和起始列數、開發者信息、編碼時間、版本信息。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于網易(杭州)網絡有限公司,未經網易(杭州)網絡有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202110643409.5/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種接線端子的接線盒
- 下一篇:一種基于音頻對象的沉浸聲混音制作方法





