新四季網

一種程序日誌檢測方法、推薦方法及各自對應的裝置製造方法

2023-04-29 03:41:51

一種程序日誌檢測方法、推薦方法及各自對應的裝置製造方法
【專利摘要】本發明公開了一種程序日誌檢測方法及裝置,包括:獲取程序中需要檢測的待測日誌輸出語句所在程序點、以及期望涵蓋的程序語句;判斷期望涵蓋的程序語句中每個被執行定值操作的變量是否均滿足第一條件且滿足第二條件,第一條件為該變量被執行定值操作後確定的定值可到達至少一條待測日誌輸出語句所在程序點,該程序點為可達程序點,第二條件為該變量在至少一個可達程序點處的待測日誌輸出程序語句中被引用;如果是,確定待測日誌輸出語句有效,否則,確定待測日誌輸出語句失效,實現了對程序中的日誌輸出語句檢測的目的。本發明還公開了一種程序日誌推薦方法及裝置,實現了輔助用戶為缺少或者無日誌輸出語句的程序推薦有效新日誌輸出語句的目的。
【專利說明】一種程序日誌檢測方法、推薦方法及各自對應的裝置

【技術領域】
[0001] 本發明涉及程序日誌領域,特別涉及一種程序日誌檢測方法、推薦方法及各自對 應的裝置。

【背景技術】
[0002] 在程序中添加日誌輸出語句是一種常用的輔助診斷程序錯誤的手段。藉助有效的 日誌輸出語句可以提高程序錯誤診斷率。
[0003] 目前,在程序中添加的日誌輸出語句主要由程序開發人員在開發過程中書寫。但 是,即使是具備良好編程素養的開發人員,其書寫的日誌也可能是有瑕疵的,經常導致在程 序運行出錯後修改或補充日誌輸出語句。
[0004] 而且,在程序運行出錯後才發現日誌不足對程序開發、調試過程帶來了不良影響, 降低了日誌輸出語句在程序中所起的輔助診斷錯誤的作用。


【發明內容】

[0005] 有鑑於此,本發明實施例的主要目的在於提供一種程序日誌檢測方法、推薦方法 及各自對應的裝置以實現對已有日誌輸出語句進行檢測以及推薦有效的新日誌輸出語句 的目的。
[0006] 為了解決以上技術問題,本發明實施例採取的技術方案是:
[0007] 第一方面,本發明實施例提供了一種程序日誌檢測方法,所述方法包括:
[0008] 獲取程序中需要檢測的待測日誌輸出語句所在程序點、以及期望涵蓋的程序語 句;
[0009] 判斷所述期望涵蓋的程序語句中每個被執行定值操作的變量是否均滿足第一條 件且滿足第二條件,所述第一條件為該變量被執行所述定值操作後確定的定值可到達至少 一條所述待測日誌輸出語句所在程序點,其中,所述至少一條待測日誌輸出語句所在程序 點為該變量的可達程序點,所述第二條件為該變量在至少一個該變量的可達程序點處的待 測日誌輸出程序語句中被引用;
[0010] 如果是,確定所述待測日誌輸出語句有效,否則,確定所述待測日誌輸出語句失 效。
[0011] 在第一方面的第一種可能的實現方式中,所述判斷期望涵蓋的程序語句中每個被 執行定值操作的變量是否均滿足第一條件且滿足第二條件包括:
[0012] 通過採用符號執行過程並調用約束求解工具確定所述程序語句中的可行路徑;
[0013] 根據所確定的可行路徑判斷每個在所述期望涵蓋的程序語句中被執行定值操作 的變量的定值是否可到達至少一條待測日誌輸出語句所在程序點,其中,所述至少一條待 測日誌輸出語句所在程序點為該變量的可達程序點,且在至少一個該變量的可達程序點處 的待測日誌輸出程序語句中被引用。
[0014] 在第一方面的第二種可能的實現方式中,所述判斷期望涵蓋的程序語句中每個被 執行定值操作的變量是否均滿足第一條件且滿足第二條件包括:
[0015] 針對每條待測日誌輸出語句執行查找步驟,其中所述查找步驟包括:求解期望涵 蓋的程序語句中,以所針對的待測日誌輸出語句所在程序點、及在所針對的待測日誌輸出 語句中被引用的變量集合為切片標準獲得的程序切片,將所述程序切片納入已查程序語句 集合;
[0016] 計算所述已查程序語句集合中所有程序語句的數量與期望涵蓋的程序語句的數 量的比例;
[0017] 如果所述比例在日誌相對強度範圍內,確定所述程序語句中每個被執行定值操作 的變量均滿足第一條件且滿足第二條件;
[0018] 如果所述比例未在日誌相對強度範圍內,確定所述程序語句中被執行定值操作的 變量中存在不滿足第一條件和/或者第二條件的變量。
[0019] 結合第一方面的第二種可能的實現方式,在第三種可能的實現方式中,在計算已 查程序語句集合中所有程序語句的數量與期望涵蓋的程序語句的數量的比例之前,還包 括:
[0020] 針對所述已查程序語句集合中的程序語句,採用符號執行過程並調用約束求解工 具,查找出已查程序語句集合中所有與待測日誌輸出語句所在程序點不存在可行路徑的程 序語句,將該程序語句從所述已查程序語句集合中排除。
[0021] 第二方面,本發明實施例提供了一種程序日誌檢測裝置,所述裝置包括:
[0022] 檢測獲取單元:用於獲取程序中需要檢測的待測日誌輸出語句所在程序點、以及 期望涵蓋的程序語句;
[0023] 檢測判斷單元:用於判斷所述期望涵蓋的程序語句中每個被執行定值操作的變量 是否均滿足第一條件且滿足第二條件,所述第一條件為該變量被執行所述定值操作後確定 的定值可到達至少一條所述待測日誌輸出語句所在程序點,其中,所述至少一條待測日誌 輸出語句所在程序點為該變量的可達程序點,所述第二條件為該變量在至少一個該變量的 可達程序點處的待測日誌輸出程序語句中被引用;
[0024] 檢測確定單元:用於如果檢測判斷單元判斷結果為是,確定所述待測日誌輸出語 句有效,否則,確定所述待測日誌輸出語句失效。
[0025] 在第二方面的第一種可能的實現方式中,判斷可行路徑子單元:用於通過採用符 號執行過程並調用約束求解工具確定所述程序語句中的可行路徑;
[0026] 判斷日誌語句子單元:用於根據所確定的可行路徑判斷每個在所述期望涵蓋的程 序語句中被執行定值操作的變量的定值是否可到達至少一條待測日誌輸出語句所在程序 點,其中,所述至少一條待測日誌輸出語句所在程序點為可達程序點,且在至少一個所述可 達程序點處的待測日誌輸出程序語句中被引用。
[0027] 在第二方面的第二種可能的實現方式中,所述檢測判斷單元包括:
[0028] 查找子單元:用於針對每條待測日誌輸出語句執行查找步驟,其中所述查找步驟 包括:求解期望涵蓋的程序語句中,以所針對的待測日誌輸出語句所在程序點、及在所針對 的待測日誌輸出語句中被引用的變量集合為切片標準獲得的程序切片,將所述程序切片納 入已查程序語句集合;
[0029] 計算子單元:用於計算所述已查程序語句集合中所有程序語句的數量與期望涵蓋 的程序語句的數量的比例;
[0030] 比例判斷子單元:用於如果所述比例在日誌相對強度範圍內,確定所述程序語句 中每個被執行定值操作的變量均滿足第一條件且滿足第二條件;如果所述比例未在日誌相 對強度範圍內,確定所述程序語句中被執行定值操作的變量中存在不滿足第一條件和/或 者第二條件的變量。
[0031] 結合第二方面的第二種可能的實現方式,在第三種可能的實現方式中,所述檢測 判斷單元還包括:
[0032] 排除子單元:用於在計算子單元計算已查程序語句集合中所有程序語句的數量與 期望涵蓋的程序語句的數量的比例之前,針對所述已查程序語句集合中的程序語句,採用 符號執行過程並調用約束求解工具查找出已查程序語句集合中所有與待測日誌輸出語句 所在程序點不存在可行路徑的程序語句,將該程序語句從所述已查程序語句集合中排除。
[0033] 第三方面,本發明實施例提供了一種程序日誌推薦方法,所述方法包括:
[0034] 獲取期望涵蓋的程序語句;
[0035] 提取期望涵蓋的程序語句中的至少一個程序點;
[0036] 提取出與所述程序點對應的變量,所述變量包括在所述程序點處活躍的變量,和/ 或者,用戶在所述程序點處指定的變量;
[0037] 將每個所提取的程序點各自作為一個待檢測日誌輸出語句所在程序點,以及,將 每個程序點對應的變量作為該程序點的待檢測日誌輸出語句引用的變量;
[0038] 判斷期望涵蓋的程序語句中每個被執行定值操作的變量是否均滿足第一條件且 滿足第二條件,所述第一條件為該變量被執行所述定值操作後確定的定值可到達至少一條 所述待測日誌輸出語句所在程序點,其中,所述至少一條待測日誌輸出語句所在程序點為 該變量的可達程序點,所述第二條件為該變量在至少一個該變量的可達程序點處的待測日 志輸出程序語句中被引用;
[0039] 如果是,推薦在所述待測日誌輸出語句所在程序點插入所述待測日誌輸出語句。
[0040] 在第三方面的第一種可能的實現方式中,所述獲取期望涵蓋的程序語句包括:
[0041] 如果所述程序中已存在日誌輸出語句,針對每個在所述程序語句中被執行定值操 作的變量,判斷該變量的定值是否可到達至少一條已存在的日誌輸出語句所在程序點,其 中,所述至少一條已存在的日誌輸出語句所在程序點為該變量的可達已存程序點,且該變 量在至少一個該變量的可達已存程序點處的日誌輸出程序語句中被引用,如果否,將該執 行定值操作的程序語句納入期望涵蓋的程序語句;
[0042] 如果所述程序中不存在日誌輸出語句,將所述程序中的所有程序語句納入期望涵 蓋的程序語句。
[0043] 在第三方面的第二種可能的實現方式中,還包括:
[0044] 如果期望涵蓋的程序語句中被執行定值操作的變量不滿足第一條件和/或者不 滿足第二條件,提取新程序點,返回到提取出與所述程序點對應的變量的步驟。
[0045] 結合第三方面的第一種可能的實現方式至第二種可能的實現方式中的任一種,在 第三種可能的實現方式中所述判斷期望涵蓋的程序語句中每個被執行定值操作的變量是 否均滿足第一條件且滿足第二條件包括:
[0046] 針對每條待測日誌輸出語句執行查找步驟,其中所述查找步驟包括:求解期望涵 蓋的程序語句中,以所針對的待測日誌輸出語句所在程序點、及在所針對的待測日誌輸出 語句中被引用的變量集合為切片標準獲得的程序切片,將所述程序切片納入已查程序語句 集合;
[0047] 計算所述已查程序語句集合中所有程序語句的數量與期望涵蓋的程序語句的數 量的比例;
[0048] 如果所述比例在日誌相對強度範圍內,確定所述程序語句中每個被執行定值操作 的變量均滿足第一條件且滿足第二條件;
[0049] 如果所述比例未在日誌相對強度範圍內,確定所述程序語句中被執行定值操作的 變量中存在不滿足第一條件和/或者第二條件的變量。
[0050] 結合第三方面的第三種可能的實現方式,在第四種可能的實現方式中,在計算已 查程序語句集合中所有程序語句的數量與期望涵蓋的程序語句的數量的比例之前,還包 括:
[0051] 針對所述已查程序語句集合中的程序語句,採用符號執行過程並調用約束求解工 具,查找出已查程序語句集合中所有與待測日誌輸出語句所在程序點不存在可行路徑的程 序語句,將該程序語句從所述已查程序語句集合中排除。
[0052] 結合第三方面第三種可能的實現方式,在第五種可能的實現方式中,如果所述比 例在日誌相對強度範圍內,還將所述比例作為日誌相對強度範圍的下限,更新所述日誌相 對強度範圍;
[0053] 所述推薦在所述待測日誌輸出語句所在程序點插入待測日誌輸出語句包括:
[0054] 將該待測日誌輸出語句所在程序點及被該待測日誌輸出語句引用的變量記錄在 一條日誌推薦提示中;
[0055] 判斷是否還繼續進行推薦檢測;
[0056] 如果是,提取新程序點,返回到提取出與所述程序點對應的變量的步驟;
[0057] 如果否,反饋最後記錄的一條日誌推薦提示。
[0058] 在第三方面第六種可能的實現方式中,還包括:
[0059] 如果已根據所述推薦在程序中插入了日誌輸出語句,將所述程序中所有程序語句 作為期望涵蓋的程序語句,將所述程序中所有日誌輸出語句作為待測日誌輸出語句,並判 斷期望涵蓋的程序語句中每個被執行定值操作的變量是否均滿足第一條件且滿足第二條 件,如果不滿足,返回到獲取期望涵蓋的程序語句的步驟。
[0060] 第四方面,本發明實施例提供了一種程序日誌推薦裝置,所述裝置包括:
[0061] 程序語句獲取單元:用於獲取期望涵蓋的程序語句;
[0062] 推薦位置提取單元:用於提取所述期望涵蓋的程序語句中的至少一個程序點; [0063] 推薦變量提取單元:用於提取出與所述程序點對應的變量,所述變量包括在所述 程序點處活躍的變量,和/或者,用戶在所述程序點處指定的變量;
[0064] 待測日誌獲取單元:用於將每個所提取的程序點各自作為一個待檢測日誌輸出語 句所在程序點,以及,將每個程序點對應的變量作為該程序點的待檢測日誌輸出語句引用 的變量;
[0065] 推薦判斷單元:用於判斷期望涵蓋的程序語句中每個被執行定值操作的變量是否 均滿足第一條件且滿足第二條件,所述第一條件為該變量被執行所述定值操作後確定的定 值可到達至少一條所述待測日誌輸出語句所在程序點,其中,所述至少一條待測日誌輸出 語句所在程序點為該變量的可達程序點,所述第二條件為該變量在至少一個該變量的可達 程序點處的待測日誌輸出程序語句中被引用;
[0066] 推薦確定單元:用於如果推薦判斷單元判斷結果為是,推薦在所述待測日誌輸出 語句所在程序點插入所述待測日誌輸出語句。
[0067] 在第四方面的第一種可能的實現方式中,所述程序語句獲取單元:用於如果所述 程序中已存在日誌輸出語句,針對每個在所述程序語句中被執行定值操作的變量,判斷該 變量的定值是否可到達至少一條已存在的日誌輸出語句所在程序點,其中,所述至少一條 已存在的日誌輸出語句所在程序點為可達已存程序點,且該變量在至少一個所述可達已存 程序點處的日誌輸出程序語句中被引用,如果否,將該執行定值操作的程序語句納入期望 涵蓋的程序語句;如果所述程序中不存在日誌輸出語句,將所述程序中的所有程序語句納 入期望涵蓋的程序語句。
[0068] 在第四方面的第二種可能的實現方式中,還包括:
[0069] 重新推薦單元:用於如果期望涵蓋的程序語句中被執行定值操作的變量不滿足第 一條件或者不滿足第二條件,提取新程序點,重新觸發推薦變量提取單元。
[0070] 結合第四方面的第一種可能的實現方式至第二種可能的實現方式中的任一種,所 述推薦判斷單元包括:
[0071] 查找子單元:用於針對每條待測日誌輸出語句執行查找步驟,其中所述查找步驟 包括:求解期望涵蓋的程序語句中,以所針對的待測日誌輸出語句所在程序點、及在所針對 的待測日誌輸出語句中被引用的變量集合為切片標準獲得的程序切片,將所述程序切片納 入已查程序語句集合;
[0072] 計算子單元:用於計算所述已查程序語句集合中所有程序語句的數量與期望涵蓋 的程序語句的數量的比例;
[0073] 比例判斷子單元:用於如果所述比例在日誌相對強度範圍內,確定所述程序語句 中每個被執行定值操作的變量均滿足第一條件且滿足第二條件;如果所述比例未在日誌相 對強度範圍內,確定所述程序語句中被執行定值操作的變量中存在不滿足第一條件和/或 者第二條件的變量。
[0074] 結合第四方面的第三種可能的實現方式,在第四種可能的實現方式中,所述推薦 判斷單元還包括:
[0075] 排除子單元:用於在計算子單元計算已查程序語句集合中所有程序語句的數量與 期望涵蓋的程序語句的數量的比例之前,針對所述已查程序語句集合中的程序語句,採用 符號執行過程並調用約束求解工具,查找出已查程序語句集合中所有與待測日誌輸出語句 所在程序點不存在可行路徑的程序語句,將該程序語句從所述已查程序語句集合中排除。
[0076] 結合第四方面第三種可能的實現方式,在第五種可能的實現方式中,所述比例判 斷子單元:還用於如果所述比例在日誌相對強度範圍內,將所述比例作為日誌相對強度範 圍的下限,更新所述日誌相對強度範圍;
[0077] 所述推薦確定單元包括:
[0078] 推薦記錄子單元:用於將該待測日誌輸出語句所在程序點及被該待測日誌輸出語 句引用的變量記錄在一條日誌推薦提示中;
[0079] 繼續判斷子單元:用於判斷是否還繼續進行推薦檢測;
[0080] 繼續確定子單元:用於如果繼續判斷子單元判斷結果為是時,提取新程序點,重新 觸發推薦變量提取單元;
[0081] 反饋推薦子單元:用於如果繼續判斷子單元判斷結果為否時,反饋最後記錄的一 條日誌推薦提示。
[0082] 在第四方面第六種可能的實現方式中,還包括:
[0083] 綜合檢測單元:用於如果已根據所述推薦在程序中插入了日誌輸出語句,將所述 程序中所有程序語句作為期望涵蓋的程序語句,將所述程序中所有日誌輸出語句作為待測 日誌輸出語句,並判斷期望涵蓋的程序語句中每個被執行定值操作的變量是否均滿足第一 條件且滿足第二條件,如果不滿足,重新觸發程序語句獲取單元執行。
[0084] 可見本發明具有如下有益效果:
[0085] 程序中有效的日誌輸出語句應該將被執行定值操作的變量在被更新之前輸出,使 用戶根據輸出的值確定執行該定值操作的程序語句是否正確,根據這一原則,本發明實施 例提供的程序日誌檢測方法在獲取程序中需要檢測的待測日誌輸出語句所在程序點、被待 測日誌輸出語句引用的變量、以及期望涵蓋的程序語句之後,判斷程序語句中每個被執行 定值操作的變量是否均滿足第一條件且滿足第二條件,所述第一條件為所述變量的定值可 到達所述待測日誌輸出語句中的至少一條日誌輸出語句所在程序點,其中,所述至少一條 待測日誌輸出語句所在程序點為可達程序點,所述第二條件為所述變量在至少一個所述可 達程序點處的待測日誌輸出程序語句中被引用,從而可以判斷出期望涵蓋的程序語句中每 個被執行定值操作的變量是否在被更新之前可被待測日誌輸出語句輸出,如果確定判斷結 果為是,則可以確定待測日誌輸出語句有效,否則則可以確定待測日誌輸出語句失效,從而 實現了檢測日誌輸出語句是否有效的目的。
[0086] 另外,本發明實施例提供的程序日誌推薦方法在在獲取期望涵蓋的程序語句、提 取期望涵蓋的程序語句中的至少一個程序點之後,提取出與所述程序點對應的變量,將每 個所提取的程序點各自作為一個待檢測日誌輸出語句所在程序點,以及,將每個程序點對 應的變量作為該程序點的待檢測日誌輸出語句引用的變量,從而可以判斷期望涵蓋的程序 語句中每個被執行定值操作的變量是否均滿足第一條件且滿足第二條件,所述第一條件為 該變量被執行定值操作後確定的定值可到達至少一條待測日誌輸出語句所在程序點,其 中,所述至少一條待測日誌輸出語句所在程序點為該變量的可達程序點,所述第二條件為 該變量在至少一個該變量的可達程序點處的待測日誌輸出程序語句中被引用,如果是,則 可以推薦在所述待測日誌輸出語句所在程序點插入所述待測日誌輸出語句,從而實現了輔 助用戶為缺少或者無日誌輸出語句的程序推薦有效的新日誌輸出語句的目的。

【專利附圖】

【附圖說明】
[0087] 為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現 有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本 發明的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以 根據這些附圖獲得其他的附圖。
[0088] 圖1是本發明實施例提供的程序日誌檢測方法的流程圖之一;
[0089] 圖2是本發明實施例提供的程序日誌檢測方法涉及的程序語句示例圖;
[0090] 圖3是本發明實施例提供的程序日誌檢測方法的流程圖之二;
[0091] 圖4是本發明實施例提供的程序日誌檢測裝置的結構示意圖;
[0092] 圖5是本發明實施例提供的程序日誌推薦方法的流程圖之一;
[0093] 圖6是本發明實施例提供的程序日誌推薦方法的流程圖之二;
[0094] 圖7是本發明實施例提供的程序日誌推薦裝置的結構示意圖。

【具體實施方式】
[0095] 為使本發明實施例的上述目的、特徵和優點能夠更加明顯易懂,下面結合附圖和

【具體實施方式】對本發明實施例作進一步詳細的說明。
[0096] 為了實現對已有日誌輸出語句的檢測,本發明實施例提供了如下的程序日誌檢測 方法。
[0097] 參見圖1,示出了本發明實施例提供的程序日誌檢測方法的流程圖之一。在該實施 例中,可以以程序中的所有已有日誌輸出語句作為待測日誌輸出語句,也就是將所有已有 日誌輸出語句作為檢測對象,也可以以程序中的某一條日誌輸出語句作為待測日誌輸出語 句,也就是將該一條日誌輸出語句作為檢測對象,等等,具體可以根據實施需要進行設置, 在本發明中並不進行限制。該方法可以包括:
[0098] S110、獲取程序中需要檢測的待測日誌輸出語句所在程序點、以及期望涵蓋的程 序語句;
[0099] 其中,程序中的日誌輸出語句通常為日誌列印語句,例如"fprintf (fp, 〃Node%d is shutdown after waiting%d seconds\n〃,busy?nid: last_nid, end_tm_start_tm),'。
[0100] 其中,程序點指程序中相鄰的兩條程序語句之間的位置,對於日誌輸出語句來說, 日誌輸出語句所在程序點指的是該日誌輸出語句與位於其之前的相鄰語句之間的位置。
[0101] 其中,被待測日誌輸出語句引用的變量指的是在該待測日誌輸出語句所列印的表 達式中包含的變量。
[0102] S120、判斷所述程序語句中每個被執行定值操作的變量是否均滿足第一條件且滿 足第二條件,所述第一條件為該變量被執行所述定值操作後確定的定值可到達至少一條所 述待測日誌輸出語句所在程序點,其中,所述至少一條待測日誌輸出語句所在程序點為該 變量的可達程序點,所述第二條件為該變量在至少一個該變量的可達程序點處的待測日誌 輸出程序語句中被引用;
[0103] 為了使第一條件及第二條件更加易於理解,結合圖2所示一代碼片段進行說明:
[0104] 例如,圖2所示的代碼片段中程序語句201 "chunk=null"包含了對變量chunk的 定值操作,由於程序語句201 "chunk=null"與待測日誌輸出語句202 "fprintf (fp, 〃… 〃,chunk)"所在程序點存在可行路徑,且變量chunk的定值從程序語句201"Chunk=null"到 待測日誌輸出語句202 "fprintf (fp,〃…〃,chunk)"所在程序點處一直未被更新,可見,變 量chunk的定值null可到達該待測日誌輸出語句202。因此,程序語句201 "chunk=null" 中被執行定值操作的變量chunk滿足第一條件,由於變量chunk同時在該待測日誌輸出語 句202中被引用,因此,程序語句201 "chunk=null"中被執行定值操作的變量chunk同時 滿足第二條件;
[0105] 再見圖2所示的代碼片段中程序語句203 "chunk=malloc(*") "中包含了對 變量chunk的定值操作,雖然程序語句203 "chunk=malloc〇") "與待測日誌輸出語句 204 "fprintf (fp, 〃…〃,chunk)"所在程序點存在可行路徑,但變量chunk的定值從程序 語句203 "Chunk=mall〇C(?)"到待測日誌輸出語句204所在程序點之前已被程序語句 205 "free (chunk) "處更新,可見,變量chunk的定值malloc (…)不能夠到達該待測日誌 輸出語句204。因此,程序語句203 "chunk=malloc〇") "中被執行定值操作的變量chunk 不滿足第一條件。
[0106] S130、如果是,確定所述待測日誌輸出語句有效,否則,確定所述待測日誌輸出語 句失效。
[0107] 本發明人發現當程序語句中被執行定值操作的變量滿足第一條件且滿足第二條 件,即被執行定值操作的變量的定值可到達至少一條日誌輸出語句所在程序點,其中,所述 至少一條待測日誌輸出語句所在程序點為該變量的可達程序點,且在至少一個該變量的可 達程序點處的待測日誌輸出程序語句中被引用時,該變量的值在變化之前可被日誌輸出語 句輸出,根據輸出的值可以確定執行該定值操作的程序語句是否有效。也就是說,被執行定 值操作的變量滿足第一條件且滿足第二條件的程序語句可被日誌輸出語句有效檢查。因 此,本發明實施例在獲取程序中需要檢測的待測日誌輸出語句所在程序點、以及期望涵蓋 的程序語句之後,判斷程序語句中每個被執行定值操作的變量是否均滿足第一條件且滿足 第二條件,如果是,則可以確定待測日誌輸出語句實現了對期望涵蓋的所有程序語句的有 效檢查,否則,可以確定待測日誌輸出語句未能對期望涵蓋的所有程序語句有效檢查,實現 了檢測待測日誌輸出語句是否有效的目的。
[0108] 在本發明實施例一種可能的實現方式中,通過採用符號執行過程並調用約束求解 工具確定所述期望涵蓋的程序語句中的可行路徑,根據所確定的可行路徑判斷每個在所述 期望涵蓋的程序語句中被執行定值操作的變量的定值是否可到達至少一條所述待測日誌 輸出語句所在程序點,該程序點為該變量的可達程序點、且在至少一個該變量的可達程序 點處的待測日誌輸出語句中被引用。
[0109] 其中,符號執行是指把程序輸入部分或全部地用符號替代,這樣每執行一條程序 語句,就會生成一個對應的符號表達式,如果程序中存在分支或循環,會分別對真假兩個分 支以及循環的不同次展開生成對應的符號表達式,然後取或運算,生成描述該分支或循環 的所有可能行為的邏輯表達式,再通過調用約束求解工具可以得到程序中的可行路徑。
[0110] 下面,結合具體應用場景對該實施方式進行詳細介紹。例如,在本發明實施例的 一應用場景中,待測日誌輸出語句Aj為需要檢測的日誌輸出語句,程序中存在其他可到達 Aj的日誌輸出語句,則待測日誌輸出語句Aj期望涵蓋的程序語句為可到達待測日誌輸出 語句Aj的相鄰日誌輸出語句Ai與待測日誌輸出語句Aj之間可行路徑上的程序語句,具體 地,可以通過採用符號執行過程並調用約束求解工具確定日誌輸出語句Ai與待測日誌輸 出語句Aj的可行路徑上的程序語句,再判斷該可行路徑上的程序語句中每個被執行定值 操作的變量是否均滿足第一條件且滿足第二條件,如果Ai與待測日誌輸出語句Aj的可行 路徑上的每個程序語句中被執行定值操作的變量var均滿足第一條件且滿足第二條件,則 待測日誌輸出語句Aj有效,實現了對該可行路徑上的每個被執行定值操作的變量的檢查。 可以理解的是,如果Ai與待測日誌輸出語句Aj的可行路徑上的某個程序語句中被執行定 值操作的變量var不滿足第一條件和/或者第二條件,但其在程序中另一待測日誌輸出語 句涵蓋的範圍內滿足第一條件且滿足第二條件,則另一日誌輸出語句實現了對該變量var 的檢查,待測日誌輸出語句A j仍然有效。
[0111] 在本發明實施例另一種可能的實現方式中,考慮到上述採用符號執行及調用約束 求解工具的實現方式存在開銷較大的缺陷,又提出了一種近似方案。在該近似方案中,通過 計算期望涵蓋的程序語句中,所有影響待測日誌輸出語句引用的變量在待測日誌輸出語句 所在程序點處的定值的可能被執行到的程序語句數量與期望涵蓋的程序語句數量的比例 來判斷程序語句中每個被執行定值操作的變量是否均滿足第一條件且滿足第二條件。具體 地,參見圖3示出了該實現方式提供的程序日誌檢測方法的流程圖,該方法可以包括:
[0112] S310、獲取程序中需要檢測的待測日誌輸出語句所在程序點、以及期望涵蓋的程 序語句;
[0113] S320、針對每條待測日誌輸出語句執行查找步驟,其中所述查找步驟包括:求解期 望涵蓋的程序語句中,以所針對的待測日誌輸出語句所在程序點、及在所針對的待測日誌 輸出語句中被引用的變量集合為切片標準獲得的程序切片,將所述程序切片納入已查程序 語句集合;
[0114] 其中,程序切片是一種程序縮減技術,可以指靜態的程序後向切片。例如可以利用 常規的程序切片工具,輸入一個用二元組表示的切片標準〈P,V〉,其中P是待測日誌輸出語 句所在程序點,V待測日誌輸出語句中引用的變量,從而利用程序切片工具可以獲得以〈P, V〉為切片標準生成的程序切片,這些程序切片是在程序中影響變量V在P點處的定值的所 有可能被執行到的程序語句。這些語句構成了期望涵蓋的程序語句的子集,稱為期望涵蓋 的程序語句的程序切片。
[0115] 需要注意的是,由於程序切片是在期望涵蓋的程序語句中影響待測日誌輸出語句 引用的變量在待測日誌輸出語句所在程序點處的定值的所有可能被執行到的程序語句,因 此,這些程序切片不僅包括與待測日誌輸出語句所在程序點存在可行路徑的程序語句,還 包括與待測日誌輸出語句所在程序點雖然不存在可行路徑但在程序流程上可能到達的程 序語句。由於與待測日誌輸出語句所在程序點雖然不存在可行路徑但在程序流程上可能到 達的程序語句數量較少,可以忽略,因此,該方案雖然不如上述符號執行及調用約束求解可 行路徑的方案精確,但是可以近似準確,而且運算速度較快、在實際中可以滿足檢測需要。
[0116] 還需要注意的是,由於在該近似方案中已查程序語句集合包括的是期望涵蓋的程 序語句中影響待測日誌輸出語句引用的變量在待測日誌輸出語句所在程序點處的定值的 所有可能被執行到的程序語句,因此,已查程序語句集合中包括兩類程序語句:
[0117] 第一類是其中被執行定值操作的變量滿足第一條件且滿足第二條件,也就是被有 效檢查的程序語句;
[0118] 第二類是其中被執行定值操作的變量不滿足第一條件或第二條件,但其中被執行 定值操作的變量在上述第一類程序語句中被引用的程序語句;
[0119] 在該實施例中,雖然第二類語句中被執行定值操作的變量不滿足第一條件或第二 條件,但是由於其中被執行定值操作的變量在上述第一類程序語句中被引用,所以第一類 程序語句中變量的定值受第二類程序語句的變量的值的影響。因此,對第一類程序語句的 有效檢查能夠實現對第二類程序語句的有效檢查,因此,可以近似地認為第二類程序語句 中被執行定值操作的變量滿足第一條件且滿足第二條件。因此,可以近似地認為已查程序 語句集合中包括的第一類程序語句及第二類程序語句中被執行定值操作的變量均滿足第 一條件且滿足第二條件。
[0120] 需要說明的是,當所獲得的已查程序語句集合中有重複程序語句時,需要排除重 復的部分。
[0121] S330、計算所述已查程序語句集合中所有程序語句的數量與期望涵蓋的程序語句 的數量的比例;
[0122] S340、如果所述比例在日誌相對強度範圍內,確定所述程序語句中每個被執行定 值操作的變量均滿足第一條件且滿足第二條件;
[0123] S350、如果所述比例未在日誌相對強度範圍內,確定所述程序語句的被執行定值 操作的變量中存在不滿足第一條件和/或者第二條件的變量。
[0124] 在該實施例中,預先設置了日誌強度範圍,如果已查程序語句集合中所有程序語 句的數量與期望涵蓋的程序語句的數量的比例在日誌相對強度範圍內,則可以近似地認為 所述程序語句中每個被執行定值操作的變量均滿足第一條件且滿足第二條件,如果不在日 志相對強度範圍內,則可以認為被執行定值操作的變量中存在不滿足第一條件和/或者第 二條件的變量。因此,在該實施例中通過計算期望涵蓋的程序語句中,所有影響待測日誌輸 出語句引用的變量在待測日誌輸出語句所在程序點處的定值的可能被執行到的程序語句 數量與期望涵蓋的程序語句的規模的比例,可以判斷程序語句中每個被執行定值操作的變 量是否均滿足第一條件且滿足第二條件。該近似方案與上述採用符號執行及調用約束求解 工具的實現方式比較,計算過程簡單,運算量小,效率更高。
[0125] 在本發明實施例再一可能的實現方式中,考慮到近似方案中所得到的已查程序語 句集合中不僅包括與待測日誌輸出語句所在程序點存在可行路徑的程序語句,還包括與待 測日誌輸出語句所在程序點雖然不存在可行路徑但在程序流程上可能到達的程序語句。為 了能夠使該近似方案更加準確,該實現方式中提出,在步驟S320獲得已查程序語句集合之 後,在計算已查程序語句集合中所有程序語句的數量與期望涵蓋的程序語句的數量的比例 之前,可以進一步將與待測日誌輸出語句所在程序點不存在可行路徑的程序語句從已查程 序語句集合中排除。具體地,在計算已查程序語句集合中所有程序語句的數量與期望涵蓋 的程序語句的數量的比例之前,還可以包括:針對所述已查程序語句集合中的程序語句, 採用符號執行過程並調用約束求解工具查找出已查程序語句集合中所有與待測日誌輸出 語句所在程序點不存在可行路徑的程序語句,將該程序語句從所述已查程序語句集合中排 除。
[0126] 與程序日誌檢測方法相對應的,本發明實施例還提供了一種程序日誌檢測裝置。 參見圖4,示出了本發明實施例提供的程序日誌檢測裝置的流程圖。如圖所示,該裝置可以 包括:
[0127] 檢測獲取單元410:可以用於獲取程序中需要檢測的待測日誌輸出語句所在程序 點、以及期望涵蓋的程序語句;
[0128] 檢測判斷單元420 :可以用於判斷所述期望涵蓋的程序語句中每個被執行定值操 作的變量是否均滿足第一條件且滿足第二條件,所述第一條件為該變量被執行定值操作後 確定的定值可到達至少一條待測日誌輸出語句所在程序點,其中,所述至少一條待測日誌 輸出語句所在程序點為該變量的可達程序點,所述第二條件為該變量在至少一個該變量的 可達程序點處的待測日誌輸出程序語句中被引用;
[0129] 檢測確定單元430:可以用於如果檢測判斷單元判斷結果為是,確定所述待測日 志輸出語句有效,否則,確定所述待測日誌輸出語句失效。
[0130] 應用該實施例提供的程序日誌檢測裝置,可以由檢測獲取單元410在獲取程序中 需要檢測的待測日誌輸出語句所在程序點、以及期望涵蓋的程序語句之後,由檢測判斷單 元420判斷程序語句中每個被執行定值操作的變量是否均滿足第一條件且滿足第二條件, 從而檢測確定單元430可以根據檢測判斷單元420的判斷結果為是時,確定待測日誌輸出 語句實現了對期望涵蓋的所有程序語句的有效檢查,否則,可以確定待測日誌輸出語句未 能對期望涵蓋的所有程序語句有效檢查,實現了檢測待測日誌輸出語句是否有效的目的。
[0131] 在該程序日誌檢測裝置的一種可能的實現方式中,所述檢測判斷單元420可以包 括:
[0132] 判斷可行路徑子單元421 :可以用於通過採用符號執行過程並調用約束求解工具 確定所述程序語句中的可行路徑;
[0133] 判斷日誌語句子單元422 :可以用於根據所確定的可行路徑判斷每個在所述期望 涵蓋的程序語句中被執行定值操作的變量的定值是否可到達至少一條所述待測日誌輸出 語句所在程序點,其中,所述至少一條待測日誌輸出語句所在程序點為可達程序點,且在至 少一個所述可達程序點處的待測日誌輸出語句中被引用。
[0134] 該實現方式由於採用符號執行過程並調用約束求解工具確定程序語句中的可行 路徑,根據可行路徑判斷每個在所述期望涵蓋的程序語句中被執行定值操作的變量的定值 是否可到達至少一條待測日誌輸出語句所在程序點、該程序點為可達程序點,且在至少一 個所述可達程序點處的待測日誌輸出語句中被引用,因此檢測結果比較準確。
[0135] 在另一種可能的實現方式中,針對上述採用符號執行及調用約束求解工具的實現 方式存在開銷較大的缺陷,提出了與上一實現方式不同的近似方案。具體地,在該實現方式 中所述檢測判斷單元420可以包括:
[0136] 查找子單元423:用於針對每條待測日誌輸出語句執行查找步驟,其中所述查找 步驟包括:求解期望涵蓋的程序語句中,以所針對的待測日誌輸出語句所在程序點、及在所 針對的待測日誌輸出語句中被引用的變量集合為切片標準獲得的程序切片,將所述程序切 片納入已查程序語句集合;
[0137] 計算子單元424 :用於計算所述已查程序語句集合中所有程序語句的數量與期望 涵蓋的程序語句的數量的比例;
[0138] 比例判斷子單元425 :用於如果所述比例在日誌相對強度範圍內,確定所述程序 語句中每個被執行定值操作的變量均滿足第一條件且滿足第二條件;如果所述比例未在日 志相對強度範圍內,確定所述程序語句中被執行定值操作的變量中存在不滿足第一條件和 /或者第二條件的變量。
[0139] 在該實現方式中,檢測判斷單元420還可以包括排除子單元426 :可以用於在計算 子單元計算已查程序語句集合中所有程序語句的數量與期望涵蓋的程序語句的數量的比 例之前,針對所述已查程序語句集合中的程序語句,採用符號執行過程並調用約束求解工 具查找出已查程序語句集合中所有與待測日誌輸出語句所在程序點不存在可行路徑的程 序語句,將該程序語句從所述已查程序語句集合中排除。
[0140] 在該實現方式中,由查找子單元423利用程序切片技術獲得期望涵蓋的程序語句 中,所有影響待測日誌輸出語句引用的變量在待測日誌輸出語句所在程序點處的定值的可 能被執行到的程序語句,即已查程序語句集合中包含的所有程序語句,從而可以由計算子 單元424計算已查程序語句集合中所有程序語句的數量與期望涵蓋的程序語句的數量的 比例,再由比例判斷子單元425判斷出比例在日誌相對強度範圍內,則可以近似地認為所 述程序語句中每個被執行定值操作的變量均滿足第一條件且滿足第二條件,如果不在日誌 相對強度範圍內,則可以認為被執行定值操作的變量中存在不滿足第一條件和/或者第二 條件的變量。因此,在該實現方式所採取的近似方案與上述採用符號執行及調用約束求解 工具的實現方式比較,計算過程簡單,運算量小,效率更高。
[0141] 另外,本發明實施例還提供了一種程序日誌推薦方法。參見圖5,示出了本發明實 施例提供的程序日誌推薦方法的流程圖之一。如圖所示,該實施例包括:
[0142] S510、獲取期望涵蓋的程序語句;
[0143] S520、提取所述期望涵蓋的程序語句中的至少一個程序點;
[0144] 例如,可以通過遍歷期望涵蓋的程序語句,在每次推薦時自動提取期望涵蓋的程 序語句中未曾作為待測日誌輸出語句所在程序點的至少一個程序點,和/或者,提取用戶 指定的至少一個程序點。
[0145] S530、提取出與所述程序點對應的變量,所述變量包括在所述程序點處活躍的變 量,和/或者,用戶在所述程序點處指定的變量;
[0146] S540、將每個所提取的程序點各自作為一個待檢測日誌輸出語句所在程序點,以 及,將每個程序點對應的變量作為該程序點的待檢測日誌輸出語句引用的變量;
[0147] S550、判斷期望涵蓋的程序語句中每個被執行定值操作的變量是否均滿足第一條 件且滿足第二條件,所述第一條件為該變量被所述執行定值操作後確定的定值可到達至少 一條待測日誌輸出語句所在程序點,其中,所述至少一條待測日誌輸出語句所在程序點為 該變量的可達程序點,所述第二條件為該變量在至少一個該變量的可達程序點處的待測日 志輸出程序語句中被引用;
[0148] S560、如果是,推薦在所述待測日誌輸出語句所在程序點插入所述待測日誌輸出 語句。
[0149] 為了滿足程序中所有程序語句被日誌輸出語句有效檢查的要求,在根據所述推薦 在程序中插入了日誌輸出語句之後,還可以檢測程序中所有日誌輸出語句是否已有效檢查 了期望其涵蓋的程序語句。具體地,該實施例還可以包括:
[0150] S570、如果已根據所述推薦在程序中插入了日誌輸出語句,則將所述程序中所有 程序語句作為期望涵蓋的程序語句,將所述程序中所有日誌輸出語句作為待測日誌輸出語 句,並判斷期望涵蓋的程序語句中每個被執行定值操作的變量是否均滿足第一條件且滿足 第二條件;
[0151] S580、如果不滿足,返回到步驟S510繼續進行日誌推薦;
[0152] S590、如果滿足,則可以結束推薦流程。
[0153] 另外,考慮到所推薦的日誌輸出語句所在程序點實際上可能為程序中已有日誌輸 出語句所在程序點,區別可能僅在於所推薦的日誌輸出語句引用的變量。因此,在推薦日誌 輸出語句時,可以判斷該程序點是否與所述程序中已有日誌輸出語句所在程序點相同,如 果相同,則推薦在該程序點已有日誌輸出語句中補充待測日誌輸出語句中引用的變量,如 果不相同,則推薦在該程序點插入待測日誌輸出語句。
[0154] 在推薦日誌輸出語句不成功的情況下,本發明實施例還可以獲取新的待測日誌輸 出語句程序點,針對新的待測日誌輸出語句進行日誌輸出語句的推薦。具體地,該實施例提 供的程序日誌推薦方法還可以包括步驟S580 :
[0155] S591、如果步驟S550判斷出期望涵蓋的程序語句中被執行定值操作的變量不滿 足第一條件或者不滿足第二條件,提取新程序點,返回到步驟S530提取出與所述程序點對 應的變量的步驟。
[0156] 例如,所提取的新程序點可以通過提取期望涵蓋的程序語句中未曾作為待測日誌 輸出語句所在程序點的至少一個程序點,和/或者提取用戶指定的新程序點實現。
[0157] 應用該實施例提供的方法,由於在獲取期望涵蓋的程序語句、提取期望涵蓋的程 序語句中的至少一個程序點之後,提取出與所述程序點對應的變量,將每個所提取的程序 點各自作為一個待檢測日誌輸出語句所在程序點,以及,將每個程序點對應的變量作為該 程序點的待檢測日誌輸出語句引用的變量,從而可以判斷期望涵蓋的程序語句中每個被執 行定值操作的變量是否均滿足第一條件且滿足第二條件,所述第一條件為該變量被執行定 值操作後確定的定值可到達至少一條待測日誌輸出語句所在程序點,該程序點為可達程序 點,所述第二條件為該變量在至少一個所述可達程序點處的待測日誌輸出語句中被引用, 如果是,則可以推薦在所述待測日誌輸出語句所在程序點插入所述待測日誌輸出語句。
[0158] 例如,可以在戶未指定日誌輸出語句的插入位置(S卩:程序點)及日誌輸出語句應 引用的變量時,推薦有效的日誌輸出語句所在程序點及其應引用的變量,可以在用戶指定 了日誌輸出語句的插入位置時,推薦在該位置上有效的日誌輸出語句應引用的變量,可以 在用戶指定了日誌輸出語句需要引用的變量時,推薦該日誌輸出語句應插入的位置,從而 實現輔助用戶添加有效的新日誌輸出語句的目的。可見,應用本發明實施例方法推薦的日 志輸出語句能夠提高程序的日誌的有效性。
[0159] 下面,再對本發明實施例提供的程序日誌推薦方法的一種可能的實現方式進行詳 細介紹。參見圖6,示出了本發明實施例提供的程序日誌推薦方法的流程圖之二。如圖所 示,該實施例包括:
[0160] S610、判斷程序中是否已存在日誌輸出語句;
[0161] S611、如果所述程序中已存在日誌輸出語句,針對每個在所述程序語句中被執行 定值操作的變量,判斷該變量的定值是否可到達至少一條已存在的日誌輸出語句所在程序 點,其中,所述至少一條已存在的日誌輸出語句所在程序點為可達已存程序點,且該變量在 至少一個所述可達已存程序點處的日誌輸出程序語句中被引用;
[0162] S612、如果否,將該執行定值操作的程序語句納入期望涵蓋的程序語句;如果所述 程序中不存在日誌輸出語句,將所述程序中的所有程序語句納入期望涵蓋的程序語句;
[0163] 由於在上述步驟S610到S612中將程序中被已有日誌輸出語句有效檢查的所有程 序語句排除,從而可以在進行日誌推薦檢測時減少運算量,提高檢測速度,儘快補充新日誌 輸出語句。假設被已有日誌輸出語句有效檢查的所有程序語句的集合為Aset,則所獲取的 期望涵蓋的程序語句為^。
[0164] S620、提取所述期望涵蓋的程序語句所在的程序點中至少一個程序點和/或者提 取用戶指定的程序點;
[0165] S630、提取出在所述待測日誌輸出語句所在程序點活躍的變量,和/或者,提取用 戶在所述待測日誌輸出語句所在程序點指定的變量;
[0166] S640、將每個所提取的程序點各自作為一個待檢測日誌輸出語句所在程序點,以 及,將每個程序點對應的變量作為該程序點的待檢測日誌輸出語句引用的變量;
[0167] S650、針對每條待測日誌輸出語句執行查找步驟,其中所述查找步驟包括:求解期 望涵蓋的程序語句中,以所針對的待測日誌輸出語句所在程序點、及在所針對的待測日誌 輸出語句中被引用的變量集合為切片標準獲得的程序切片,將所述程序切片納入已查程序 語句集合;
[0168] S651、針對所述已查程序語句集合中的程序語句,採用符號執行過程並調用約束 求解工具,查找出已查程序語句集合中所有與待測日誌輸出語句所在程序點不存在可行路 徑的程序語句,將該程序語句從所述已查程序語句集合中排除;
[0169] S652、計算所述已查程序語句集合中所有程序語句的數量與期望涵蓋的程序語句 的數量的比例;
[0170] S653、如果所述比例在日誌相對強度範圍內,確定所述程序語句中每個被執行定 值操作的變量均滿足第一條件且滿足第二條件,執行以下S660到S664的步驟;
[0171] S660、將所述比例作為日誌相對強度範圍的下限,更新所述日誌相對強度範圍;
[0172] S661、將該待測日誌輸出語句所在程序點及被該待測日誌輸出語句引用的變量記 錄在一條日誌推薦提示中;
[0173] S662、判斷是否還繼續進行推薦檢測;
[0174] S663、如果是,提取新程序點,返回到所述步驟S630提取出與所述程序點對應的 變量的步驟;
[0175] S664、如果否,反饋最後記錄的一條日誌推薦提示;
[0176] 可以理解的是,由於在步驟S660中更新了日誌相對強度範圍,從而可以在返回到 所述步驟S630之後,只將比例更高的日誌輸出語句所在程序點及其引用的變量記錄到日 志推薦提示中,而且由於在步驟S664中反饋的是最後記錄的一條日誌推薦提示,所推薦的 是比例最高的日誌輸出語句,可以提高程序中日誌輸出語句的有效性。
[0177] S670、如果已根據最後記錄的一條日誌推薦提示在程序中插入了日誌輸出語句, 則將所述程序中所有程序語句集合作為期望涵蓋的程序語句,將所述程序中所有日誌輸出 語句所在程序點作為待測日誌輸出語句所在程序點,並針對每條待測日誌輸出語句執行查 找步驟以獲得已查程序語句集合,計算所述已查程序語句集合中所有程序語句的數量與期 望涵蓋的程序語句的數量的比例,如果所述比例未在預設的日誌綜合強度範圍內,返回到 步驟S610繼續進行日誌推薦。
[0178] 需要說明的是,該日誌綜合強度範圍可以為預先設置或者由用戶指定(例如,可以 預設或指定為[1,1]),在本發明中並不進行限制。並且,在返回到步驟S610時還需將日誌 相對強度範圍恢復為在推薦執行之前系統預設或用戶指定的日誌相對強度範圍(例如,可 以預設或指定為[0, 1]),以避免在新一輪的日誌推薦過程中更新的日誌相對強度範圍的下 限閾值過高而無法再推薦合適的日誌輸出語句。
[0179] S680、如果不滿足,返回到步驟S610繼續進行日誌推薦;
[0180] S690、如果滿足,結束推薦流程;
[0181] S691、如果步驟S652判斷出所述比例未在日誌相對強度範圍內,確定所述程序語 句的被執行定值操作的變量中存在不滿足第一條件和/或者第二條件的變量,提取新程序 點,返回到步驟S630提取出與所述程序點對應的變量的步驟。
[0182] 應用該實施例提供的方法,由於在獲取期望涵蓋的程序語句時將程序中被已有日 志輸出語句有效檢查的所有程序語句排除,從而可以在進行日誌推薦檢測時減少運算量, 提高檢測速度,儘快補充新日誌輸出語句;由於在判斷期望涵蓋的程序語句中每個被執行 定值操作的變量是否均滿足第一條件且滿足第二條件時,通過判斷所有影響待測日誌輸出 語句引用的變量在待測日誌輸出語句所在程序點處的定值的可能被執行到的程序語句數 量與期望涵蓋的程序語句數量的比例是否在日誌相對強度範圍內實現,降低了運算量,提 高了推薦的效率;而且在被待測日誌輸出語句有效檢查的程序語句數量與期望涵蓋的程序 語句數量的比例在日誌相對強度範圍內時,更新了日誌相對強度範圍,從而可以將比例更 高的日誌輸出語句所在程序點及其引用的變量記錄到日誌推薦提示中,而且反饋的是最後 記錄的一條日誌推薦提示,所推薦的是比例最高的日誌輸出語句,可以儘量以最少的日誌 輸出語句最大可能的提高程序中日誌輸出語句的有效性。可見,該實施例提供的方法可以 實現高效率的輔助用戶添加有效的新日誌輸出語句的目的。
[0183] 與程序日誌推薦方法相對應的,本發明實施例還提供了一種程序日誌推薦裝置。 參見圖7,示出了本發明實施例提供的程序日誌推薦裝置的結構示意圖。如圖所示,該實施 例包括:
[0184] 程序語句獲取單元710 :可以用於獲取期望涵蓋的程序語句;
[0185] 推薦位置提取單元720 :可以用於提取所述期望涵蓋的程序語句中的至少一個程 序點;
[0186] 推薦變量提取單元730:可以用於提取出與所述程序點對應的變量,所述變量包 括在所述程序點處活躍的變量,和/或者,用戶在所述程序點處指定的變量;
[0187] 待測日誌獲取單元740 :可以用於將每個所提取的程序點各自作為一個待檢測日 志輸出語句所在程序點,以及,將每個程序點對應的變量作為該程序點的待檢測日誌輸出 語句引用的變量;
[0188] 推薦判斷單元750 :可以用於判斷期望涵蓋的程序語句中每個被執行定值操作的 變量是否均滿足第一條件且滿足第二條件,所述第一條件為該變量被執行定值操作後,確 定的定值可到達至少一條待測日誌輸出語句所在程序點,其中,所述至少一條待測日誌輸 出語句所在程序點為該變量的可達程序點,所述第二條件為該變量在至少一個該變量的可 達程序點處的待測日誌輸出程序語句中被引用;
[0189] 推薦確定單元760:可以用於如果推薦判斷單元判斷結果為是,推薦在所述待測 日誌輸出語句所在程序點插入所述待測日誌輸出語句。
[0190] 可見,應用本發明實施例提供的程序日誌推薦裝置,由於在程序語句獲取單元710 獲取期望涵蓋的程序語句、推薦位置提取單元720提取期望涵蓋的程序語句中的至少一個 程序點之後,由推薦變量提取單元730提取出與所述程序點對應的變量,由臨時插入日誌 單元740將每個所提取的程序點各自作為一個待檢測日誌輸出語句所在程序點,以及,將 每個程序點對應的變量作為該程序點的待檢測日誌輸出語句引用的變量,從而由推薦判斷 單元750判斷期望涵蓋的程序語句中每個被執行定值操作的變量是否均滿足第一條件且 滿足第二條件,由推薦確定單元760確定推薦判斷單元判斷結果為是時,推薦在所述待測 日誌輸出語句所在程序點插入所述待測日誌輸出語句。可見,應用本發明實施例方法推薦 的日誌輸出語句能夠提高程序的日誌的有效性。
[0191] 下面,再對本發明實施例提供的程序日誌推薦裝置的可能的實現方式進行詳細介 紹。例如,在該實現方式中,如圖7所示:
[0192] 所述程序語句獲取單元710:可以用於如果所述程序中已存在日誌輸出語句,針 對每個在所述程序語句中被執行定值操作的變量,判斷該變量的定值是否可到達至少一條 已存在的日誌輸出語句所在程序點,其中,所述至少一條已存在的日誌輸出語句所在程序 點為可達已存程序點,且該變量在至少一個所述可達已存程序點處的日誌輸出程序語句中 被引用,如果否,將該執行定值操作的程序語句納入期望涵蓋的程序語句;如果所述程序中 不存在日誌輸出語句,將所述程序中的所有程序語句納入期望涵蓋的程序語句。
[0193] 為了使日誌輸出語句實現對程序中所有程序語句的有效性檢查,該裝置還可以包 括重新推薦單元770 :可以用於如果期望涵蓋的程序語句中被執行定值操作的變量不滿足 第一條件或者不滿足第二條件,提取新程序點,重新觸發推薦變量提取單元730。
[0194] 在推薦判斷單元750運算較快的一種實現方式中,該推薦判斷單元750可以包 括:
[0195] 查找子單元751 :可以用於針對每條待測日誌輸出語句執行查找步驟,其中所述 查找步驟包括:求解期望涵蓋的程序語句中,以所針對的待測日誌輸出語句所在程序點、及 在所針對的待測日誌輸出語句中被引用的變量集合為切片標準獲得的程序切片,將所述程 序切片納入已查程序語句集合;
[0196] 計算子單元752 :可以用於計算所述已查程序語句集合中所有程序語句的數量與 期望涵蓋的程序語句的數量的比例;
[0197] 比例判斷子單元753 :可以用於如果所述比例在日誌相對強度範圍內,確定所述 程序語句中每個被執行定值操作的變量均滿足第一條件且滿足第二條件;如果所述比例未 在日誌相對強度範圍內,確定所述程序語句中被執行定值操作的變量中存在不滿足第一條 件和/或者第二條件的變量。
[0198] 考慮到查找子單元查找出的已查程序語句集合中的程序語句中包括少量與待測 日誌輸出語句不存在可行路徑的程序語句,為了使推薦結果更加準確,所述推薦判斷單元 750還可以包括排除子單元754 :可以用於在計算子單元計算已查程序語句集合中所有程 序語句的數量與期望涵蓋的程序語句的數量的比例之前,針對所述已查程序語句集合中的 程序語句,採用符號執行過程並調用約束求解工具,查找出已查程序語句集合中所有與待 測日誌輸出語句所在程序點不存在可行路徑的程序語句,將該程序語句從所述已查程序語 句集合中排除。
[0199] 為了能夠儘量以最少的日誌輸出語句最大可能的提高程序中日誌輸出語句的有 效性,該裝置的比例判斷子單元753 :還可以用於如果所述比例在日誌相對強度範圍內,將 所述比例作為日誌相對強度範圍的下限,更新所述日誌相對強度範圍;且,所述推薦確定單 元760可以包括:
[0200] 推薦記錄子單元761 :可以用於將該待測日誌輸出語句所在程序點及被該待測日 志輸出語句引用的變量記錄在一條日誌推薦提示中;
[0201] 繼續判斷子單元762 :可以用於判斷是否還繼續進行推薦檢測;
[0202] 繼續確定子單元763 :可以用於如果繼續判斷子單元判斷結果為是時,提取新程 序點,重新觸發推薦變量提取單元;
[0203] 反饋推薦子單元764:可以用於如果繼續判斷子單元判斷結果為否時,反饋最後 記錄的一條日誌推薦提示。
[0204] 綜合以上實現方式可見,本發明實施例提供的裝置可以實現高效率的輔助用戶添 加有效的新日誌輸出語句的目的。
[0205] 進一步地,本發明實施例還提供一種終端的硬體構成。
[0206] 至少一個網絡接口或者其他通信接口,存儲器,和至少一個通信總線,用於實現這 些裝置之間的連接通信。處理器用於執行存儲器中存儲的可執行模塊,例如電腦程式。存 儲器可能包含高速隨機存取存儲器(RAM :Random Access Memory),也可能還包括非不穩定 的存儲器(non-vo 1 at i 1 e memory ),例如至少一個磁碟存儲器。
[0207] 在一些實施方式中,存儲器中存儲了程序指令,程序指令可以被處理器執行,其 中,程序指令用於執行本發明實施例所述的方法,例如:可以包括:
[0208] 獲取程序中需要檢測的待測日誌輸出語句所在程序點、以及期望涵蓋的程序語 句;判斷所述期望涵蓋的程序語句中每個被執行定值操作的變量是否均滿足第一條件且滿 足第二條件,所述第一條件為該變量被執行定值操作後確定的定值可到達至少一條待測日 志輸出語句所在程序點,其中,所述至少一條待測日誌輸出語句所在程序點為該變量的可 達程序點,所述第二條件為該變量在至少一個該變量的可達程序點處的待測日誌輸出程序 語句中被引用;如果是,確定所述待測日誌輸出語句有效,否則,確定所述待測日誌輸出語 句失效。
[0209] 和/或者,
[0210] 可以包括:獲取期望涵蓋的程序語句;提取期望涵蓋的程序語句中的至少一個程 序點;提取出與所述程序點對應的變量,所述變量包括在所述程序點處活躍的變量,和/或 者,用戶在所述程序點處指定的變量;將每個所提取的程序點各自作為一個待檢測日誌輸 出語句所在程序點,以及,將每個程序點對應的變量作為該程序點的待檢測日誌輸出語句 引用的變量;判斷期望涵蓋的程序語句中每個被執行定值操作的變量是否均滿足第一條件 且滿足第二條件,所述第一條件為該變量被執行定值操作後確定的定值可到達至少一條待 測日誌輸出語句所在程序點,其中,所述至少一條待測日誌輸出語句所在程序點為該變量 的可達程序點,所述第二條件為該變量在至少一個該變量的可達程序點處的待測日誌輸出 程序語句中被引用;如果是,推薦在所述待測日誌輸出語句所在程序點插入所述待測日誌 輸出語句。
[0211] 可以理解的是,所述程序指令執行的本發明實施例的方法可以包括本文所述各實 施例所述的方法及基於本發明實施例的方法的其他實現方式,這裡不再贅述。
[0212] 通過以上的實施方式的描述可知,本領域的技術人員可以清楚地了解到上述實施 例方法中的全部或部分步驟可藉助軟體加必需的通用硬體平臺的方式來實現。基於這樣的 理解,本發明的技術方案本質上或者說對現有技術做出貢獻的部分可以以軟體產品的形式 體現出來,該計算機軟體產品可以存儲在存儲介質中,如ROM/RAM、磁碟、光碟等,包括若干 指令用以使得一臺計算機設備(可以是個人計算機,伺服器,或者諸如媒體網關等網絡通信 設備,等等)執行本發明各個實施例或者實施例的某些部分所述的方法。
[0213] 需要說明的是,本說明書中的各個實施例均採用遞進的方式描述,各個實施例之 間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。 尤其,對於裝置實施例而言,由於其基本相似於方法實施例,所以描述得比較簡單,相關之 處參見方法實施例的部分說明即可。以上所描述的裝置實施例僅僅是示意性的,其中作為 分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或 者也可以不是物理單元,即可以位於一個地方,或者也可以分布到多個網絡單元上。可以根 據實際的需要選擇其中的部分或者全部模塊來實現本實施例方案的目的。本領域普通技術 人員在不付出創造性勞動的情況下,即可以理解並實施。
[0214] 而且,在本文中,諸如第一和第二等之類的關係術語僅僅用來將一個實體或者操 作與另一個實體或操作區分開來,而不一定要求或者暗示這些實體或操作之間存在任何這 種實際的關係或者順序。而且,術語"包括"、"包含"或者其任何其他變體意在涵蓋非排他 性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且 還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設備所固有的 要素。在沒有更多限制的情況下,由語句"包括一個……"限定的要素,並不排除在包括所 述要素的過程、方法、物品或者設備中還存在另外的相同要素。
[0215] 以上所述僅為本發明的較佳實施例而已,並非用於限定本發明的保護範圍。凡在 本發明的精神和原則之內所作的任何修改、等同替換、改進等,均包含在本發明的保護範圍 內。
【權利要求】
1. 一種程序日誌檢測方法,其特徵在於,包括: 獲取程序中需要檢測的待測日誌輸出語句所在程序點、以及期望涵蓋的程序語句; 判斷所述期望涵蓋的程序語句中每個被執行定值操作的變量是否均滿足第一條件且 滿足第二條件,所述第一條件為該變量被執行所述定值操作後,確定的定值可到達至少一 條所述待測日誌輸出語句所在程序點,其中,所述至少一條待測日誌輸出語句所在程序點 為該變量的可達程序點,所述第二條件為該變量在至少一個該變量的可達程序點處的待測 日誌輸出程序語句中被引用; 如果是,確定所述待測日誌輸出語句有效,否則,確定所述待測日誌輸出語句失效。
2. 根據權利要求1所述的方法,其特徵在於,所述判斷期望涵蓋的程序語句中每個被 執行定值操作的變量是否均滿足第一條件且滿足第二條件包括: 通過採用符號執行過程並調用約束求解工具確定所述程序語句中的可行路徑; 根據所確定的可行路徑判斷每個在所述期望涵蓋的程序語句中被執行定值操作的變 量的定值是否可到達至少一條待測日誌輸出語句所在程序點,其中,所述至少一條待測日 志輸出語句所在程序點為可達程序點,且在至少一個所述可達程序點處的待測日誌輸出程 序語句中被引用。
3. 根據權利要求1所述的方法,其特徵在於,所述判斷期望涵蓋的程序語句中每個被 執行定值操作的變量是否均滿足第一條件且滿足第二條件包括: 針對每條待測日誌輸出語句執行查找步驟,其中所述查找步驟包括:求解期望涵蓋的 程序語句中,以所針對的待測日誌輸出語句所在程序點、及在所針對的待測日誌輸出語句 中被引用的變量集合為切片標準獲得的程序切片,將所述程序切片納入已查程序語句集 合; 計算所述已查程序語句集合中所有程序語句的數量與期望涵蓋的程序語句的數量的 比例; 如果所述比例在日誌相對強度範圍內,確定所述程序語句中每個被執行定值操作的變 量均滿足第一條件且滿足第二條件; 如果所述比例未在日誌相對強度範圍內,確定所述程序語句中被執行定值操作的變量 中存在不滿足第一條件和/或者第二條件的變量。
4. 根據權利要求3所述的方法,其特徵在於,在計算已查程序語句集合中所有程序語 句的數量與期望涵蓋的程序語句的數量的比例之前,還包括: 針對所述已查程序語句集合中的程序語句,採用符號執行過程並調用約束求解工具, 查找出已查程序語句集合中所有與待測日誌輸出語句所在程序點不存在可行路徑的程序 語句,將該程序語句從所述已查程序語句集合中排除。
5. -種程序日誌檢測裝置,其特徵在於,包括: 檢測獲取單元:用於獲取程序中需要檢測的待測日誌輸出語句所在程序點、以及期望 涵蓋的程序語句; 檢測判斷單元:用於判斷所述期望涵蓋的程序語句中每個被執行定值操作的變量是否 均滿足第一條件且滿足第二條件,所述第一條件為該變量被執行所述定值操作後確定的定 值可到達至少一條所述待測日誌輸出語句所在程序點,其中,所述至少一條待測日誌輸出 語句所在程序點為該變量的可達程序點,所述第二條件為該變量在至少一個該變量的可達 程序點處的待測日誌輸出語句中被引用; 檢測確定單元:用於如果檢測判斷單元判斷結果為是,確定所述待測日誌輸出語句有 效,否則,確定所述待測日誌輸出語句失效。
6. 根據權利要求5所述的裝置,其特徵在於,所述檢測判斷單元包括: 判斷可行路徑子單元:用於通過採用符號執行過程並調用約束求解工具確定所述程序 語句中的可行路徑; 判斷日誌語句子單元:用於根據所確定的可行路徑判斷每個在所述期望涵蓋的程序語 句中被執行定值操作的變量的定值是否可到達至少一條待測日誌輸出語句所在程序點,其 中,所述至少一條待測日誌輸出語句所在程序點為可達程序點,且在至少一個所述可達程 序點處的待測日誌輸出程序語句中被引用。
7. 根據權利要求5所述的裝置,其特徵在於,所述檢測判斷單元包括: 查找子單元:用於針對每條待測日誌輸出語句執行查找步驟,其中所述查找步驟包括: 求解期望涵蓋的程序語句中,以所針對的待測日誌輸出語句所在程序點、及在所針對的待 測日誌輸出語句中被引用的變量集合為切片標準獲得的程序切片,將所述程序切片納入已 查程序語句集合; 計算子單元:用於計算所述已查程序語句集合中所有程序語句的數量與期望涵蓋的程 序語句的數量的比例; 比例判斷子單元:用於如果所述比例在日誌相對強度範圍內,確定所述程序語句中每 個被執行定值操作的變量均滿足第一條件且滿足第二條件;如果所述比例未在日誌相對強 度範圍內,確定所述程序語句中被執行定值操作的變量中存在不滿足第一條件和/或者第 二條件的變量。
8. 根據權利要求7所述的裝置,其特徵在於,所述檢測判斷單元還包括: 排除子單元:用於在計算子單元計算已查程序語句集合中所有程序語句的數量與期望 涵蓋的程序語句的數量的比例之前,針對所述已查程序語句集合中的程序語句,採用符號 執行過程並調用約束求解工具查找出已查程序語句集合中所有與待測日誌輸出語句所在 程序點不存在可行路徑的程序語句,將該程序語句從所述已查程序語句集合中排除。
9. 一種程序日誌推薦方法,其特徵在於,包括: 獲取期望涵蓋的程序語句; 提取所述期望涵蓋的程序語句中的至少一個程序點; 提取出與所述程序點對應的變量,所述變量包括在所述程序點處活躍的變量,和/或 者,用戶在所述程序點處指定的變量; 將每個所提取的程序點各自作為一個待檢測日誌輸出語句所在程序點,以及,將每個 程序點對應的變量作為該程序點的待檢測日誌輸出語句引用的變量; 判斷所述期望涵蓋的程序語句中每個被執行定值操作的變量是否均滿足第一條件且 滿足第二條件,所述第一條件為該變量被執行所述定值操作後確定的定值可到達至少一條 所述待測日誌輸出語句所在程序點,其中,所述至少一條待測日誌輸出語句所在程序點為 該變量的可達程序點,所述第二條件為該變量在至少一個該變量的可達程序點處的待測日 志輸出程序語句中被引用; 如果是,推薦在所述待測日誌輸出語句所在程序點插入所述待測日誌輸出語句。
10. 根據權利要求9所述的方法,其特徵在於,所述獲取期望涵蓋的程序語句包括: 如果所述程序中已存在日誌輸出語句,針對每個在所述程序語句中被執行定值操作的 變量,判斷該變量的定值是否可到達至少一條已存在的日誌輸出語句所在程序點,其中,所 述至少一條已存在的日誌輸出語句所在程序點為可達已存程序點,且該變量在至少一個所 述可達已存程序點處的日誌輸出程序語句中被引用,如果否,將該執行定值操作的程序語 句納入期望涵蓋的程序語句; 如果所述程序中不存在日誌輸出語句,將所述程序中的所有程序語句納入期望涵蓋的 程序語句。
11. 根據權利要求9所述的方法,其特徵在於,還包括: 如果期望涵蓋的程序語句中被執行定值操作的變量不滿足第一條件和/或者不滿足 第二條件,提取新程序點,返回到提取出與所述程序點對應的變量的步驟。
12. 根據權利要求9-11任一項所述的方法,其特徵在於,所述判斷期望涵蓋的程序語 句中每個被執行定值操作的變量是否均滿足第一條件且滿足第二條件包括: 針對每條待測日誌輸出語句執行查找步驟,其中所述查找步驟包括:求解期望涵蓋的 程序語句中,以所針對的待測日誌輸出語句所在程序點、及在所針對的待測日誌輸出語句 中被引用的變量集合為切片標準獲得的程序切片,將所述程序切片納入已查程序語句集 合; 計算所述已查程序語句集合中所有程序語句的數量與期望涵蓋的程序語句的數量的 比例; 如果所述比例在日誌相對強度範圍內,確定所述程序語句中每個被執行定值操作的變 量均滿足第一條件且滿足第二條件; 如果所述比例未在日誌相對強度範圍內,確定所述程序語句中被執行定值操作的變量 中存在不滿足第一條件和/或者第二條件的變量。
13. 根據權利要求12所述的方法,其特徵在於,在計算已查程序語句集合中所有程序 語句的數量與期望涵蓋的程序語句的數量的比例之前,還包括: 針對所述已查程序語句集合中的程序語句,採用符號執行過程並調用約束求解工具, 查找出已查程序語句集合中所有與待測日誌輸出語句所在程序點不存在可行路徑的程序 語句,將該程序語句從所述已查程序語句集合中排除。
14. 根據權利要求12所述的方法,其特徵在於,如果所述比例在日誌相對強度範圍內, 還將所述比例作為日誌相對強度範圍的下限,更新所述日誌相對強度範圍; 所述推薦在所述待測日誌輸出語句所在程序點插入待測日誌輸出語句包括: 將該待測日誌輸出語句所在程序點及被該待測日誌輸出語句引用的變量記錄在一條 日誌推薦提示中; 判斷是否還繼續進行推薦檢測; 如果是,提取新程序點,返回到提取出與所述程序點對應的變量的步驟; 如果否,反饋最後記錄的一條日誌推薦提示。
15. 根據權利要求9所述的方法,其特徵在於,還包括: 如果已根據所述推薦在程序中插入了日誌輸出語句,將所述程序中所有程序語句作為 期望涵蓋的程序語句,將所述程序中所有日誌輸出語句作為待測日誌輸出語句,並判斷期 望涵蓋的程序語句中每個被執行定值操作的變量是否均滿足第一條件且滿足第二條件,如 果不滿足,返回到獲取期望涵蓋的程序語句的步驟。
16. -種程序日誌推薦裝置,其特徵在於,包括: 程序語句獲取單元:用於獲取期望涵蓋的程序語句; 推薦位置提取單元:用於提取所述期望涵蓋的程序語句中的至少一個程序點; 推薦變量提取單元:用於提取出與所述程序點對應的變量,所述變量包括在所述程序 點處活躍的變量,和/或者,用戶在所述程序點處指定的變量; 待測日誌獲取單元:用於將每個所提取的程序點各自作為一個待檢測日誌輸出語句所 在程序點,以及,將每個程序點對應的變量作為該程序點的待檢測日誌輸出語句引用的變 量; 推薦判斷單元:用於判斷所述期望涵蓋的程序語句中每個被執行定值操作的變量是否 均滿足第一條件且滿足第二條件,所述第一條件為該變量被執行所述定值操作後確定的定 值可到達至少一條待測日誌輸出語句所在程序點,其中,所述至少一條待測日誌輸出語句 所在程序點為該變量的可達程序點,所述第二條件為該變量在至少一個該變量的可達程序 點處的待測日誌輸出程序語句中被引用; 推薦確定單元:用於如果推薦判斷單元判斷結果為是,推薦在所述待測日誌輸出語句 所在程序點插入所述待測日誌輸出語句。
17. 根據權利要求16所述的裝置,其特徵在於,所述程序語句獲取單元:用於如果所述 程序中已存在日誌輸出語句,針對每個在所述程序語句中被執行定值操作的變量,判斷該 變量的定值是否可到達至少一條已存在的日誌輸出語句所在程序點,其中,所述至少一條 已存在的日誌輸出語句所在程序點為可達已存程序點,且該變量在至少一個所述可達已存 程序點處的日誌輸出程序語句中被引用,如果否,將該執行定值操作的程序語句納入期望 涵蓋的程序語句;如果所述程序中不存在日誌輸出語句,將所述程序中的所有程序語句納 入期望涵蓋的程序語句。
18. 根據權利要求16所述的裝置,其特徵在於,還包括: 重新推薦單元:用於如果期望涵蓋的程序語句中被執行定值操作的變量不滿足第一條 件或者不滿足第二條件,提取新程序點,重新觸發推薦變量提取單元。
19. 根據權利要求16-18任一項所述的裝置,其特徵在於,所述推薦判斷單元包括: 查找子單元:用於針對每條待測日誌輸出語句執行查找步驟,其中所述查找步驟包括: 求解期望涵蓋的程序語句中,以所針對的待測日誌輸出語句所在程序點、及在所針對的待 測日誌輸出語句中被引用的變量集合為切片標準獲得的程序切片,將所述程序切片納入已 查程序語句集合; 計算子單元:用於計算所述已查程序語句集合中所有程序語句的數量與期望涵蓋的程 序語句的數量的比例; 比例判斷子單元:用於如果所述比例在日誌相對強度範圍內,確定所述程序語句中每 個被執行定值操作的變量均滿足第一條件且滿足第二條件;如果所述比例未在日誌相對強 度範圍內,確定所述程序語句中被執行定值操作的變量中存在不滿足第一條件和/或者第 二條件的變量。
20. 根據權利要求19所述的裝置,其特徵在於,所述推薦判斷單元還包括: 排除子單元:用於在計算子單元計算已查程序語句集合中所有程序語句的數量與期望 涵蓋的程序語句的數量的比例之前,針對所述已查程序語句集合中的程序語句,採用符號 執行過程並調用約束求解工具,查找出已查程序語句集合中所有與待測日誌輸出語句所在 程序點不存在可行路徑的程序語句,將該程序語句從所述已查程序語句集合中排除。
21. 根據權利要求19所述的裝置,其特徵在於,所述比例判斷子單元:還用於如果所述 比例在日誌相對強度範圍內,將所述比例作為日誌相對強度範圍的下限,更新所述日誌相 對強度範圍; 所述推薦確定單元包括: 推薦記錄子單元:用於將該待測日誌輸出語句所在程序點及被該待測日誌輸出語句引 用的變量記錄在一條日誌推薦提示中; 繼續判斷子單元:用於判斷是否還繼續進行推薦檢測; 繼續確定子單元:用於如果繼續判斷子單元判斷結果為是時,提取新程序點,重新觸發 推薦變量提取單元; 反饋推薦子單元:用於如果繼續判斷子單元判斷結果為否時,反饋最後記錄的一條日 志推薦提示。
22. 根據權利要求16所述的裝置,其特徵在於,還包括: 綜合檢測單元:用於如果已根據所述推薦在程序中插入了日誌輸出語句,將所述程序 中所有程序語句作為期望涵蓋的程序語句,將所述程序中所有日誌輸出語句作為待測日誌 輸出語句,並判斷期望涵蓋的程序語句中每個被執行定值操作的變量是否均滿足第一條件 且滿足第二條件,如果不滿足,重新觸發程序語句獲取單元執行。
【文檔編號】G06F11/36GK104424097SQ201310379397
【公開日】2015年3月18日 申請日期:2013年8月27日 優先權日:2013年8月27日
【發明者】李豐, 霍瑋, 陳聰明, 馮曉兵 申請人:華為技術有限公司, 中國科學院計算技術研究所

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀