是否有任何工具可以让我对系统代码执行自由文本搜索,但只能在特定调用期间实际执行的代码上执行?
为了给出一些背景知识,在学习新系统的过程中,我经常发现自己想要发现某些特定价值来自哪里,但是搜索整个代码库会出现比我单独合理评估更多的匹配
对于它的价值,我曾经在Perl和Java中曾经想过这个,但是我想知道是否有任何语言都支持这个功能。
答案 0 :(得分:1)
您通常可以扭曲代码覆盖率工具的手臂并获取一个报告,该报告显示在给定运行期间已执行的路径。此报告应显示代码本身,并根据coverage工具关于是否执行给定路径的特定符号标记前几列。
你可能可以直接使用它,或者你可能需要对它进行预处理并删除未执行的代码,或者在每一行上添加一个新的表示法,告诉它是否已被执行(大多数工具只显示控制点的路径信息):
因此,从覆盖率工具中,您可能会收到如下报告:
T- if(sometest)
{
x somecode;
}
else
{
- someother_code;
}
符号T-表示if语句只被评估为true,因此只执行了代码的第一部分。后面的符号'x'表示该行已执行。
您应该能够形成仅在第一列包含T,F或x时匹配的正则表达式,以便您可以捕获所有执行的控制语句和执行的行。
有时您只会在每个控制点获取覆盖信息,然后需要您解析C文件并自行标记执行行。不是那么容易,但也不是不可能。
然而,这听起来像一个有趣的问题,解决方案可能更多的工作而不是它的价值......
- 亚当