class SugarCane::ViolationFormatter
Computes a string to be displayed as output from an array of violations computed by the checks.
Attributes
options[R]
violations[R]
Public Class Methods
new(violations, options = {})
click to toggle source
# File lib/sugarcane/violation_formatter.rb, line 11 def initialize(violations, options = {}) @violations = violations.map do |v| v.merge(file_and_line: v[:line] ? "%s:%i" % v.values_at(:file, :line) : v[:file] ) end @options = options end
Public Instance Methods
to_s()
click to toggle source
# File lib/sugarcane/violation_formatter.rb, line 22 def to_s return "" if violations.empty? string = violations.group_by {|x| x[:description] }.map do |d, vs| format_group_header(d, vs) + format_violations(vs) end.join("\n") + "\n\n" + totals + "\n\n" if violations.count > options.fetch(:max_violations, 0) string = colorize(string) end string end
Protected Instance Methods
colorize(string)
click to toggle source
# File lib/sugarcane/violation_formatter.rb, line 65 def colorize(string) return string unless options[:color] "\e[31m#{string}\e[0m" end
column_widths(violations, columns)
click to toggle source
# File lib/sugarcane/violation_formatter.rb, line 53 def column_widths(violations, columns) columns.each_with_object({}) do |column, h| h[column] = violations.map {|v| v[column].to_s.length }.max end end
format_group_header(description, violations)
click to toggle source
# File lib/sugarcane/violation_formatter.rb, line 39 def format_group_header(description, violations) ["", "%s (%i):" % [description, violations.length], ""] end
format_violation(v, column_widths)
click to toggle source
# File lib/sugarcane/violation_formatter.rb, line 59 def format_violation(v, column_widths) ' ' + column_widths.keys.map {|column| v[column].to_s.ljust(column_widths[column]) }.join(' ').strip end
format_violations(violations)
click to toggle source
# File lib/sugarcane/violation_formatter.rb, line 43 def format_violations(violations) columns = [:file_and_line, :label, :value] widths = column_widths(violations, columns) violations.map do |v| format_violation(v, widths) end end
totals()
click to toggle source
# File lib/sugarcane/violation_formatter.rb, line 71 def totals "Total Violations: #{violations.length}" end