2008-09-07 30 views
0

是否有任何工具可以讓我對系統代碼執行自由文本搜索,但只能在特定調用期間實際執行的代碼執行自由文本搜索?爲了給出一些背景知識,在圍繞新系統學習時,我經常發現自己想要發現某些特定值來自哪裏,但是搜索整個代碼庫會比我能合理地評估更多的匹配個別。與代碼覆蓋率相結合的自由文本搜索

對於它的價值,我一直想在Perl和Java中這樣做,但我很想知道任何語言是否有支持此功能的系統。

回答

1

您通常可以扭曲代碼覆蓋工具的手臂並獲取顯示在給定運行期間執行的路徑的報告。此報告應顯示代碼本身,根據覆蓋率工具的特定符號標記前幾列,以指明是否執行了給定路徑。

您可能會直接使用它,或者您可能需要對其進行預處理,或者刪除未執行的代碼,或者在每行上添加一個新的表示法,以指示它是否已執行(大多數工具只會從覆蓋的工具,你可能會得到這樣一個報告

所以:在控制點的顯示路徑信息)

T- if(sometest) 
    { 
x  somecode; 
    } 
    else 
    { 
-  someother_code; 
    } 

的符號T-表明if語句永遠只能評估爲真,所以只代碼的第一部分被執行。後面的符號'x'表示該行已執行。

只有當第一列包含T,F或x時,才能形成正則表達式,因此您可以捕獲執行的所有控制語句和執行的行。

有時您只會在每個控制點獲得覆蓋信息,然後您需要解析C文件並自行標記執行行。不是那麼容易,但也不是不可能的。

不過,這聽起來像一個有趣的問題,其中的解決方案可能是更多的工作比它的價值......

- 亞當