diff --git a/Gemfile b/Gemfile
index ead64a6d4df04e8cb48290ac33a49f7e7edc6198..35dd69ef4085bdb919a54935a9c3d45073c28885 100644
--- a/Gemfile
+++ b/Gemfile
@@ -302,7 +302,7 @@ group :development, :test do
   gem 'rubocop', '~> 0.41.2', require: false
   gem 'rubocop-rspec', '~> 1.5.0', require: false
   gem 'scss_lint', '~> 0.47.0', require: false
-  gem 'simplecov', '~> 0.11.0', require: false
+  gem 'simplecov', '~> 0.12.0', require: false
   gem 'flog', '~> 4.3.2', require: false
   gem 'flay', '~> 2.6.1', require: false
   gem 'bundler-audit', '~> 0.5.0', require: false
diff --git a/scripts/merge-simplecov b/scripts/merge-simplecov
index 2af5f8c091800147e0b58d4095f316d55a9e185b..9504321e6d7348be69635b50fb92916340e1b4b1 100755
--- a/scripts/merge-simplecov
+++ b/scripts/merge-simplecov
@@ -46,42 +46,11 @@ def all_results
   results
 end
 
-def merge_resultset(a1, a2)
-  return a1 || [] unless a2
-  return a2 || [] unless a1
-
-  new_array = a1.dup
-  a2.each_with_index do |element, i|
-    if element.nil? && new_array[i].nil?
-      new_array[i] = nil
-    elsif element.nil? && new_array[i] == 0 || element == 0 && new_array[i].nil?
-      new_array[i] = nil
-    else
-      local_value = element || 0
-      other_value = new_array[i] || 0
-      new_array[i] = local_value + other_value
-    end
-  end
-  new_array
-end
-
-def merge_hashes(h1, h2)
-  new_resultset = {}
-  (h1.keys + h2.keys).each do |filename|
-    new_resultset[filename] = []
-  end
-
-  new_resultset.each_key do |filename|
-    new_resultset[filename] = merge_resultset(h1[filename], h2[filename])
-  end
-  new_resultset
-end
-
 def merged_result
   merged = {}
   results = all_results
   results.each do |result|
-    merged = merge_hashes(result.original_result, merged)
+    merged = result.original_result.merge_resultset(merged)
   end
   result = SimpleCov::Result.new(merged)
   # Specify the command name