自由文本搜索与代码覆盖相结合

时间:2008-09-07 03:38:15

标签: language-agnostic search debugging code-coverage

是否有任何工具可以让我对系统代码执行自由文本搜索,但只能在特定调用期间实际执行的代码上执行?

为了给出一些背景知识,在学习新系统的过程中,我经常发现自己想要发现某些特定价值来自哪里,但是搜索整个代码库会出现比我单独合理评估更多的匹配

对于它的价值,我曾经在Perl和Java中曾经想过这个,但是我想知道是否有任何语言都支持这个功能。

1 个答案:

答案 0 :(得分:1)

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

你可能可以直接使用它,或者你可能需要对它进行预处理并删除未执行的代码,或者在每一行上添加一个新的表示法,告诉它是否已被执行(大多数工具只显示控制点的路径信息):

因此,从覆盖率工具中,您可能会收到如下报告:

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

符号T-表示if语句只被评估为true,因此只执行了代码的第一部分。后面的符号'x'表示该行已执行。

您应该能够形成仅在第一列包含T,F或x时匹配的正则表达式,以便您可以捕获所有执行的控制语句和执行的行。

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

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

- 亚当