You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于含循环代码的语句覆盖分析咨询:求a=5、b=7时的语句覆盖率

语句覆盖率计算:当a=5、b=7时的结果

先把你的代码整理成更易读的结构化格式:

read a;
read b;
i = 0;
if (a > b) {
    while (i < a) {
        print(i);
        i++;
    }
} else {
    while (i < b) {
        print(i);
        i++;
    }
}

第一步:明确语句覆盖的核心定义

语句覆盖要求每一条独立的可执行语句至少被执行一次——循环内的语句只要执行过一次就算覆盖,不需要考虑循环执行的次数。

第二步:分析a=5、b=7时的执行路径

因为 5 > 7 的判断结果为假,代码会直接进入else分支,具体执行流程如下:

  1. 执行read a;和read b;读取输入值
  2. 执行i = 0;完成变量初始化
  3. 执行if (a > b)的条件判断(结果为假)
  4. 进入else分支,执行while (i < b)的条件判断(第一次为真,后续循环中重复判断直到i=7时为假)
  5. 循环体内的print(i);和i++;会被执行多次(从i=0到i=6),但这两条语句只要执行过一次就算覆盖

第三步:统计覆盖与未覆盖的语句

总可执行语句(去重后共10条):

  • 输入类:read a;、read b;
  • 赋值类:i = 0;
  • 判断类:if (a > b)、while (i < a)、while (i < b)
  • 执行类:print(i);(if分支内)、i++;(if分支内)、print(i);(else分支内)、i++;(else分支内)

已覆盖的语句(共7条):

read a;、read b;、i = 0;、if (a > b)、while (i < b)、print(i);(else分支内)、i++;(else分支内)

未覆盖的语句(共3条):

while (i < a)、print(i);(if分支内)、i++;(if分支内)

第四步:计算最终覆盖率

语句覆盖率 = (已覆盖语句数 / 总可执行语句数) × 100% = (7/10) × 100% = 70%

注:如果把else的分支入口单独算作一条语句,总语句数会变为11,覆盖率约为72.7%,但行业内通常不会将else分支入口单独统计,因为它是if判断的逻辑延伸,核心统计的是独立的可执行逻辑语句。

内容的提问来源于stack exchange,提问作者Rashmika gamage

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 07:13:13