Class: Undercover::Report
- Inherits:
-
Object
- Object
- Undercover::Report
- Extended by:
- Forwardable
- Defined in:
- lib/undercover.rb
Instance Attribute Summary collapse
-
#changeset ⇒ Object
readonly
Returns the value of attribute changeset.
-
#code_dir ⇒ Object
readonly
Returns the value of attribute code_dir.
-
#lcov ⇒ Object
readonly
Returns the value of attribute lcov.
-
#results ⇒ Object
readonly
Returns the value of attribute results.
Instance Method Summary collapse
- #all_results ⇒ Object
-
#build ⇒ Object
rubocop:disable Metrics/MethodLength, Metrics/AbcSize, Metrics/CyclomaticComplexity.
-
#build_warnings ⇒ Object
rubocop:enable Metrics/MethodLength, Metrics/AbcSize, Metrics/CyclomaticComplexity.
- #flagged_results ⇒ Object
-
#initialize(changeset, opts) ⇒ Report
constructor
Initializes a new Undercover::Report.
- #inspect ⇒ Object (also: #to_s)
Constructor Details
#initialize(changeset, opts) ⇒ Report
Initializes a new Undercover::Report
31 32 33 34 35 36 37 |
# File 'lib/undercover.rb', line 31 def initialize(changeset, opts) @lcov = LcovParser.parse(File.open(opts.lcov)) @code_dir = opts.path @changeset = changeset.update @loaded_files = {} @results = {} end |
Instance Attribute Details
#changeset ⇒ Object (readonly)
Returns the value of attribute changeset.
22 23 24 |
# File 'lib/undercover.rb', line 22 def changeset @changeset end |
#code_dir ⇒ Object (readonly)
Returns the value of attribute code_dir.
22 23 24 |
# File 'lib/undercover.rb', line 22 def code_dir @code_dir end |
#lcov ⇒ Object (readonly)
Returns the value of attribute lcov.
22 23 24 |
# File 'lib/undercover.rb', line 22 def lcov @lcov end |
#results ⇒ Object (readonly)
Returns the value of attribute results.
22 23 24 |
# File 'lib/undercover.rb', line 22 def results @results end |
Instance Method Details
#all_results ⇒ Object
72 73 74 |
# File 'lib/undercover.rb', line 72 def all_results results.values.map(&:to_a).flatten end |
#build ⇒ Object
rubocop:disable Metrics/MethodLength, Metrics/AbcSize, Metrics/CyclomaticComplexity
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/undercover.rb', line 40 def build changeset.each_changed_line do |filepath, line_no| dist_from_line_no = lambda do |res| return BigDecimal::INFINITY if line_no < res.first_line res_lines = res.first_line..res.last_line return BigDecimal::INFINITY unless res_lines.cover?(line_no) line_no - res.first_line end dist_from_line_no_sorter = lambda do |res1, res2| dist_from_line_no[res1] <=> dist_from_line_no[res2] end load_and_parse_file(filepath) next unless loaded_files[filepath] res = loaded_files[filepath].min(&dist_from_line_no_sorter) res.flag if res&.uncovered?(line_no) results[filepath] ||= Set.new results[filepath] << res end self end |
#build_warnings ⇒ Object
rubocop:enable Metrics/MethodLength, Metrics/AbcSize, Metrics/CyclomaticComplexity
66 67 68 69 70 |
# File 'lib/undercover.rb', line 66 def build_warnings warn('Undercover::Report#build_warnings is deprecated! ' \ 'Please use the #flagged_results accessor instead.') all_results.select(&:flagged?) end |
#flagged_results ⇒ Object
76 77 78 |
# File 'lib/undercover.rb', line 76 def flagged_results all_results.select(&:flagged?) end |
#inspect ⇒ Object Also known as: to_s
80 81 82 |
# File 'lib/undercover.rb', line 80 def inspect "#<Undercover::Report:#{object_id} results: #{results.size}>" end |