1、 文档目标
验证MDK中代码覆盖率功能中百分比数据的意思
2、 问题场景
在实现MDK的Trace功能的时候,对于其中的代码覆盖率功能中数据的意思未进行准确的确认。根据目前的对于代码覆盖率的概念进行实际测试。
3、软硬件环境
1)、软件版本:MDK v5.38a
2)、电脑环境:Windows 11
3)、外设硬件:无
4、解决方法
1)、图4-1是对于LED_On函数的代码覆盖率检测。从图中可以看到对应函数的代码覆盖率是100%的。

图4-1
2)、然后,对于LED_On这个函数进行修改,添加一些不会被执行的代码进入,如图4-2。图中显示可以看到有四个语句是未被执行的。在代码覆盖率的窗口中LED_On这个函数的代码覆盖率只有65%了。

图4-2
3)、从上面的两步可以确认,MDK中的代码覆盖率是用于检测工程中被执行的语句的数量的占比。未被执行的语句是不会被计入到代码覆盖率中。
并且,代码覆盖率并不是根据被执行的C语言语句占总的C语言语句的比例进行计算的。是根据汇编指令去计算的。对应的函数执行所需要的所有汇编指令中被执行C语言语句的汇编指令的占比,统计出该函数的代码覆盖率。