Cantata中文网站 > 最新资讯 > Cantata怎么查看代码覆盖率 Cantata覆盖率结果不完整如何分析
教程中心分类
Cantata怎么查看代码覆盖率 Cantata覆盖率结果不完整如何分析
发布时间:2026/08/27 09:50:01

  Cantata执行单元测试或集成测试后,可以继续查看代码被测试用例实际执行到什么程度。覆盖率结果并不只有一个百分比,还会按语句、判定、条件、MC/DC等不同指标分别统计。测试已经运行成功,但覆盖率里少了某些函数、某些源码文件没有数据,或者多个测试脚本的结果没有合在一起时,先分清是代码没有执行到、插桩范围缺失,还是当前查看的覆盖数据没有选全,处理起来会清楚很多。

  一、Cantata怎么查看代码覆盖率

 

  1、运行带覆盖率检查的测试脚本

 

  Cantata的覆盖率数据来自插桩后的源码执行结果,测试脚本运行前要确认已经启用对应Coverage Rule Set。

 

  ①打开当前Cantata测试工程,在【Project Explorer】中找到准备执行的测试脚本。

 

  ②打开测试脚本配置,检查【Coverage Rule Set】是否已经启用。

 

  ③按照项目要求选择覆盖指标,例如【Entry Point】【Statement】【Decision】【Condition】或【MC/DC】。

 

  ④保存测试脚本并执行【Build】。

 

  ⑤构建完成后运行测试,让插桩后的测试程序真正执行被测代码。

 

  ⑥测试结束后检查是否已经生成对应的覆盖结果数据。

 

  ⑦再进入覆盖率结果视图查看当前测试脚本的统计结果。

 

  Cantata是在源码临时副本上做覆盖率插桩,原来的生产源码不会因为覆盖率采集而被直接修改。不同Coverage Rule Set对应的检查指标也不同,所以查看结果前要先确认当前测试到底采集了哪一类数据。

 

  2、在Coverage Results Explorer里查看结果

 

  覆盖数据生成后,可以从结果树逐层找到没有执行到的代码。

 

  ①打开【Coverage Results Explorer】。

 

  ②在结果树中找到当前工程和对应测试运行记录。

 

  ③展开源码文件,查看当前文件的覆盖率统计。

 

  ④继续展开函数,检查具体函数的覆盖情况。

 

  ⑤根据项目要求切换【Statements】【Decisions】【Conditions】或【MC/DC】等指标。

 

  ⑥选中覆盖率偏低的函数,在【Coverage Viewer】中打开源码。

 

  ⑦查看源码中的颜色标识和覆盖项记录,找到没有执行到的语句、分支或条件结果。

 

  ⑧测试用例较多时,可以按【Test Case】或【Test Run】筛选,确认是哪一组测试贡献了当前覆盖结果。

 

  Cantata还能把结果下钻到单行代码里的具体结构,因此看到某个函数覆盖率不足时,不用只盯着函数级百分比,可以继续查到是哪一个判定结果或条件组合没走到。

 

  3、确认Data Manager当前加载了哪些数据

 

  同一个工程跑过多批测试后,Coverage Viewer显示的内容还会受到当前数据选择影响。

 

  ①打开【Data Manager】视图。

 

  ②查看当前已经加载的测试结果和覆盖数据。

 

  ③确认准备分析的测试脚本和测试运行记录处于选中状态。

 

  ④多个测试运行需要一起查看时,把对应覆盖数据同时加入当前结果集。

 

  ⑤不需要参与本次分析的数据可以暂时取消选择。

 

  ⑥回到【Coverage Results Explorer】,检查汇总百分比有没有变化。

 

  较新的Cantata版本把覆盖率显示选择交给Data Manager控制。如果只加载了一次测试运行,其他脚本已经生成的覆盖数据不会自动算进当前显示结果。

 

  二、Cantata覆盖率结果不完整如何分析

  1、某些源文件完全没有覆盖数据

 

  整个文件都没有结果时,先查插桩范围,而不是马上补测试用例。

 

  ①打开当前测试脚本,检查【Software Under Test】是否包含目标源码。

 

  ②确认目标.c或.cpp文件参与了测试构建。

 

  ③检查【Coverage Rule Set】的应用范围。

 

  ④重新执行Build,查看【Console】中该文件是否经过Cantata覆盖率插桩处理。

 

  ⑤测试运行结束后检查对应.COV数据是否正常生成。

 

  ⑥重新载入覆盖结果,再到【Coverage Results Explorer】查看目标文件。

 

  如果源码没有进入覆盖率插桩范围,即使函数在测试过程中被其他模块调用,也不会产生Cantata可以统计的结构覆盖数据。

 

  2、有覆盖数据但部分分支一直是红色

 

  这种情况说明插桩正常,只是现有测试没有走到对应路径。

 

  ①在【Coverage Results Explorer】选中覆盖率不足的函数。

 

  ②打开【Coverage Viewer】。

 

  ③切换到当前关注的【Decision】或【MC/DC】指标。

 

  ④找到没有执行的True、False分支或条件组合。

 

  ⑤回到对应测试脚本,打开测试用例。

 

  ⑥修改输入参数、全局变量或Stub返回值,让程序进入缺失路径。

 

  ⑦增加新的测试用例后重新Build并执行。

 

  ⑧再次查看该函数的覆盖变化。

 

  如果某个分支依赖外部函数返回错误码,还要同步调整Stub。单纯增加相似输入,代码仍走原来的路径,覆盖率不会发生变化。

 

  3、多个测试脚本的结果没有合并

 

  一个模块可能分别由几个单元测试或集成测试执行,单看其中一次运行时,覆盖结果会显得偏低。

 

  ①检查每个测试脚本运行后生成的【.COV】文件。

 

  ②确认需要参与统计的测试运行都已经完成。

 

  ③进入【Data Manager】,选择这些覆盖数据。

 

  ④回到【Coverage Results Explorer】查看聚合后的结果。

 

  ⑤需要形成单独的组合结果时,按项目配置合并多个.COV数据。

 

  ⑥用于后续报告时,再检查组合后的覆盖指标和源码范围是否一致。

 

  Cantata支持把不同测试运行产生的.COV数据放在一起分析。如果不同运行使用了不同源码版本或不同编译宏,不能只看一个汇总百分比,还要确认这些数据是否属于同一分析范围。

  三、覆盖率仍有缺口怎么继续处理

 

  1、检查无法执行和不准备执行的代码

 

  覆盖缺口不一定都能靠补输入处理,有些代码在当前测试环境里本来就走不到。

 

  ①在【Coverage Viewer】定位未覆盖代码。

 

  ②检查这段代码是否受编译宏、平台条件或目标硬件控制。

 

  ③确认它在当前Build Variant里是否实际参与编译。

 

  ④属于其他编译变体时,切换对应构建配置重新采集覆盖数据。

 

  ⑤属于防御性分支时,确认现有测试环境能不能构造触发条件。

 

  ⑥无法构造的路径要保留分析记录,不要为了改变百分比直接删除代码或修改判定条件。

 

  Cantata支持Build Variant Coverage,项目使用不同宏构建多个产品变体时,可以分别采集后再查看跨变体覆盖情况。

 

  2、检查测试是否中途退出

 

  覆盖文件不完整还可能和测试运行本身有关。

 

  ①打开【Test Results Explorer】检查本次测试状态。

 

  ②查看【Console】里是否存在程序异常退出、目标连接中断或测试没有执行完的记录。

 

  ③找出停止前执行到的测试用例。

 

  ④单独运行该用例,检查是否存在死循环、非法访问或外部依赖异常。

 

  ⑤修复测试环境后重新执行测试脚本。

 

  ⑥确认.COV文件正常写出,再重新加载覆盖结果。

 

  测试程序没有跑完时,后半段代码不会产生对应执行记录,这和Coverage Viewer显示错误是两回事。

 

  总结

 

  Cantata覆盖率结果出现缺失时,要把插桩范围、测试执行路径、覆盖数据选择和不同构建变体分开看。整份源码没有数据,多半要查测试和插桩配置;只有部分语句或分支没有覆盖,则应回到测试条件本身继续补充。多个测试脚本共同覆盖同一模块时,也要确认结果是否已经放到同一分析范围中。把这些关系理顺后,覆盖率数据会更容易和实际测试情况对应起来。如需进一步了解Cantata代码覆盖率查看、覆盖缺口分析与测试结果合并方法,欢迎联系咨询。

135 2431 0251