class Pronto::Rubocop::OffenseLine
Constants
- AUTOCORRECT
-
rubocop 1.30.0 renamed from auto_correct to autocorrect
- DEFAULT_SEVERITIES
- MOBILIZE
-
rubocop >= 0.87.0 has both mobilize and public investigate method
Attributes
Public Class Methods
Source
# File lib/pronto/rubocop/offense_line.rb, line 6 def initialize(patch_cop, offense, line) @patch_cop = patch_cop @offense = offense @line = line end
Public Instance Methods
Source
# File lib/pronto/rubocop/offense_line.rb, line 12 def message Message.new(path, line, level, message_text, nil, Pronto::Rubocop) end
Private Instance Methods
Source
# File lib/pronto/rubocop/offense_line.rb, line 94 def autocorrect_team @autocorrect_team ||= ::RuboCop::Cop::Team.send(MOBILIZE, ::RuboCop::Cop::Registry.new([cop_class]), patch_cop.rubocop_config, **{ AUTOCORRECT => true, stdin: true }) end
Source
# File lib/pronto/rubocop/offense_line.rb, line 114 def config_severities patch_cop .runner .pronto_rubocop_config .fetch('severities', {}) .map { |k, v| [k.to_sym, v.to_sym] } .to_h end
Source
# File lib/pronto/rubocop/offense_line.rb, line 102 def cop_class patch_cop.registry.find_by_cop_name(offense.cop_name) end
Source
# File lib/pronto/rubocop/offense_line.rb, line 43 def corrected_lines @corrected_lines ||= corrector.rewrite.lines end
Source
# File lib/pronto/rubocop/offense_line.rb, line 71 def corrections_count # Some lines may contain more than one offense report.offenses.map(&:line).uniq.size end
Source
# File lib/pronto/rubocop/offense_line.rb, line 67 def corrector report.corrector end
Source
# File lib/pronto/rubocop/offense_line.rb, line 47 def differing_lines_count original_lines.each_with_index.count do |line, index| line != corrected_lines[index] end end
Source
# File lib/pronto/rubocop/offense_line.rb, line 106 def level severities.fetch(offense.severity.name) end
Source
# File lib/pronto/rubocop/offense_line.rb, line 28 def message_text return offense.message unless suggestion_text "#{offense.message}\n\n```suggestion\n#{suggestion_text}```" end
Source
# File lib/pronto/rubocop/offense_line.rb, line 53 def original_lines processed_source.lines.join("\n").lines end
Source
# File lib/pronto/rubocop/offense_line.rb, line 20 def path line.patch.delta.new_file[:path] end
Source
# File lib/pronto/rubocop/offense_line.rb, line 24 def processed_source patch_cop.processed_source end
Source
# File lib/pronto/rubocop/offense_line.rb, line 63 def report @report ||= autocorrect_team.investigate(processed_source).cop_reports.first end
Source
# File lib/pronto/rubocop/offense_line.rb, line 110 def severities @severities ||= DEFAULT_SEVERITIES.merge(config_severities) end
Source
# File lib/pronto/rubocop/offense_line.rb, line 34 def suggestion_text return unless patch_cop.runner.pronto_rubocop_config['suggestions'] return if corrections_count.zero? return if corrector.nil? # possible after optimisation in https://github.com/rubocop/rubocop/pull/11264 return if differing_lines_count != corrections_count @suggestion_text ||= corrected_lines[offense.line - 1] end