Ccover在hudson持續整合中的應用

技術小美發表於2017-11-07

背景

Hudson是一款優秀的持續整合引擎,但是在使用中發現對於後端c語言的專案支援還沒有成熟的外掛,不是特別易用,覆蓋率,btest等都不能直接應用到hudson中。 

每次新加入的程式碼要經過充分單測才能保證整體的穩定性。評價單測充分性有很多指標。其中一個重要指標就是覆蓋率指標。把ccover整合進hudson,並且改進一下報表和展現工具,使其更好的為保證產品質量服務。使其成為日常測試一個簡單易用的工具是主要目標。 

前期準備
Hudson安裝請參見文件: 
http://com.baidu.com/twiki/bin/viewfile/Ecom/Continuous_integration?filename=Hudson%E4%BD%BF%E7%94%A8.doc

<!–[if gte mso 9]&gt;<![endif]–> 

Ccover安裝請參見文件: 
http://com.baidu.com/twiki/bin/view/Main/Ccover

<!–[if gte mso 9]&gt;<![endif]–> 

<!–[if gte mso 9]&gt;<![endif]–> 
使用ccover
先配置hudson從svn獲取最新版本。 

書寫ant構建環境,ccover的覆蓋率檔案一般在bash_profile中配置為`pwd`/test.cov。如果通過這種方式編譯通過後,沒有產生test.cov檔案。先使用cov01 –s命令檢查ccover是否開啟,仍不能解決建議covfile使用絕對目錄的配置形式。 

通過covfn,covsrc,covdir,Covclass獲取html格式的覆蓋率報告。通過html格式的外掛展現在hudson中。 

需要安裝的外掛如下: 

htmlpublisher.hpi 

ncover.hpi 

配置方式如下: 

先配置展現報告的目錄 

<!–[if mso]&gt; <![endif]–><!–[if gte mso 9]&gt;<![endif]–><!–[if gte mso 9]&gt;<![endif]–><!–[if gte mso 9]&gt;<![endif]–><!–[if gte mso 10]&gt; <![endif]–> <!–[if gte mso 9]&gt;<![endif]–> 

<!–[if mso]&gt; <![endif]–><!–[if gte mso 9]&gt;<![endif]–><!–[if gte mso 9]&gt;<![endif]–><!–[if gte mso 9]&gt;<![endif]–><!–[if gte mso 10]&gt; <![endif]–> <!–[if gte mso 9]&gt;<![endif]–> 

<!–[if gte mso 9]&gt;<![endif]–> 

勾選keep past coverage report選項,用來保準歷史執行中的覆蓋率報告。 

配置需要展現的報告名稱,用逗號隔開 

<!–[if gte mso 9]&gt;<![endif]–> 

至此完成了降ccover整合進hudson中的工作。到此為止雖然我們可以檢視ccover的報告了,但是還是沒法發現那些函式下降了,新程式碼覆蓋率與老程式碼有哪些不同。需要我們自己做一些擴充套件和改進。 
改進
對比檔次build版本的覆蓋率和之前版本的覆蓋率,找出差異。 

lowest_warning=5 函式最低覆蓋率 

new_warning=10 新加入函式的最低覆蓋率 

drop_warning=1 舊函式最多下降的比率 

發現任何一個指標低於閥值則進行報警,並將將變動的函式展現在報告中。 

 




<!–[if gte mso 9]&gt;<![endif]–> 

<!–[if gte mso 9]&gt;<![endif]–> 

<!–[if gte mso 9]&gt;<![endif]–> 

圖形化展示歷史的ccover覆蓋率變化趨勢,方便分析程式的變化歷程。 

配置如下: 

#提取覆蓋率資訊的檔名 

file_name=testsrc.html 

#輸出覆蓋率資訊的檔名 

output=mydir.csv 

#提取資訊的匹配名稱 

match=avgrank_value_computation.cpp 


配置成功後,可以在hudson首頁檢視歷史的覆蓋率趨勢 

<!–[if gte mso 9]&gt;<![endif]–> 

 

 

後話
經過幾步改造後,ccover已經比較好的融入到hudson。方便我們使用和檢視每次版本的覆蓋率,分析歷史趨勢。我們的持續整合還有很多需要改進的地方,希望ccover可以幫助我們更好的在前期把控質量,分析程式缺陷。不斷改進,提高hudson在後端持續整合的易用性。

 

(作者:wangzuobo) 

 

 

本文轉自百度技術51CTO部落格,原文連結:http://blog.51cto.com/baidutech/743415,如需轉載請自行聯絡原作者


相關文章