Madogiwa Blog

主に技術系の学習メモに使っていきます。

SimpleCovとCircleCIのArtifactsを使ってカバレッジ測定結果を確認するMEMO

rubyを使ったアプリケーションのテストコードのカバレッジ測定にはSimpleCovを使うことが多いと思いますが、CircleCIのArtifactsを使うと簡単にCircleCIの管理画面上でSimpleCovの結果を確認できたので、そのへんの手順をメモしておきます📝

github.com

Codecovを使った方がPRにコメントしれくれたりと色々便利な面もあるかもですが、お手軽にSimpleCovを使ってプロジェクトのカバレッジを測定できるようになるのはいいのかなと✨

SimpleCovでカバレッジを測定する

今回はRailsRspecの環境で有効化する手順を記載します。

まずはGemfilegroup :testsimplecovを追記してbundle installします。

group :test do
  gem 'simplecov', require: false
end

そしてspec_helperを下記のような記述を追加します。※SimpleCovの設定周りは公式のドキュメントを参考に任意の値に変更してください。

SimpleCov.start do # カバレッジ測定を有効化
  enable_coverage :branch # Branch coverageを有効化
  add_filter '/spec/' # spec配下は測定対象外
  add_filter do |source_file|
    source_file.lines.count < 5 # 5行未満のファイルは対象外
  end

  # model、controllerのファイルはgroupとして見やすくする
  add_group 'Models', 'app/models' く
  add_group 'Controllers', 'app/controllers'
end

この状態でbundle exec rspecでテストを実行するとcoverage配下に結果が格納されるようになります。

$ cd coverage
$ tree
.
|____index.html
|____.last_run.json
|____.resultset.json
|____assets
| |____0.12.2
| | |____images
| | | |____ui-icons_cd0a0a_256x240.png
| | | |____ui-icons_888888_256x240.png
| | | |____ui-bg_glass_75_dadada_1x400.png
| | | |____ui-icons_2e83ff_256x240.png
| | | |____ui-bg_flat_75_ffffff_40x100.png
| | | |____ui-bg_glass_75_e6e6e6_1x400.png
| | | |____ui-bg_glass_65_ffffff_1x400.png
| | | |____ui-bg_glass_95_fef1ec_1x400.png
| | | |____ui-icons_222222_256x240.png
| | | |____ui-bg_highlight-soft_75_cccccc_1x100.png
| | | |____ui-bg_glass_55_fbf9ee_1x400.png
| | | |____ui-icons_454545_256x240.png
| | | |____ui-bg_flat_0_aaaaaa_40x100.png
| | |____application.css
| | |____loading.gif
| | |____colorbox
| | | |____border.png
| | | |____loading.gif
| | | |____controls.png
| | | |____loading_background.png
| | |____favicon_red.png
| | |____favicon_green.png
| | |____favicon_yellow.png
| | |____DataTables-1.10.20
| | | |____images
| | | | |____sort_asc_disabled.png
| | | | |____sort_both.png
| | | | |____sort_desc_disabled.png
| | | | |____sort_desc.png
| | | | |____sort_asc.png
| | |____magnify.png
| | |____application.js
|____.resultset.json.lock

index.htmlをブラウザで開くとカバレッジの測定結果を確認できます✨

f:id:madogiwa0124:20200725155343p:plain

CircleCIのArtifactsでSimpleCovの結果を格納する

Artifactsとは

アーティファクトには、ジョブが完了した後もデータが維持され、ビルドプロセス出力の長期ストレージとして使用できます。 アーティファクトAmazon S3 に保存され、プライベートプロジェクト用の CircleCI アカウントを使用して保護されます。 https://circleci.com/docs/ja/2.0/artifacts/

Job実行時に生成されたファイル等をCircleCIが管理するS3上にアップロードする機能のようです👀 

publicリポジトリの場合はArtifactsで公開したファイルが未ログインでも見れる状態になっているようなので注意してください。

discuss.circleci.com

👇詳しくはこちら

circleci.com

artifactsを使って測定結果をアップロードして確認する

CircleCIのconfigファイルでstore_artifactsを使 うことでアップロードすることができます。

設定ファイルは省略していますが下記のような感じでrspecを実行したあとにcommandsで定義したstore_coverage_atifactsを実行してcovarage配下のファイルをArtifactsにアップロードしています。

commands:
  store_coverage_atifacts:
    steps:
      - store_artifacts:
          path: coverage


jobs:
  ruby_test:
    steps:
      - run:
          name: run tests
          command: bundle exec rspec spec/
      - store_coverage_atifacts

これでCircleCIの画面上からSimpleCovで測定してカバレッジを参照できるようになりました🎉

参考資料

qiita.com