class Pronto::Rubocop::OffenseLine
Constants
- DEFAULT_SEVERITIES
- MOBILIZE
rubocop >= 0.87.0 has both mobilize and public investigate method
Attributes
line[R]
offense[R]
patch_cop[R]
Public Class Methods
new(patch_cop, offense, line)
click to toggle 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
message()
click to toggle 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
autocorrect_team()
click to toggle source
# File lib/pronto/rubocop/offense_line.rb, line 89 def autocorrect_team @autocorrect_team ||= ::RuboCop::Cop::Team.send(MOBILIZE, ::RuboCop::Cop::Registry.new([cop_class]), patch_cop.rubocop_config, auto_correct: true, stdin: true) end
config_severities()
click to toggle source
# File lib/pronto/rubocop/offense_line.rb, line 110 def config_severities patch_cop .runner .pronto_rubocop_config .fetch('severities', {}) .map { |k, v| [k.to_sym, v.to_sym] } .to_h end
cop_class()
click to toggle source
# File lib/pronto/rubocop/offense_line.rb, line 98 def cop_class patch_cop.registry.find_by_cop_name(offense.cop_name) end
corrected_lines()
click to toggle source
# File lib/pronto/rubocop/offense_line.rb, line 42 def corrected_lines @corrected_lines ||= corrector.rewrite.lines end
corrections_count()
click to toggle source
# File lib/pronto/rubocop/offense_line.rb, line 68 def corrections_count report.offenses.size end
corrector()
click to toggle source
# File lib/pronto/rubocop/offense_line.rb, line 64 def corrector report.corrector end
differing_lines_count()
click to toggle source
# File lib/pronto/rubocop/offense_line.rb, line 46 def differing_lines_count original_lines.each_with_index.count do |line, index| line != corrected_lines[index] end end
level()
click to toggle source
# File lib/pronto/rubocop/offense_line.rb, line 102 def level severities.fetch(offense.severity.name) end
message_text()
click to toggle 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
original_lines()
click to toggle source
# File lib/pronto/rubocop/offense_line.rb, line 52 def original_lines processed_source.lines.join("\n").lines end
path()
click to toggle source
# File lib/pronto/rubocop/offense_line.rb, line 20 def path line.patch.delta.new_file[:path] end
processed_source()
click to toggle source
# File lib/pronto/rubocop/offense_line.rb, line 24 def processed_source patch_cop.processed_source end
report()
click to toggle source
# File lib/pronto/rubocop/offense_line.rb, line 60 def report @report ||= autocorrect_team.investigate(processed_source).cop_reports.first end
severities()
click to toggle source
# File lib/pronto/rubocop/offense_line.rb, line 106 def severities @severities ||= DEFAULT_SEVERITIES.merge(config_severities) end
suggestion_text()
click to toggle 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 differing_lines_count != corrections_count @suggestion_text ||= corrected_lines[offense.line - 1] end