Ccover在hudson持續整合中的應用
背景
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]><![endif]–>
Ccover安裝請參見文件:
http://com.baidu.com/twiki/bin/view/Main/Ccover
<!–[if gte mso 9]><![endif]–>
<!–[if gte mso 9]><![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]> <![endif]–><!–[if gte mso 9]><![endif]–><!–[if gte mso 9]><![endif]–><!–[if gte mso 9]><![endif]–><!–[if gte mso 10]> <![endif]–> <!–[if gte mso 9]><![endif]–>
<!–[if mso]> <![endif]–><!–[if gte mso 9]><![endif]–><!–[if gte mso 9]><![endif]–><!–[if gte mso 9]><![endif]–><!–[if gte mso 10]> <![endif]–> <!–[if gte mso 9]><![endif]–>
<!–[if gte mso 9]><![endif]–>
勾選keep past coverage report選項,用來保準歷史執行中的覆蓋率報告。
配置需要展現的報告名稱,用逗號隔開
<!–[if gte mso 9]><![endif]–>
至此完成了降ccover整合進hudson中的工作。到此為止雖然我們可以檢視ccover的報告了,但是還是沒法發現那些函式下降了,新程式碼覆蓋率與老程式碼有哪些不同。需要我們自己做一些擴充套件和改進。
改進
對比檔次build版本的覆蓋率和之前版本的覆蓋率,找出差異。
lowest_warning=5 函式最低覆蓋率
new_warning=10 新加入函式的最低覆蓋率
drop_warning=1 舊函式最多下降的比率
發現任何一個指標低於閥值則進行報警,並將將變動的函式展現在報告中。
<!–[if gte mso 9]><![endif]–>
<!–[if gte mso 9]><![endif]–>
<!–[if gte mso 9]><![endif]–>
圖形化展示歷史的ccover覆蓋率變化趨勢,方便分析程式的變化歷程。
配置如下:
#提取覆蓋率資訊的檔名
file_name=testsrc.html
#輸出覆蓋率資訊的檔名
output=mydir.csv
#提取資訊的匹配名稱
match=avgrank_value_computation.cpp
配置成功後,可以在hudson首頁檢視歷史的覆蓋率趨勢
<!–[if gte mso 9]><![endif]–>
後話
經過幾步改造後,ccover已經比較好的融入到hudson。方便我們使用和檢視每次版本的覆蓋率,分析歷史趨勢。我們的持續整合還有很多需要改進的地方,希望ccover可以幫助我們更好的在前期把控質量,分析程式缺陷。不斷改進,提高hudson在後端持續整合的易用性。
(作者:wangzuobo)
相關文章
- Hudson:持續整合工具的安裝、使用
- 使用Hudson持續整合Android專案Android
- 持續整合之hudson的構建任務排程
- 持續整合工具Hudson安裝方法(非常簡單)
- Hudson之Asp.net持續整合設計方案。ASP.NET
- 使用 Subversion、Hudson 和 Eclipse 構建持續整合系統Eclipse
- [原創]淺談持續整合在測試中的應用
- 持續整合持續部署持續交付_持續整合與持續部署之間的真正區別
- 使用 Jenkins 建立微服務應用的持續整合Jenkins微服務
- GitLab 持續整合在 Laravel 商用專案中的應用實踐GitlabLaravel
- 持續整合、持續部署、持續交付、持續釋出
- 持續整合、持續交付、持續部署簡介
- 持續化整合工具 Jenkins 在 Ubuntu 中安裝JenkinsUbuntu
- 整合持續整合工具
- Windows 桌面應用自動和 Jenkins 持續整合WindowsJenkins
- 對持續整合、 持續交付、持續部署和持續釋出的介紹
- iOS 持續整合iOS
- 加速Java應用開發速度3:單元/整合測試+持續整合Java
- 機器學習在提升持續整合構建準確性和召回率的應用和思考 - 楊碩機器學習
- 談談持續整合,持續交付,持續部署之間的區別
- 淺談持續整合(CI)、持續交付(CD)、持續部署(CD)
- Jenkins持續整合Jenkins
- 淺談持續整合的理解以及實現持續整合,需要做什麼?
- SAP開源的持續整合-持續交付的解決方案
- 小程式的持續整合方案
- 從持續整合到持續交付——DockerCloud概覽DockerCloud
- C++知識點 —— 整合(持續更新中)C++
- 在Ubuntu上安裝Drone持續整合環境Ubuntu
- Azure Terraform(八)利用Azure DevOps 實現Infra資源和.NET CORE Web 應用程式的持續整合、持續部署ORMdevWeb
- 通過Docker容器執行持續整合/持續部署Docker
- 持續整合配置之Nuget
- Taro 小程式持續整合
- 持續整合JenkinsBlueOcean初探Jenkins
- Jenkins持續整合配置Jenkins
- 微服務化的基石——持續整合微服務
- 【下一代核心技術DevOps】:(七)持續整合Jenkins的應用(Aliyun Pipiline持續構建)devJenkins
- 軟體開發為何採用持續整合
- 用於持續整合的13種Jenkins替代方案 -DEVJenkinsdev