Class: Danger::DangerCodeCoverage

Inherits:
Plugin
  • Object
show all
Defined in:
lib/code_coverage/plugin.rb

Overview

Generate code coverage reports on pull requests based on jenkins code-coverage-api-plugin.

)

Examples:

Generate report for each changed file.

code_coverage.report

Use auth token.

code_coverage.report(
  auth_user: 'user',
  auth_token: 'token'

See Also:

  • Kyaak/danger-code_coverage

Constant Summary collapse

EMPTY_COLUMN =
'-'
TABLE_HEADER_TOTAL =
'**Total**'
TABLE_HEADER_FILE =
'**File**'
TABLE_HEADER_METHOD =
'**Method**'
TABLE_HEADER_LINE =
'**Line**'
TABLE_HEADER_CONDITIONAL =
'**Conditional**'
TABLE_HEADER_INSTRUCTION =
'**Instruction**'
TABLE_TITLE =
'### Code Coverage :100:'

Instance Method Summary collapse

Constructor Details

#initialize(dangerfile) ⇒ DangerCodeCoverage

Initialize code_coverage plugin.



33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/code_coverage/plugin.rb', line 33

def initialize(dangerfile)
  @target_files = nil
  @auth = nil
  @table = CodeCoverage::MarkdownTable.new
  @table.header(TABLE_HEADER_FILE,
                TABLE_HEADER_TOTAL,
                TABLE_HEADER_METHOD,
                TABLE_HEADER_LINE,
                TABLE_HEADER_CONDITIONAL,
                TABLE_HEADER_INSTRUCTION)
  super(dangerfile)
end

Instance Method Details

#report(*args) ⇒ void

This method returns an undefined value.

Create an overview report.

Parameters:

  • args

    Configuration settings



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/code_coverage/plugin.rb', line 50

def report(*args)
  options = args.first
  sort_order = options && options[:sort]
  if sort_order && !sort_order.eql?(:ascending) && !sort_order.eql?(:descending)
    raise(ArgumentError.new('Invalid configuration, use [:ascending, :descending]'))
  end

  check_auth(options)

  items = coverage_items
  items.select! { |item| file_in_changeset?(item.file) }
  items.each(&method(:update_item))
  items.sort_by! do |item|
    if sort_order.eql?(:ascending)
      item.total
    else
      -item.total
    end
  end
  items.each(&method(:add_entry))

  return if @table.size.zero?

  markdown("#{TABLE_TITLE}\n\n#{@table.to_markdown}")
end