class RuboCop::Cop::Lint::Syntax

This is not actually a cop. It does not inspect anything. It just provides methods to repack Parser's diagnostics/errors into RuboCop's offenses.

Constants

ERROR_SOURCE_RANGE
PseudoSourceRange

Public Class Methods

offenses_from_processed_source(processed_source, config, options) click to toggle source
# File lib/rubocop/cop/lint/syntax.rb, line 15
def self.offenses_from_processed_source(processed_source,
                                        config, options)
  cop = new(config, options)

  if processed_source.parser_error
    cop.add_offense_from_error(processed_source.parser_error)
  end

  processed_source.diagnostics.each do |diagnostic|
    cop.add_offense_from_diagnostic(diagnostic,
                                    processed_source.ruby_version)
  end

  cop.offenses
end

Public Instance Methods

add_offense_from_diagnostic(diagnostic, ruby_version) click to toggle source
# File lib/rubocop/cop/lint/syntax.rb, line 31
def add_offense_from_diagnostic(diagnostic, ruby_version)
  message =
    "#{diagnostic.message}\n(Using Ruby #{ruby_version} parser; " \
    'configure using `TargetRubyVersion` parameter, under `AllCops`)'
  add_offense(nil,
              location: diagnostic.location,
              message: message,
              severity: diagnostic.level)
end
add_offense_from_error(error) click to toggle source
# File lib/rubocop/cop/lint/syntax.rb, line 41
def add_offense_from_error(error)
  message = beautify_message(error.message)
  add_offense(nil,
              location: ERROR_SOURCE_RANGE,
              message: message,
              severity: :fatal)
end

Private Instance Methods

beautify_message(message) click to toggle source
# File lib/rubocop/cop/lint/syntax.rb, line 51
def beautify_message(message)
  message = message.capitalize
  message << '.' unless message.end_with?('.')
  message
end