class Fastlane::Actions::GcovrAction

–object-directory=OBJDIR Specify the directory that contains the gcov data files. -o OUTPUT, –output=OUTPUT Print output to this filename Keep the temporary *.gcov files generated by gcov. -k, –keep Keep the temporary *.gcov files generated by gcov. -d, –delete Delete the coverage files after they are processed. -f FILTER, –filter=FILTER Keep only the data files that match this regular expression -e EXCLUDE, –exclude=EXCLUDE Exclude data files that match this regular expression –gcov-filter=GCOV_FILTER Keep only gcov data files that match this regular expression –gcov-exclude=GCOV_EXCLUDE Exclude gcov data files that match this regular expression -r ROOT, –root=ROOT Defines the root directory for source files. -x, –xml Generate XML instead of the normal tabular output. –xml-pretty Generate pretty XML instead of the normal dense format. –html Generate HTML instead of the normal tabular output. –html-details Generate HTML output for source file coverage. –html-absolute-paths Set the paths in the HTML report to be absolute instead of relative -b, –branches Tabulate the branch coverage instead of the line coverage. -u, –sort-uncovered Sort entries by increasing number of uncovered lines. -p, –sort-percentage Sort entries by decreasing percentage of covered lines. –gcov-executable=GCOV_CMD Defines the name/path to the gcov executable [defaults to the GCOV environment variable, if present; else 'gcov']. –exclude-unreachable-branches Exclude from coverage branches which are marked to be excluded by LCOV/GCOV markers or are determined to be from lines containing only compiler-generated “dead” code. -g, –use-gcov-files Use preprocessed gcov files for analysis. -s, –print-summary Prints a small report to stdout with line & branch percentage coverage

Constants

ARGS_MAP

Public Class Methods

author() click to toggle source
# File fastlane/lib/fastlane/actions/gcovr.rb, line 140
def self.author
  "dtrenz"
end
available_options() click to toggle source
# File fastlane/lib/fastlane/actions/gcovr.rb, line 114
def self.available_options
  [
    ['object_directory', 'Specify the directory that contains the gcov data files.'],
    ['output', 'Print output to this filename Keep the temporary *.gcov files generated by gcov.'],
    ['keep', 'Keep the temporary *.gcov files generated by gcov.'],
    ['delete', 'Delete the coverage files after they are processed.'],
    ['filter', 'Keep only the data files that match this regular expression'],
    ['exclude', 'Exclude data files that match this regular expression'],
    ['gcov_filter', 'Keep only gcov data files that match this regular expression'],
    ['gcov_exclude', 'Exclude gcov data files that match this regular expression'],
    ['root', 'Defines the root directory for source files.'],
    ['xml', 'Generate XML instead of the normal tabular output.'],
    ['xml_pretty', 'Generate pretty XML instead of the normal dense format.'],
    ['html', 'Generate HTML instead of the normal tabular output.'],
    ['html_details', 'Generate HTML output for source file coverage.'],
    ['html_absolute_paths', 'Set the paths in the HTML report to be absolute instead of relative'],
    ['branches', 'Tabulate the branch coverage instead of the line coverage.'],
    ['sort_uncovered', 'Sort entries by increasing number of uncovered lines.'],
    ['sort_percentage', 'Sort entries by decreasing percentage of covered lines.'],
    ['gcov_executable', 'Defines the name/path to the gcov executable].'],
    ['exclude_unreachable_branches', 'Exclude from coverage branches which are marked to be excluded by LCOV/GCOV markers'],
    ['use_gcov_files', 'Use preprocessed gcov files for analysis.'],
    ['print_summary', 'Prints a small report to stdout with line & branch percentage coverage']
  ]
end
category() click to toggle source
# File fastlane/lib/fastlane/actions/gcovr.rb, line 158
def self.category
  :testing
end
create_output_dir_if_not_exists(output_path) click to toggle source
# File fastlane/lib/fastlane/actions/gcovr.rb, line 86
def self.create_output_dir_if_not_exists(output_path)
  output_dir = File.dirname(output_path)

  # If the output directory doesn't exist, create it
  unless Dir.exist?(output_dir)
    FileUtils.mkpath(output_dir)
  end
end
description() click to toggle source
# File fastlane/lib/fastlane/actions/gcovr.rb, line 110
def self.description
  "Runs test coverage reports for your Xcode project"
end
details() click to toggle source
# File fastlane/lib/fastlane/actions/gcovr.rb, line 154
def self.details
  "Generate summarized code coverage reports using [gcovr](http://gcovr.com/)"
end
example_code() click to toggle source
# File fastlane/lib/fastlane/actions/gcovr.rb, line 144
def self.example_code
  [
    'gcovr(
      html: true,
      html_details: true,
      output: "./code-coverage/report.html"
    )'
  ]
end
is_supported?(platform) click to toggle source
# File fastlane/lib/fastlane/actions/gcovr.rb, line 50
def self.is_supported?(platform)
  platform == :ios
end
params_hash_to_cli_args(params) click to toggle source
# File fastlane/lib/fastlane/actions/gcovr.rb, line 95
def self.params_hash_to_cli_args(params)
  # Remove nil value params
  params = params.delete_if { |_, v| v.nil? }

  # Maps nice developer param names to CLI arguments
  params.map do |k, v|
    v ||= ""
    args = ARGS_MAP[k]
    if args
      value = (v != true && v.to_s.length > 0 ? "\"#{v}\"" : "")
      "#{args} #{value}".strip
    end
  end.compact
end
run(params) click to toggle source
# File fastlane/lib/fastlane/actions/gcovr.rb, line 54
def self.run(params)
  unless Helper.test?
    UI.user_error!("gcovr not installed") if `which gcovr`.length == 0
  end

  # The args we will build with
  gcovr_args = nil

  # Allows for a whole variety of configurations
  if params.kind_of?(Hash)
    params_hash = params

    # Check if an output path was given
    if params_hash.key?(:output)
      create_output_dir_if_not_exists(params_hash[:output])
    end

    # Maps parameter hash to CLI args
    gcovr_args = params_hash_to_cli_args(params_hash)
  else
    gcovr_args = params
  end

  # Joins args into space delimited string
  gcovr_args = gcovr_args.join(" ")

  command = "gcovr #{gcovr_args}"
  UI.success("Generating code coverage.")
  UI.verbose(command)
  Actions.sh(command)
end