経緯
古いAPIのファイルにはテストがなく追加する際にテストの網羅率をsimplecovで取りながら進捗を見るときがある。
廃止予定でテストの追加必要ないが、まだ古いバージョンのクライアントで多少使っていてすぐには消せないということがある場合、simplecovの集計対象外としたいときがある。
simplecovの除外する機能
simplecovにも以下のようにスキップのオプションは存在するがファイルごと除外したい場合などにコメントが大量に追加されてしまうのはつらいので簡単に除外させたい。
# :nocov:
def skip_this_method
never_reached
end
# :nocov:
解決策
Filterで独自のタグを読み込んでファイルごと除外すると簡単に除外対象にできていいかもしれない。
user_application_controller.rb
# :nocov_all:
class UserApplicaitonCotroller < ApplicationController
def index
...
end
end
spec/rails_helper.rb
require 'simplecov'
SimpleCov.start 'rails' do
add_filter do |source_file|
# ファイルの読み方や10行以内というのは要件次第
File.open(source_file.filename).readlines.take(10).any?{|line| line.include?(':nocov_all:')}
end
end