分支机构覆盖是否意味着条件覆盖?

问题描述 投票:0回答:1

我需要一些帮助来理解和正确解释 gcov 结果。

已执行行数:24 行中的 25% 执行的分支:20 个的 30% 至少参加过一次:20 次中的 15% 执行的调用:2 的 50%

执行的行数为我提供了报表覆盖范围。 执行的分支为我提供了决策覆盖率和条件覆盖率

如果我说 100% 分支覆盖率意味着 100% 决策覆盖率和条件覆盖率,我对吗?

因为我的理解是 if 语句 if(a<1 || b>2){...}else{...} 没有两个分支而是 4 因为我有两个条件。这意味着如果我要遍历所有 4 个分支,我应该具有条件覆盖率,或者分支覆盖率是否不提供有关条件覆盖率的信息

感谢您的帮助。

干杯

matlab mingw code-coverage gcov
1个回答
0
投票

如果您具体谈论 gcov 工具,则分支覆盖率实际上是计算到达每个基本块末尾的点。 请参阅了解 gcov 文件中的分支

条件覆盖范围有所不同。 请参阅 是否可以使用 gcov 检查条件覆盖率?(答案是否定的,不是,至少不是使用 just gcov。更新 2025 年 1 月 20 日:现在是,在编译时使用新标志,并且

gcov 
时间:请参阅链接。)正如Marc Gilsse的评论注释,您可以使用
gcov -a
计算每个基本块的执行次数,并将其用作合理的近似值 - 但这不是同一件事。

C++ 的异常使得处理分支覆盖变得混乱;请参阅 LCOV/GCOV 分支覆盖率,其中 C++ 生成分支遍布各处。 这意味着您不一定能够首先覆盖所有分支。

另请参阅,例如,了解 gcov 文件中的块

© www.soinside.com 2019 - 2024. All rights reserved.