目次
背景・目的
こちらのOSSプロジェクトを始めるにあたり、
コードの品質を高めるために良く使われている
各種クラウドサービスをいろいろ調べ、
とりあえず、コードレビューや自動テスト、
カバレッジ計測といった必要最低限の事が
一通り出来るようになりました。
今回は、取り入れた各サービスの特徴や、使える
ようにするまでにハマった事について紹介します。
CodeFactor
前回こちらの記事で紹介した、自動コードレビュー
のクラウドサービスです。
他のサービスと比べてみて良いと思う点は、サポート
している言語の種類が多い事だと思います。特に
複雑な設定も必要なく、GitHubのリポジトリと連携
するだけで、すぐに使えるようになります。
LGTM
コードレビューだけでなく、コードの脆弱性と
いったセキュリティチェックも合わせて実行
してくれるサービスです。
サポートしている言語はC/C++, C#, Go, Python,
Java, JavaScriptとなっており、前述した
CodeFactorと比べると少なめです。
使い始める前の準備として、こちらのような
.lgtm.ymlという設定ファイルを書いて、
同リポジトリに置いておく必要があります。
そして、GitHubリポジトリへのプッシュが
行われると、それをトリガーにコード解析が
実行され、何かアラートがないかチェック
してくれます。
このサービスで面白いのは、自分のコードの
Qualityを評価して、それを他のOSSコードの
評価と比較してくれるところです。
横軸が全コードの行数、縦軸がQuality Scoreで、
右上に行くほど質の高いコードという事のよう
です。
自分のプロジェクトは赤丸のところですが、
まだ始まったばかりで小規模なのでこんな
ものでしょう。
これから上を目指していきます。
Travis CI
GitHubリポジトリへのプッシュをトリガーに
予め用意したテストコードに従って自動テスト
を行ってくれるサービスです。
こちらのような.travis.ymlという設定ファイルを
作成して、事前に同リポジトリに置いておく
必要があります。
Travis CIはクラウド上でLinuxの仮想マシンを
起動させ、そこにGitHubから自分のコードが
クローンされる事でテストが実行されます。
そのため、例えばPythonのコードであれば、
Python及び必要なライブラリを一通り
インストールさせなければならないので、
そういった一連の処理を.travis.ymlに記述
します。
テストの実行結果はこちらのようにログと
して残っていきますが、テストが失敗した、
あるいはテスト開始前のVM起動中にエラー
が起きた場合はfailedになります。
このようにテストがfailした時、そして
それが次のテストによってfixedされた際は
予め設定したメールアドレスに通知が
来るようになります。
Coveralls
Coverallsは、前述したTravis CIのような
自動テストサービスと連携して、そのテスト
によって全ソースコード行のどれだけが
カバーされているかを計測して記録して
くれるサービスです。
まずは、実行されたテストによる全体の
カバレッジ、
そして、実行された各コードの個別の
カバレッジ、テスト毎のカバレッジ
履歴が記録されます。
赤丸のソースファイル名をクリックすれば、
そのコード内のどの部分がカバレッジとして
カウントされているかが分かります。
Travis CIでのテストとCoverallsを連携
するためには、前述した.travis.ymlの
中でcoverallsというPythonライブラリ
インストールするように記述しておく
必要があります。
ここで気を付けないといけないのは、
インストールするバージョンを、
1.18.1から上のものに指定する必要が
ある事です。
特にバージョンを指定しないまま
インストールするとデフォルトで
1.15.1のバージョンがインストール
されるのですが、これにはTravis CI
側のテスト結果とカバレッジ計測
結果が、Coverallsのサービス上に
正常に反映されないというバグが
あるようです。
このバグが修正されたのが1.18.1から
らしいので、それ以上のバージョンを
指定するようにしましょう。
Appveyor
Travis CIがLinux環境でのテストなのに
対して、AppveyorはWindows環境上
でのテストサービスになります。
Travis CIと同様に、こちらではappveyor.yml
という設定ファイルを記述して、これを
同リポジトリに置いておきます。
これに関してもいくつか注意点が
ますが、こちらの記事のおかげで
無難に実行できるようになりました。
この状態で、あとはいつも通りに
GitHubのリモートリポジトリに
プッシュすれば、Windows環境での
テストが自動で実行され、こちらの
ように結果が記録されていきます。