代码覆盖率和分析之间的区别

Kam*_*ire 5 profiling code-coverage

代码覆盖率和分析之间有什么区别。

哪个是代码覆盖最好的开源工具。

Mik*_*vey 2

覆盖率对于查看代码的哪些部分尚未运行非常重要。根据我的经验,它必须在多个用例中积累,因为软件的任何单次运行都只会使用部分代码。

分析在不同的时间意味着不同的事情。有时这意味着衡量绩效。有时这意味着诊断内存泄漏。有时,这意味着了解多线程或其他低级活动。

当目标是通过查找所谓的“瓶颈”并修复它们来提高软件性能时,不要仅仅满足于任何分析器,甚至不一定是高度推荐或值得尊敬的分析器。使用能够获取正确信息并以正确方式将其呈现给您的信息非常重要,因为这方面存在很多混乱。 有关该主题的更多信息。

补充:对于覆盖工具,我一直都是自己做的。在几乎每个例程和基本块中,我都插入这样的调用:Utils.CovTest("file name, routine name, comment that tells what's being done here")。该例程记录了它被调用的事实,当程序完成时,所有这些注释都被附加到一个文本文件中。然后是一个后处理步骤,从完整列表(通过类似 grep 的程序获取)中“减去”该文件。结果是尚未测试的内容的列表,需要额外的测试用例。

不进行覆盖测试时,Utils.CovTest不执行任何操作。无论如何,我将它保留在最内循环之外,因此它不会对性能产生太大影响。在 C 和 C++ 中,我使用一个宏来实现这一点,在正常使用期间,该宏不会扩展为任何内容。