class GemHadar::SimpleCov::ContextFormatter

def format(result)

Returns:
  • (String) - an empty string, as the method's primary purpose is to write data to a file

Parameters:
  • result (SimpleCov::Result) -- the coverage result object containing files and statistics
def format(result)
  files = result.files.map do |file|
    line_coverage_statistics = extract_coverage_info(file.coverage_statistics[:line])
    branch_coverage_statistics = extract_coverage_info(file.coverage_statistics[:branch])
    {
      filename: file.filename,
      line_coverage_statistics:,
      branch_coverage_statistics:,
    }
  end
  covered_files = result.files.count { |file| file.coverage_statistics[:line].covered > 0 }
  uncovered_files = result.files.count { |file| file.coverage_statistics[:line].covered == 0 }
  files_count = result.files.length
  files_covered_percent = files_count > 0 ? (100 * covered_files.to_f / files_count).round(2) : 0
  branch_covered_percent =
    result.total_branches > 0 ? (result.covered_branches.to_f / result.total_branches * 100).round(2) : 0
  coverage_data = {
    project_name:,
    version:,
    timestamp: Time.now.iso8601,
    files:,
    overall_coverage: {
      covered_percent: result.covered_percent.round(2),
      total_lines: result.total_lines,
      covered_lines: result.covered_lines,
      missed_lines: result.missed_lines,
      branch_covered_percent:,
      total_branches: result.total_branches,
      covered_branches: result.covered_branches,
      missed_branches: result.missed_branches,
      coverage_strength: result.covered_strength.round(2),
      least_covered_file: (result.least_covered_file rescue nil),
      covered_files:,
      uncovered_files:,
      files_count:,
      files_covered_percent:,
    },
  }
  # Write to a dedicated coverage data file,
  coverage_dir = Pathname.new('coverage')
  mkdir_p coverage_dir
  filename = File.expand_path(coverage_dir + 'coverage_context.json')
  File.secure_write(filename, JSON.pretty_generate(coverage_data))
  STDERR.puts "Wrote detailed coverage context to #{filename.to_s.inspect}."
  ""
end