【ARM】验证MDK中代码覆盖率数据中百分比的意思

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语言语句的汇编指令的占比,统计出该函数的代码覆盖率。