class Goodcheck::Reporters::Text
Attributes
stdout[R]
Public Class Methods
new(stdout:)
click to toggle source
# File lib/goodcheck/reporters/text.rb, line 6 def initialize(stdout:) @stdout = stdout @file_count = 0 @issue_count = 0 end
Public Instance Methods
analysis() { || ... }
click to toggle source
# File lib/goodcheck/reporters/text.rb, line 12 def analysis yield end
file(path) { || ... }
click to toggle source
# File lib/goodcheck/reporters/text.rb, line 16 def file(path) @file_count += 1 yield end
issue(issue)
click to toggle source
# File lib/goodcheck/reporters/text.rb, line 25 def issue(issue) @issue_count += 1 format_line = lambda do |line:, column:| format_args = { path: Rainbow(issue.path).cyan, location: Rainbow(":#{line}:#{column}:").dimgray, message: issue.rule.message.lines.first.chomp, rule: Rainbow("(#{issue.rule.id})").dimgray, severity: issue.rule.severity ? Rainbow("[#{issue.rule.severity}]").magenta : "" } format("%<path>s%<location>s %<message>s %<rule>s %<severity>s", format_args).strip end if issue.location start_line = issue.location.start_line start_column = issue.location.start_column start_column_index = start_column - 1 line = issue.buffer.line(start_line) column_size = if issue.location.one_line? issue.location.column_size else line.bytesize - start_column end stdout.puts format_line.call(line: start_line, column: start_column) stdout.puts line.chomp stdout.puts (" " * start_column_index) + Rainbow("^" + "~" * (column_size - 1)).yellow else stdout.puts format_line.call(line: "-", column: "-") end justifications = issue.rule.justifications unless justifications.empty? stdout.puts "" stdout.puts " #{Rainbow('Justifications').dimgray.underline.italic}:" justifications.each do |justification| stdout.puts " • #{Rainbow(justification).dimgray.italic}" end stdout.puts "" end end
rule(rule) { || ... }
click to toggle source
# File lib/goodcheck/reporters/text.rb, line 21 def rule(rule) yield end
summary()
click to toggle source
# File lib/goodcheck/reporters/text.rb, line 67 def summary files = case @file_count when 0 "no files" when 1 "1 file" else "#{@file_count} files" end issues = case @issue_count when 0 Rainbow("no issues").green when 1 Rainbow("1 issue").red else Rainbow("#{@issue_count} issues").red end stdout.puts "" stdout.puts "#{files} inspected, #{issues} detected" end