Class: RuboCop::CommentConfig

Inherits:
Object
  • Object
show all
Defined in:
lib/rubocop/comment_config.rb

Overview

This class parses the special ‘rubocop:disable` comments in a source and provides a way to check if each cop is enabled at arbitrary line.

Constant Summary collapse

UNNEEDED_DISABLE =
'Lint/UnneededDisable'.freeze
COMMENT_DIRECTIVE_REGEXP =
Regexp.new(
  '\A# rubocop : ((?:dis|en)able)\b ((?:[\w/]+,? )+)'.gsub(' ', '\s*')
)

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(processed_source) ⇒ CommentConfig

Returns a new instance of CommentConfig.



15
16
17
# File 'lib/rubocop/comment_config.rb', line 15

def initialize(processed_source)
  @processed_source = processed_source
end

Instance Attribute Details

#processed_sourceObject (readonly)

Returns the value of attribute processed_source.



13
14
15
# File 'lib/rubocop/comment_config.rb', line 13

def processed_source
  @processed_source
end

Instance Method Details

#cop_disabled_line_rangesObject



25
26
27
# File 'lib/rubocop/comment_config.rb', line 25

def cop_disabled_line_ranges
  @cop_disabled_line_ranges ||= analyze
end

#cop_enabled_at_line?(cop, line_number) ⇒ Boolean

Returns:

  • (Boolean)


19
20
21
22
23
# File 'lib/rubocop/comment_config.rb', line 19

def cop_enabled_at_line?(cop, line_number)
  cop = cop.cop_name if cop.respond_to?(:cop_name)
  disabled_line_ranges = cop_disabled_line_ranges[cop]
  disabled_line_ranges.none? { |range| range.include?(line_number) }
end