本發明專利技術公開了一種LPC靜態代碼檢查方法、裝置和系統,所述方法包括:獲取待檢查的LPC文件及公用頭文件;利用預先生成的詞法分析器和語法分析器對待檢查的LPC文件及公用頭文件進行詞法分析和語法分析,并構建所述LPC文件的抽象語法樹;遍歷所述抽象語法樹,從所述LPC文件中提取需要檢查的程序關鍵信息;其中,所述程序關鍵信息為預先設定的LPC信息類;對所述程序關鍵信息進行預處理;利用所述詞法分析器和所述語法分析器對預處理后的程序關鍵信息進行詞法分析和語法分析。采用本發明專利技術可實現完全脫離于游戲客戶端的LPC靜態代碼檢查,對LPC代碼的不同問題進行針對性的檢查,采用不同的檢查策略,提高代碼檢查的效率。
【技術實現步驟摘要】
本專利技術涉及軟件測試領域,尤其涉及一種LPC靜態代碼檢查方法和裝置。
技術介紹
靜態代碼檢查是指在不運行代碼的方式下,通過詞法分析、語法分析、控制流分析 等技術對程序代碼進行掃描,驗證代碼是否滿足規范性、安全性、可靠性、可維護性等指標 的一種代碼分析技術。靜態代碼檢查對于一個游戲項目來說是必要的,靜態代碼檢查能夠 發現編譯器不能發現的問題,也可以自定義一些檢查規范,來檢查代碼編寫中不規范、存在 安全隱患的地方。 LPC全稱LarsPensj6C,是由LarsPensj6在1989年根據C語言開發的編程語言, 主要是用來編寫MUD游戲,使用LPC語言開發的MUD游戲被稱為LPMUD。 現有的對LPC代碼進行靜態代碼檢查方法主要為基于游戲客戶端的LPC靜態代碼 檢查方法,該方法主要檢查LPC代碼中函數調用問題,檢查時依賴于游戲客戶端,在游戲運 行過程中,通過LPC語言編寫分析代碼提取出文件的所有函數調用,然后通過分析頭文件 替換函數調用中的宏定義,最后借助游戲引擎提供的函數查詢接口,完成函數調用問題的 檢查。
技術實現思路
上述現有技術主要存在以下缺點: 首先,該方法必須依賴于游戲客戶端才能運行,如果需要檢查其他分支的代碼就 必須關服并且重新編譯,使用起來非常不方便。此外,該方法檢查的問題比較單一,只能檢 查LPC語言中的函數調用問題。 本專利技術實施例的目的在于提供了一種LPC靜態代碼檢查方法、裝置和系統,實現 完全脫離于游戲客戶端的LPC靜態代碼檢查,對LPC代碼的不同問題進行針對性的檢查,提 高代碼檢查的效率。 為了實現上述目的,本專利技術實施例提供了一種LPC靜態代碼檢查方法,包括: 獲取待檢查的LPC文件及公用頭文件; 利用預先生成的詞法分析器和語法分析器對待檢查的LPC文件及公用頭文件進 行詞法分析和語法分析,并構建所述LPC文件的抽象語法樹; 遍歷所述抽象語法樹,從所述LPC文件中提取需要檢查的程序關鍵信息;其中,所 述程序關鍵信息為預先設定的LPC信息類; 對所述程序關鍵信息進行預處理; 利用所述詞法分析器和所述語法分析器對預處理后的程序關鍵信息進行詞法分 析和語法分析。 優選地,在所述利用預先生成的詞法分析器和語法分析器對待檢查的LPC文件及 公用頭文件進行詞法分析和語法分析之前,還包括: 根據預先編寫的LPC語法描述文件利用語言識別工具ANTLR生成所述詞法分析器 和所述語法分析器。 優選地,所述遍歷所述抽象語法樹,從所述LPC文件中提取需要檢查的程序關鍵 信息,具體為: 在對所述LPC文件進行語法分析并構建抽象語法樹的過程中,遍歷所述抽象語法 樹,從所述LPC文件中提取需要檢查的程序關鍵信息。 優選地,所述程序關鍵信息包括函數定義、函數聲明、宏定義函數和引擎函數中的 一種或多種組合。 優選地,所述對所述程序關鍵信息進行預處理,具體為: 判斷所述程序關鍵信息是否已被執行詞法分析和語法分析; 若是,則跳過所述程序關鍵信息; 若否,則對所述程序關鍵信息進行預處理。 優選地,所述對所述程序關鍵信息進行預處理,具體為: 對所述程序關鍵信息的進行展開。 優選地,在所述利用所述詞法分析器和所述語法分析器對預處理后的程序關鍵信 息進行詞法分析和語法分析之后,還包括: 對檢查結果進行顯示;其中,所述檢查結果包含出錯的分支、出錯的文件、出錯的 行號、出錯的信息、出錯文件的最后修改作者和出錯文件的最后修改時間中的一種或多種 組合。 優選地,所述LPC靜態代碼檢查方法還包括: 將所述檢查結果通過郵件發送到指定的郵箱。 優選地,所述獲取待檢查的LPC文件及公用頭文件,具體為: 接收待檢查文件的路徑或者目錄; 根據需要檢查的文件類型,從所述路徑或者目錄下查找LPC文件及公用頭文件, 形成待檢查文件的初步列表; 對所述初步列表中重復的文件進行去重處理,并根據預先設置的忽略文件列表對 所述初步列表中需要忽略的文件進行忽略處理,獲取所述待檢查的LPC文件及公用頭文 件。 本專利技術實施例提供了另一種LPC靜態代碼檢查方法,包括: 接收客戶端發送的對待檢查文件進行靜態代碼檢查的請求; 將與所述請求對應的靜態代碼檢查任務分發給代碼檢查服務器;觸發所述代碼檢 查服務器通過如前所述的LPC靜態代碼檢查方法對所述待檢查文件進行靜態代碼檢查。 優選地,所述將與所述請求對應的靜態代碼檢查任務分發給代碼檢查服務器,具 體為: 根據所述待檢查文件所屬的代碼倉庫的類型、所述待檢查文件所屬的代碼分支或 者所述靜態代碼檢查任務的類型,將所述靜態代碼檢查任務分發給不同的代碼檢查服務 器。 優選地,所述LPC靜態代碼檢查方法還包括: 通過公共網關接口定時輪詢所述代碼檢查服務器傳回的靜態代碼檢查日志,并對 輪詢的結果進行顯示。 優選地,所述LPC靜態代碼檢查方法還包括: 對檢查結果進行統計,并對統計的結果進行顯示。 相應地,本專利技術提供了第一種LPC靜態代碼檢查裝置,包括: 待檢查文件獲取模塊,用于獲取待檢查的LPC文件及公用頭文件; 第一檢查模塊,用于利用預先生成的詞法分析器和語法分析器對待檢查的LPC文 件及公用頭文件進行詞法分析和語法分析,并構建所述LPC文件的抽象語法樹; 關鍵信息提取模塊,用于遍歷所述抽象語法樹,從所述LPC文件中提取需要檢查 的程序關鍵信息;其中,所述程序關鍵信息為預先設定的LPC信息類; 關鍵信息預處理模塊,用于對所述程序關鍵信息進行預處理;和, 第二檢查模塊,用于利用所述詞法分析器和所述語法分析器對預處理后的程序關 鍵信息進行詞法分析和語法分析。 優選地,所述裝置還包括: 分析器生成模塊,用于根據預先編寫的LPC語法描述文件利用語言識別工具 ANTLR生成所述詞法分析器和所述語法分析器。 優選地,所述關鍵信息提取模塊包括: 提取單元,用于在對所述LPC文件進行語法分析并構建抽象語法樹的過程中,遍 歷所述抽象語法樹,從所述LPC文件中提取需要檢查的程序關鍵信息。 優選地,所述程序關鍵信息包括函數定義、函數聲明、宏定義函數和引擎函數中的 一種或多種組合。 優選地,所述關鍵信息預處理模塊包括: 判斷單元,用于判斷所述程序關鍵信息是否已被執行詞法分析和語法分析; 空操作單元,用于當所述程序關鍵信息已被執行詞法分析和語法分析時,跳過所 述程序關鍵信息; 預處理單元,用于對所述程序關鍵信息進行預處理。 優選地,所述關鍵信息預處理模塊包括: 預處理單元,用于對所述程序關鍵信息的進行展開。 優選地,所述裝置還包括: 結果顯示模塊,用于對檢查結果進行顯示;其中,所述檢查結果包含出錯的分支、 出錯的文件、出錯的行號、出錯的信息、出錯文件的最后修改作者和出錯文件的最后修改時 間中的一種或多種組合。 優選地,所述裝置還包括: 結果發送模塊,用于將所述檢查結果通過郵件發送到指定的郵箱。 優選地,所述當前第1頁1 2 3 4 5 本文檔來自技高網...
【技術保護點】
一種LPC靜態代碼檢查方法,其特征在于,包括:獲取待檢查的LPC文件及公用頭文件;利用預先生成的詞法分析器和語法分析器對待檢查的LPC文件及公用頭文件進行詞法分析和語法分析,并構建所述LPC文件的抽象語法樹;遍歷所述抽象語法樹,從所述LPC文件中提取需要檢查的程序關鍵信息;其中,所述程序關鍵信息為預先設定的LPC信息類;對所述程序關鍵信息進行預處理;利用所述詞法分析器和所述語法分析器對預處理后的程序關鍵信息進行詞法分析和語法分析。
【技術特征摘要】
【專利技術屬性】
技術研發人員:汪承佳,
申請(專利權)人:廣州博冠信息科技有限公司,
類型:發明
國別省市:廣東;44
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。