2015年5月25日月曜日

[C++] Codecov でコードカバレッジ

Codecov.io というカバレッジ系のサービスがあったので使ってみました。


Sign Up

Github , GitLab もしくは Bitbucket アカウントでサインアップします。
私の場合は、Github の公開リポジトリを使うので、Github で登録しました。
料金的には、公開リポジトリならば無料で使えます。

詳しくは、Pricing を参照してください。


リポジトリ追加
サインアップすると以下のような画面になるので、「Add your first repo」から追加したいリポジトリを選択します。

リポジトリを追加すると下のような表示が出ます。

トークンが表示されますが、今回は Travis-CI と連携させるので使いません。
次に設定の方を説明します。

Travis-CI の設定
設定の仕方は、上記画面の「Read our guides」をクリックすると開くガイドページに説明があります。
C/C++ のガイドもあるので、そのとおりに設定するだけです。
https://codecov.io/guide#c

C++ の場合、-coverage オプション付きでビルドして、gcov を実行した後に以下のコマンドを実行するだけです。
bash <(curl -s https://codecov.io/bash)
コマンドを curl で取得して実行するだけなのは、楽でイイですね!

iutest の場合
早速、iutest で試してみました。( iutest は自作の C++ テスティングフレームワーク です。 )
どういう設定をしたかは、.travis.yml と test/GNUMakefile を見てください。

計測結果はこちらから見れます。
https://codecov.io/github/srz-zumix/iutest?ref=master



現時点では、テストコードのカバレッジまで含まれてしまってますが、include ディレクトリに限れば Coveralls とほぼ同等の数値が取れてます。
フィルタリングとかはそのうち対応したいと思います。

Chrome Extension
Codedov には Chrome 拡張が用意されています。

これをインストールすると、Github に Codecov で集計したカバレッジが表示されるようになります。



バッジ/グラフを付ける
さて、ここまでできたら他のサービスと同様にバッジを付けたいですよね。
もちろん、Codecov でもバッジを付けることができます。

Features をクリックすると以下のようなメニューが出ます。

Badge という項目があるのでそこを開くと、バッジのフォーマットがそれぞれのスタイルごとに出ま。あとはこれを Readme なりに貼り付けるだけで OK です。


また、バッジの他に推移グラフも同様に付けることができます。
Features の Graph の項目を開くと、以下のようなページが開くのでバッジと同じようにテキストをコピーして貼り付けるだけで、グラフが表示できるようになります。



最後に
Codecov にはまだ他にも機能があります。詳しくは https://codecov.io/#features を見てください。

他のカバレッジ系 CI サービスだと Coveralls があります。
Coveralls は以前から iutest のカバレッジを取るために使ってました。その辺はブログにも書いてます。
ブログズミ: [C++] Coveralls でコードカバレッジ - その1
ブログズミ: [C++] Coveralls でコードカバレッジ - その2
個人的には、Coveralls の方が見やすいな~と思うのですが、 Codecov は導入が簡単だったのと Github へのプルリクエストコメント機能など多機能であることがメリットかな~と思いました。
Coveralls との比較は https://codecov.io/#features の下の方にも載ってます。

以上。

2015年5月18日月曜日

[Jenkins] Label Linked Jobs Plugin でラベルの整理

ラベルがいっぱい増えて管理しにくくなってきたので、「Label Linked Jobs Plugin」を使ってみました。
このプラグインは、ラベルが使われているジョブの数やスレーブで実行されるジョブの一覧が見ることができます。

インストールするとトップページの左上に、「Labels Dashboard」が追加されているのがわかると思います。

こちらを開くと以下の様なビューが表示されます。


ここでは、
各ラベルがいくつのスレーブに設定されているか、
また、どれだけのジョブに使われているかが一覧で見れます。
これを見れば使わていないラベルがすぐに分かります。


次に、スレーブのページを開くと「Linked Jobs」というリンクが追加されています。

こちらを開くと以下の様なビューが表示されます。

ここでは、このスレーブで実行される可能性のあるジョブが一覧で見れます。
意図したジョブがリンクされているか確認するのに便利です。


ここ最近は Jenkins の運用がメインで、いろいろ試したりしてなかったのですが、
今回は久しぶりに Jenkins のプラグインを紹介してみました。

それでは。

2015年5月14日木曜日

Twilio を使ってみた - その4

「Twilio を使ってみた」シリーズ4回目です。
今回は REST API を使って電話をかけたいと思います。

REST API の使い方は公式のドキュメントを参考にしたました。

言語は Python でやります。
では、早速コードを見ていきましょう。

ライブラリインストール
まずは、Twilio ライブラリをインストールします。
手順はこちらにも書いてあります。https://www.twilio.com/docs/python/install

何通りか方法がありますが、pip か eazy_install で twilio をインストールすればいいと思います。

eazy_install twilio

電話をかけるサンプル
以下は公式サンプルのコードそのまんまです。

# Download the Python helper library from twilio.com/docs/python/install
from twilio.rest import TwilioRestClient
 
# Your Account Sid and Auth Token from twilio.com/user/account
account_sid = "AC3094732a3c49700934481addd5ce1659"
auth_token  = "{{ auth_token }}"
client = TwilioRestClient(account_sid, auth_token)
 
call = client.calls.create(url="http://demo.twilio.com/docs/voice.xml",
    to="+14155551212",
    from_="+14158675309")
print call.sid

最初にライブラリから twilio.rest をインポートしてます。

次に、account_sid と auth_token の設定をします。
これはアカウントセッティングページから確認できます。(Live の方)
この2つを使って TwilioRestClient を作成。 client.calls.create で発信をします。

create には、TwiML の URL と相手の電話番号(to)と自分の電話番号(from_)を指定します。

設定に問題がなければこれで電話がかかります。

iutest に組み込んでみた
早速、REST API を使ってテストが失敗したら電話掛けられるようなものを作ってみました。
https://github.com/srz-zumix/iutest
https://github.com/srz-zumix/iutest/blob/master/tools/twilio/iutwilio.py

2015年5月4日月曜日

Twilio の無料トライアル期間が終了

終了しました。
無料分はだいたい 500 円分くらいでしょうかね。

まだやりたいことがあるので、アップグレードしました。
何もしなくても毎月ポイントが減っていくので、さらっとやってしまいたいです。