class SimpleCov::Formatter::LcovFormatter

Custom Formatter to generate lcov style coverage for simplecov

def self.output_directory

Path for output directory.
==== Return
Output directory for generated files.
def self.output_directory
  File.join(SimpleCov.coverage_path, 'lcov')
end

def create_output_directory!

def create_output_directory!
  return if Dir.exist?(self.class.output_directory)
  FileUtils.mkdir_p(self.class.output_directory)
end

def format(result)

_result_ :: [SimpleCov::Result] abcoverage result instance.
==== Args
generate lcov style coverage.
def format(result)
  create_output_directory!
  result.files.each { |file| write_lcov!(file) }
  puts "Lcov style coverage report generated for #{result.command_name} to #{SimpleCov::Formatter::LcovFormatter.output_directory}."
end

def format_file(file)

def format_file(file)
  "SF:#{file.filename}\n".tap do |content|
    file.lines.reject(&:never?).reject(&:skipped?)
      .each do |line|
      content << "DA:#{line.number},#{line.coverage}\n"
    end
    content << "end_of_record\n"
  end
end

def output_filename(filename)

def output_filename(filename)
  filename.gsub("#{SimpleCov.root}/", '').gsub('/', '-')
    .tap { |name| name << '.lcov' }
end

def write_lcov!(file)

def write_lcov!(file)
  File.open(File.join(self.class.output_directory, output_filename(file.filename)), 'w') do |f|
    f.write format_file(file)
  end
end