lib/haml_lint/reporter/offense_count_reporter.rb
# frozen_string_literal: false
module HamlLint
# Outputs the a list of lints with a count of how many of each were found.
# Ordered by descending count
class Reporter::OffenseCountReporter < Reporter
def display_report(report)
lints = report.lints
total_count = lints.count
return if total_count.zero?
lints.group_by { |l| lint_type_group(l) }
.transform_values(&:size)
.sort_by { |_linter, lint_count| -lint_count }
.each do |linter, lint_count|
log.log "#{lint_count.to_s.ljust(total_count.to_s.length + 2)} #{linter}"
end
log.log '--'
log.log "#{total_count} Total"
end
private
def lint_type_group(lint)
"#{lint.linter.name}#{offense_type(lint)}"
end
def offense_type(lint)
": #{lint.message.to_s.split(':')[0]}" if lint.linter.name == 'RuboCop'
end
end
end