“反向”代码覆盖的工具?

Imr*_*hid 5 testing code-coverage

我熟悉许多代码覆盖率工具,它们告诉我我的测试覆盖了多少行/分支/等,甚至告诉我代码的哪些部分覆盖率很低。

是否有任何工具可以做相反的事情——也就是说,给定一段代码,它可以告诉我哪些测试会触及它吗?通过使用相关的测试,这将使开始探索不熟悉和记录不佳的代码变得容易。

您可能会说从单元测试的组织方式来看应该是显而易见的,但事实往往并非如此。我曾参与过不止一个项目就是这种情况。

我碰巧对 java/scala 感兴趣,但我也只是感兴趣,如果有什么能做到这一点,或者它只是一个完全疯狂的想法。

Ira*_*ter 0

这很容易实现。您要做的就是单独运行单元测试并捕获它们单独的跟踪信息。

现在,跟踪本质上是一个位向量,其中每个位代表程序中被覆盖或未被覆盖的位置。

然后,您为感兴趣的代码构建人工跟踪。(大多数工具不会让这变得容易,但工具可用的覆盖信息应该使这成为可能)。

最后,您获取人工跟踪,并将其(它是一个位向量,还记得吗?)与各个单元测试跟踪相交。非空交集标识了执行感兴趣代码的那些测试。

Semantic Designs(我的公司,请参阅简介)提供了测试覆盖工具,可以收集测试的单独跟踪,并可以使用其 UI 进行交集。一些定制编码可以制造人工痕迹。