1、 文檔目標(biāo)
驗(yàn)證MDK中代碼覆蓋率功能中百分比數(shù)據(jù)的意思。
2、 問題場(chǎng)景
在實(shí)現(xiàn)MDK的Trace功能的時(shí)候,對(duì)于其中的代碼覆蓋率功能中數(shù)據(jù)的意思未進(jìn)行準(zhǔn)確的確認(rèn)。根據(jù)目前的對(duì)于代碼覆蓋率的概念進(jìn)行實(shí)際測(cè)試。
3、軟硬件環(huán)境
1)、軟件版本:MDK v5.38a
2)、電腦環(huán)境:Windows 11
3)、外設(shè)硬件:無
4、解決方法
1)、圖4-1是對(duì)于LED_On函數(shù)的代碼覆蓋率檢測(cè)。從圖中可以看到對(duì)應(yīng)函數(shù)的代碼覆蓋率是100的。

圖4-1
2)、然后,對(duì)于LED_On這個(gè)函數(shù)進(jìn)行修改,添加一些不會(huì)被執(zhí)行的代碼進(jìn)入,如圖4-2。圖中顯示可以看到有四個(gè)語句是未被執(zhí)行的。在代碼覆蓋率的窗口中LED_On這個(gè)函數(shù)的代碼覆蓋率只有65了。

圖4-2
3)、從上面的兩步可以確認(rèn),MDK中的代碼覆蓋率是用于檢測(cè)工程中被執(zhí)行的語句的數(shù)量的占比。未被執(zhí)行的語句是不會(huì)被計(jì)入到代碼覆蓋率中。
并且,代碼覆蓋率并不是根據(jù)被執(zhí)行的C語言語句占總的C語言語句的比例進(jìn)行計(jì)算的。是根據(jù)匯編指令去計(jì)算的。對(duì)應(yīng)的函數(shù)執(zhí)行所需要的所有匯編指令中被執(zhí)行C語言語句的匯編指令的占比,統(tǒng)計(jì)出該函數(shù)的代碼覆蓋率。