Coveralls + Perl

CoverallsGithub に置いているソースコードのテストカバレッジを git push の度に調査して報告してくれるクラウドサービス。「カバー率100%を維持したいなら継続的インテグレーション (CI) のレポーティングにテストカバレッジも含めちゃえばいいじゃない」という貴族向けのサービスです。いえ、貴族はフィクションです。

こんな感じでモダンなデザインで色々教えてくれる。各行が何回テストされたかみたいな詳細なレポーティングもある。

Travis CI と同じく Github の README なんかに貼り付けるバッジがあります。というか Travis CI なんかのCIツールと連携して Coveralls にレポートを投げるのが前提になっているようです。

つい最近 プロトタイプ開発用のRailsプラグイン「Chanko」を2.0.0にアップデートしました - クックパッド開発者ブログ のクックバッドが作っている chanko というフレームワークをアップデートした話が話題になっていて、その中でも触れられていた。

テストカバレッジ 100% を維持しようとしても計測をさぼったりでなかなか続けるのが難しいのですが、こうして CI に絡めることでそのモチベーションを生み出すのはうまいやり方です。にくいぜ。

Coveralls を Perl

Coveralls は公式では RubyPython、Node.js をサポートしている。Perl もサポートされないかなあと思っていたら kan さんが対応モジュールを作っていた。マジ神だよ〜、カッキィっす。

Coveralls には API があるらしく、Perlカバレッジ測定ツールである Devel::Cover とその API をブリッジさせることでとてもスムーズに使えるようになっている。.travis.yml に

before_install:
  - cpanm -n git://github.com/kan/coveralls-perl.git
script: perl Makefile.PL && make && cover -test
after_success:
  - cover -report coveralls

という具合で Devel::Cover::Coveralls を入れる、cover コマンドで Devel::Cover を実行する、coveralls にレポーティングすると設定を書けば良い。

小話: Coveralls の課金

ところで Coveralls には PRO 版があって、課金するとプライベートレポジトリのテストなんかも引き受けてくれるらしい。で、その課金システムがちょっと面白くて

こんな具合で、自分だけじゃなく Github の何かしらのプロジェクトで Collaborator になってる人のためにプロアカウントを買ってあげることができるらしい。

面白いは面白いし場面によっては重要な機能なんだろうけど、こう、なんで俺があんちぽっぷさんのために金を払う必があるのかと複雑な気持ちになったのであった。