2008-09-07 32 views
0

是否有任何工具可以让我对系统代码执行自由文本搜索,但只能在特定调用期间实际执行的代码执行自由文本搜索?为了给出一些背景知识,在围绕新系统学习时,我经常发现自己想要发现某些特定值来自哪里,但是搜索整个代码库会比我能合理地评估更多的匹配个别。与代码覆盖率相结合的自由文本搜索

对于它的价值,我一直想在Perl和Java中这样做,但我很想知道任何语言是否有支持此功能的系统。

回答

1

您通常可以扭曲代码覆盖工具的手臂并获取显示在给定运行期间执行的路径的报告。此报告应显示代码本身,根据覆盖率工具的特定符号标记前几列,以指明是否执行了给定路径。

您可能会直接使用它,或者您可能需要对其进行预处理,或者删除未执行的代码,或者在每行上添加一个新的表示法,以指示它是否已执行(大多数工具只会从覆盖的工具,你可能会得到这样一个报告

所以:在控制点的显示路径信息)

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

的符号T-表明if语句永远只能评估为真,所以只代码的第一部分被执行。后面的符号'x'表示该行已执行。

只有当第一列包含T,F或x时,才能形成正则表达式,因此您可以捕获执行的所有控制语句和执行的行。

有时您只会在每个控制点获得覆盖信息,然后您需要解析C文件并自行标记执行行。不是那么容易,但也不是不可能的。

不过,这听起来像一个有趣的问题,其中的解决方案可能是更多的工作比它的价值......

- 亚当