【C++】統計代碼覆蓋率(三)


報告集成到jenkins才是最終目的,因此又進行了部分資料查找,得到html和xml報告集成jenkins的配置如下:

一 集成html報告

這種方式集成在你已經用gcov+lcov生成了html報告的基礎上,在此只需要將它放到jenkins中,步驟如下:

1 打開jenkins->進入工程->配置->增加構建后操作步驟->Publish HTML reports                                              

2 生成html報告:配置->增加構建步驟->Execute shell

  1. cd your_path
    sh exittest.sh(上一節中exit程序的腳本)
    cd your_gcda_gcno_path
    lcov -c -o coverage.info  -b . -d . 
    genhtml coverage.info -o coverage
    cp coverage_result /data/report/coverage   #注意該路徑與html報告的讀取路徑一致

3 運行完畢,即可在jenkins頁面左側和中上側看到THML Report 點開即可查看詳情,如下

 

二 集成Cobertura的xml報告

集成到Cobertura與集成到html類似,都需要配置構建后步驟和Execute shell,如下

1 jenkins的Cobertura插件

1) jenkins安裝插件Cobertura: jenkins頁面->系統管理->管理插件,可在該頁面搜索安裝插件Cobertura

2)在工程的配置中,增加構建后操作步驟->Publish Cobertura Coverage Report

3) 配置Cobertura

2 配置Execute shell,得到xml文件

1)在jenkins的工程配置中增加構建步驟->Execute shell

sudo sh /data/ad_server/exittest.sh
cd your_code_path
sudo gcovr --xml-pretty -r . --output /data/AdServerTest/coverage.xml

2)在jenkins構建后即可查看結果

 

三 問題

1 jenkins配置后生成xml報告失敗,報錯如下:

[Cobertura] No coverage results were found using the pattern '/data/cppcoverage/xml/coverage.xml' relative to '/data/AdServerTest'.  Did you enter a pattern relative to the correct directory?  Did you generate the XML report(s) for Cobertura?

  原因:jenkins路徑未關聯,具體我也還沒搞清楚,貌似Cobertura只能使用相對路徑。將生成的xml報告更改為目錄/data/AdServerTest下的目錄即可  路徑后即可。

 

2 在查看詳細報告時,無法查看具體代碼行數覆蓋,提示Source code is unavailable,如下:

 

原因:懷疑是jenkins路徑的緣故,存放xml文件的路徑下並沒有源碼,具體我還沒解決,后續補充

解決:我加載的coverage.xml文件目錄為/data/AdServer/reports/coverag.xml目錄,源碼目錄為/data/jenkins/workspace/sourceCode,該文件起始部分如下:        

<coverage branch-rate="0.480959479604" line-rate="0.791099668996"
 timestamp="1486278598" version="gcovr 3.2">
 <sources>
  <source>
   .     //表示會從當前目錄讀取源碼-source code
  </source>
 </sources>

因此不能顯示源碼,更改生成xml文件時表示源碼路徑的'.'為絕對路徑即可:sudo gcovr --xml-pretty -r /data/jenkins/workspace/sourceCode/  --output /data/AdServerTest/coverage.xml

<coverage branch-rate="0.480959479604" line-rate="0.791099668996"
 timestamp="1486278598" version="gcovr 3.2">
 <sources>
  <source>
   /data/jenkins/workspace/sourceCode/</source>
 </sources>

得到結果圖如下,覆蓋部分為綠色,未覆蓋部分為紅色:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM