-
Notifications
You must be signed in to change notification settings - Fork 2
/
todo_list_formatter.rb
51 lines (42 loc) · 1.31 KB
/
todo_list_formatter.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
require "pathname"
require_relative "./todo_list_formatter/report_summary"
# This formatter works like default formattter (display dots for files with no offenses and
# letters for files with problems in the them).
#
# In the end, it shows report with sorted cops and files which can be added to rubocop config.
#
# Here's the format:
#
# Inspecting 3 files
# .CC
# 3 files inspected, 1005001 offenses detected
#
# LineLength
# Exclude:
# - "really/bad/file.rb" # 100500
# - "almost/ok.rb" # 1
class TodoListFormatter < RuboCop::Formatter::ProgressFormatter
attr_reader :offense_list
FileOffence = Struct.new(:file_path, :cop_name)
def started(target_files)
super
@offense_list = []
end
def file_finished(file, offenses)
count_stats(offenses)
report_file_as_mark(offenses)
return if offenses.empty?
path = Pathname.new(file).relative_path_from(Pathname.new(Dir.pwd))
offenses.reject(&:corrected?).each do |offense|
offense_list << FileOffence.new(path, offense.cop_name)
end
end
def finished(inspected_files)
report_summary(inspected_files.length,
@total_offense_count,
@total_correction_count,
@total_correctable_count)
output.puts
DatarocketsStyle::Formatter::TodoListFormatter::ReportSummary.new(offense_list).call(output)
end
end