免费文本搜索与代码覆盖相结合

时间:2020-03-05 18:48:52  来源:igfitidea点击:

有没有什么工具可以让我对系统代码执行自由文本搜索,而仅对在特定调用期间实际执行的代码进行搜索?

为了提供一些背景知识,在学习围绕新系统的方法时,我经常发现自己想发现某个特定值的来源,但是搜索整个代码库所得到的匹配远远超出了我个人可以合理评估的范围。

对于它的价值,我曾经一次或者一次都希望在Perl和Java中使用它,但是我很想知道是否有任何语言都具有支持此功能的系统。

解决方案

回答

通常,我们可以扭转代码覆盖率工具的手臂并获得报告,该报告显示在给定运行期间已执行的路径。该报告应显示代码本身,并根据覆盖率工具关于是否执行给定路径的特定标记来标记前几列。

我们可能可以直接使用它,或者可能必须对其进行预处理,然后删除未执行的代码,或者在每行上添加新的符号来表明其是否已执行(大多数工具仅在以下位置显示路径信息:控制点):

因此,从覆盖率工具中,我们可能会获得如下报告:

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

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

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

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

尽管如此,这听起来还是一个有趣的问题,其中解决方案可能需要更多的工作,而不是值得的。

-亚当