新的 code coverage 線上服務 codecov.io

Screen Shot 2016-07-16 at 3.04.50 PM

代碼覆蓋率 (code coverage) 是開發流程蠻重要的一環,用來評估專案內測試的覆蓋率,也代表了自己寫的程式,至少要測試過一次。在 Github 上面最常用的一套就是 Coveralls 相信大家對於此服務並不陌生,一個好的 Open Source 專案一定會在 Readme 上附上 Coveralls badge,證明自己寫的專案都有經過測試,請安心使用。在導入 Coveralls 服務到專案內時,安裝步驟有點小複雜,雖然不難,但是還是需要安裝一些 Tool 才能完成,底下用 Golang 為例。

Coveralls.io

Coveralls 會先給一把 Token,你要將 Token 加密到 Travis 設定檔,或者是直接將明碼寫到 .travis.yml 檔案內,如果我們要的是前者,就必須在個人電腦裝上 travis 指令

1
$ gem install travis

使用 gem 指令之前,請先把 Ruby 環境安裝好,看到這裡是不是覺得很麻煩了。完成後,透過底下指令將 Token 加密到 config 內

1
$ travis encrypt COVERALLS_TOKEN=xxxxx--add env.global

就可以到 .travis.yml 看到

1
2
3
env:
  global:
    secure: jeSgPztK8ytfBEBlZiswBIjXd1dafxxxx

還沒結束,你要將 golang coverage report file 送到 Coveralls Server 前,還要安裝 goveralls 工具來完成此任務

1
2
3
4
5
install:
  - export GO15VENDOREXPERIMENT=1
  - glide install
  - go get golang.org/x/tools/cmd/cover
  - go get github.com/mattn/goveralls

上面的最後一行是必須的喔。最後執行測試後才將結果傳到 server

1
2
3
4
script:
  - make test
  - go test -v -covermode=count -coverprofile=coverage.out
  - $(go env GOPATH | awk 'BEGIN{FS=":"} {print $1}')/bin/goveralls -coverprofile=coverage.out -service=travis-ci -repotoken=$COVERALLS_TOKEN

Codecov.io

這是最近在 Github 其他專案看到的新的服務,Codecov 服務優於 Coveralls 的地方在安裝容易,加上 code coverage 介面比較漂亮,所以目前將新的 open source 專案都換到 Codecov 了,底下先來講安裝方式,安裝方式真的太無腦了,只要先透過 Github 登入到 Codecov,並且將自己的專案加入,就可以看到底下畫面

Screen Shot 2016-07-16 at 3.07.35 PM

有看到安裝方式嗎?就只有一行

1
2
3
4
5
script:
  - go test -v -covermode=count -coverprofile=coverage.out

after_success:
  - bash <(curl -s https://codecov.io/bash)

只要你是 open source 專案,根本不需要 token,Codecov 會自動分析 golang 編譯出來的 report。在 Dashboard 你會發現這句話

Not required on Travis-CI, CircleCI or AppVeyor for public repositories.

只要你是用 Travis 就可以無腦安裝啦。當然也可以自訂選擇 CI Provider。另外如果是 Pull Request,可以發現 Codecov 給的 Report 比 Coveralls 好多了,請直接看此 PR

Screen Shot 2016-07-16 at 3.15.44 PM

最後請裝上 Codecov 提供的瀏覽器外掛,這樣可以直接在 Github 專案原始碼內直接看到 code coverage 數據,請直接看範例

Screen Shot 2016-07-16 at 3.43.35 PM

就介紹到這邊,大家快去註冊使用吧


See also