生産性向上ブログ

継続的な生産性向上を目指すエンジニアのためのブログ

Coverallsでテストカバレッジを可視化 & GitHubにバッジ表示 & Slackに通知

前回の記事Codecovに引き続き、同種のカバレッジサービスであるCoverallsを試してみたのでまとめる。

Coveralls

基本的にはCodecovと同じようなカバレッジを可視化するためのサービス。料金面では、オープンソースのみ無料で、private repositoryは有料。

Travis CIからCoverallsにカバレッジを送る

まず、事前にTravis CIとCoverallsでカバレッジを取得するリポジトリを有効にしておく。

今回も基本的な構成は同じで、実験用リポジトリはこちら

  • Node.js
  • Mocha
  • power-assert
  • Istanbul

もちろんCoverallsもたいていの言語によるカバレッジ取得に対応している。

Node.jsの場合、カバレッジを転送するためにはnode-coverallsを使えばいい。以下のようにインストール。

$ npm install coveralls --save-dev

カバレッジはlcov形式を指定する。自分の場合、package.jsonに以下のように記述した。

"scripts": {
  "test": "istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- --require intelli-espower-loader test/*.js"
},

Travis CIでは、以下のように呼び出す。

after_success:
  - cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js

これでカバレッジが取得される。数字と一緒にグラフっぽいものが表示される。

f:id:miya-jan:20160904123728p:plain

プルリクを作成すると、カバレッジの変化をコメントで教えてくれる。

f:id:miya-jan:20160904122915p:plain

GitHubリポジトリにバッジを表示

お決まりのREADMEにバッジを表示するやつ。Coverallsの場合、ダッシュボードに表示されてるEMBEDを押すだけでmarkdownとか取得できるので迷わない。

f:id:miya-jan:20160904123121p:plain

READMEに記述すれば最新のカバレッジを表示できる。

f:id:miya-jan:20160904123407p:plain

Slackに通知

SlackでIncoming Webhookを作成するところまでは前回と同じ

Coveralls側の設定は、Settings -> Notificationsから通知の設定ができる。Codecovと比較すると、GUI上で設定が完結するので楽。

f:id:miya-jan:20160904124227p:plain

これだけで↓のように通知が飛ぶようになる。

f:id:miya-jan:20160904125025p:plain

まとめ

CoverallsとCodecovを試した感想としては、そこまで大きな違いを感じなかった。強いて挙げると以下の点かな。

  • Codecovはprivate repositoryが1つまで無料
  • Codecovの方がグラフがしっかりしている
  • Coverallsの方が設定が分かりやすい
  • Coverallsの方が一般的に使われているので情報が集めやすい

サクッとOSSで使いたいならCoveralls、private repositoryで気軽に試したいならCodecovという印象。あとは好みで。