Sha256: 1abefbcd0a7f2646e1330d1b922a3e6a508bcf90c3393c4a380b7e84bb17b9c3
Contents?: true
Size: 1.69 KB
Versions: 163
Compression:
Stored size: 1.69 KB
Contents
# frozen_string_literal: true module RuboCop module Formatter # This formatter formats report data in clang style. # The precise location of the problem is shown together with the # relevant source code. class ClangStyleFormatter < SimpleTextFormatter ELLIPSES = '...' def report_file(file, offenses) offenses.each { |offense| report_offense(file, offense) } end private def report_offense(file, offense) output.printf( "%<path>s:%<line>d:%<column>d: %<severity>s: %<message>s\n", path: cyan(smart_path(file)), line: offense.line, column: offense.real_column, severity: colored_severity_code(offense), message: message(offense) ) begin return unless valid_line?(offense) report_line(offense.location) report_highlighted_area(offense.highlighted_area) rescue IndexError # range is not on a valid line; perhaps the source file is empty end end def valid_line?(offense) !offense.location.source_line.blank? end def report_line(location) source_line = location.source_line if location.single_line? output.puts(source_line) else output.puts("#{source_line} #{yellow(ELLIPSES)}") end end def report_highlighted_area(highlighted_area) space_area = highlighted_area.source_buffer.slice(0...highlighted_area.begin_pos) source_area = highlighted_area.source output.puts("#{' ' * Unicode::DisplayWidth.of(space_area)}" \ "#{'^' * Unicode::DisplayWidth.of(source_area)}") end end end end
Version data entries
163 entries across 158 versions & 15 rubygems