1. 程式人生 > >程式碼覆蓋度工具OpenCppCoverage(cpp)、EclEmma(java)、Coverage(python)使用

程式碼覆蓋度工具OpenCppCoverage(cpp)、EclEmma(java)、Coverage(python)使用

一、OpenCppCoverage(cpp)

1、命令列方式

(1)下載和安裝

(2)執行方法

假設已有程式MatrixUDG,生成的可執行檔名稱為:MatrixUDG.exe,存放目錄:F:\code\Cpp\VS\DailyPractice\MatrixUDG\Debug(exe檔案在程式執行之後便會自動生成),則執行步驟為:
Step1:開啟命令列提示符
Step2:將當前目錄切換到F:\code\Cpp\VS\DailyPractice\MatrixUDG\Debug
Step3:使用下列命令:

OpenCppCoverage.exe --sources F:\code
\Cpp\VS\DailyPractice\MatrixUDG\Debug -- MatrixUDG.exe

Step4:自動生成的CoverageReport存放在當前目錄。
注:遺留問題:生成的html檔案顯示不出詳細內容,只有title

2、作為VisualStudio外掛

(1)外掛安裝

開啟VisualStudio –> 工具 –> 擴充套件和更新 –> 聯機 –> 右上角輸入OpenCppCoverage,在下面的結果會出現“OpenCppCoverage Plugin”點選安裝即可(安裝中需要將VisualStudio重啟)

(2)執行

程式寫好,編譯執行之後,點選“工具 –> Run OpenCppCoverage”,程式執行,將命令列視窗關掉,則程式碼會出現紅色或者綠色的陰影,下面會出現Coverage的報告,如下圖:
這裡寫圖片描述

二、EclEmma(java)

EclEmma是一款整合在Eclipse上的測試程式碼覆蓋度的外掛。

(1)下載和安裝

下載地址:https://sourceforge.net/projects/eclemma/ ,解壓到[eclipse_home]\dropins\中。
安裝(我的版本是Eclipse neon.3):開啟eclipse –> help –> install new software –> add –> local –> 選擇你下載的eclemma,點OK就可以安裝,然後按提示重啟。

(2)執行

Step1:程式碼寫好之後,執行java程式
Step2:右擊程式碼 –> Coverage As –> Java Application,執行完畢,檢視執行結果,如下圖:
這裡寫圖片描述


Step3:匯出報告:右擊Project name – > Export –> 搜尋CoverageReport –> 點選CoverageReport –> 選擇儲存路徑即可,匯出的html檔案如下圖:
這裡寫圖片描述

三、Coverage(python)

Coverage支援分支覆蓋。
安裝方法:
下載地址:https://pypi.python.org/pypi/coverage
安裝方法:直接安裝,安裝之後將E:\Anaconda\Scripts(如果沒有安裝Anaconda,這個目錄應該在python的安裝目錄下)新增到path環境變數中。

1、命令列方式

命令詳見: http://coverage.readthedocs.io/en/latest/cmd.html
關鍵命令如下:
這裡以calculator.py為例,這個py檔案目錄為:F:\code\python\workspace1\testCoverage\
(1)run
將當前目錄切換至F:\code\python\workspace1\testCoverage\,輸入下列命令:

coverage run calculator.py

執行完之後,會自動生成一個覆蓋率統計結果檔案,其後綴名為.coverage。
(2)report
有個.coverage檔案,可以使用report引數將統計結果在命令列中打印出來,具體命令如下:

coverage report

(3)html
html引數可以生成html測試報告,具體命令如下:

coverage html -d covhtml

具體命令列截圖如下:
這裡寫圖片描述
html檔案如下圖所示:
這裡寫圖片描述

1、程式碼API呼叫方式

使用如下程式碼:

import coverage

cov = coverage.coverage()
cov.start()

#coding

cov.stop()
cov.report()
cov.html_report(directory='covhtml')

注:遺留問題:使用coverage.py API方法呼叫不成功,總是提示“Coverage.py warning: No data was collected. (no-data-collected)”錯誤。