lib/undercover.rb in undercover-0.2.0 vs lib/undercover.rb in undercover-0.2.1
- old
+ new
@@ -48,20 +48,25 @@
# TODO: this is experimental and might be incorrect!
# rubocop:disable Metrics/MethodLength, Metrics/AbcSize
def build_warnings
flagged_results = Set.new
+
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
-
next unless results[filepath]
+
res = results[filepath].min(&dist_from_line_no_sorter)
flagged_results << res if res&.uncovered?(line_no)
end
flagged_results
end
@@ -85,9 +90,10 @@
match_all = ->(_) { true }
lcov.source_files.each do |relative_filename, coverage|
path = File.join(code_dir, relative_filename)
root_ast = Imagen::Node::Root.new.build_from_file(path)
next if root_ast.children.empty?
+
root_ast.children[0].find_all(match_all).each do |node|
yield(relative_filename, coverage, node)
end
end
end