Class: RuboCop::Formatter::WorstOffendersFormatter Private
- Inherits:
-
BaseFormatter
- Object
- BaseFormatter
- RuboCop::Formatter::WorstOffendersFormatter
- Defined in:
- lib/rubocop/formatter/worst_offenders_formatter.rb
Overview
This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.
This formatter displays the list of offensive files, sorted by number of offenses with the worst offenders first.
Here's the format:
26 this/file/is/really/bad.rb 3 just/ok.rb
29 Total in 2 files
Instance Attribute Summary collapse
- #offense_counts ⇒ Object readonly private
Attributes inherited from BaseFormatter
Instance Method Summary collapse
- #file_finished(file, offenses) ⇒ Object private
- #finished(_inspected_files) ⇒ Object private
-
#ordered_offense_counts(offense_counts) ⇒ Object
private
rubocop:enable Metrics/AbcSize.
-
#report_summary(offense_counts) ⇒ Object
private
rubocop:disable Metrics/AbcSize.
- #started(target_files) ⇒ Object private
- #total_offense_count(offense_counts) ⇒ Object private
Methods inherited from BaseFormatter
Constructor Details
This class inherits a constructor from RuboCop::Formatter::BaseFormatter
Instance Attribute Details
#offense_counts ⇒ Object (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
17 18 19 |
# File 'lib/rubocop/formatter/worst_offenders_formatter.rb', line 17 def offense_counts @offense_counts end |
Instance Method Details
#file_finished(file, offenses) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
24 25 26 27 28 29 |
# File 'lib/rubocop/formatter/worst_offenders_formatter.rb', line 24 def file_finished(file, offenses) return if offenses.empty? path = Pathname.new(file).relative_path_from(Pathname.new(Dir.pwd)) @offense_counts[path] = offenses.size end |
#finished(_inspected_files) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
31 32 33 |
# File 'lib/rubocop/formatter/worst_offenders_formatter.rb', line 31 def finished(_inspected_files) report_summary(@offense_counts) end |
#ordered_offense_counts(offense_counts) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
rubocop:enable Metrics/AbcSize
55 56 57 |
# File 'lib/rubocop/formatter/worst_offenders_formatter.rb', line 55 def ordered_offense_counts(offense_counts) offense_counts.sort_by { |k, v| [-v, k] }.to_h end |
#report_summary(offense_counts) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
rubocop:disable Metrics/AbcSize
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/rubocop/formatter/worst_offenders_formatter.rb', line 36 def report_summary(offense_counts) per_file_counts = ordered_offense_counts(offense_counts) total_count = total_offense_count(offense_counts) file_count = per_file_counts.size output.puts column_width = total_count.to_s.length + 2 per_file_counts.each do |file_name, count| output.puts "#{count.to_s.ljust(column_width)}#{file_name}\n" end output.puts '--' output.puts "#{total_count} Total in #{file_count} files" output.puts end |
#started(target_files) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
19 20 21 22 |
# File 'lib/rubocop/formatter/worst_offenders_formatter.rb', line 19 def started(target_files) super @offense_counts = {} end |
#total_offense_count(offense_counts) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
59 60 61 |
# File 'lib/rubocop/formatter/worst_offenders_formatter.rb', line 59 def total_offense_count(offense_counts) offense_counts.values.sum end |