rubocop 0.77.0 → 0.78.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/config/default.yml +37 -25
  4. data/lib/rubocop.rb +5 -2
  5. data/lib/rubocop/cli/command/auto_genenerate_config.rb +7 -7
  6. data/lib/rubocop/config.rb +1 -1
  7. data/lib/rubocop/config_obsoletion.rb +3 -3
  8. data/lib/rubocop/config_validator.rb +6 -4
  9. data/lib/rubocop/cop/autocorrect_logic.rb +1 -1
  10. data/lib/rubocop/cop/bundler/insecure_protocol_source.rb +2 -2
  11. data/lib/rubocop/cop/cop.rb +3 -1
  12. data/lib/rubocop/cop/layout/first_argument_indentation.rb +2 -2
  13. data/lib/rubocop/cop/layout/heredoc_indentation.rb +4 -4
  14. data/lib/rubocop/cop/{metrics → layout}/line_length.rb +5 -78
  15. data/lib/rubocop/cop/layout/space_around_operators.rb +31 -6
  16. data/lib/rubocop/cop/layout/space_before_block_braces.rb +17 -0
  17. data/lib/rubocop/cop/lint/each_with_object_argument.rb +1 -1
  18. data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +89 -0
  19. data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +2 -2
  20. data/lib/rubocop/cop/lint/redundant_cop_enable_directive.rb +4 -4
  21. data/lib/rubocop/cop/mixin/alignment.rb +1 -1
  22. data/lib/rubocop/cop/mixin/line_length_help.rb +88 -0
  23. data/lib/rubocop/cop/mixin/rational_literal.rb +18 -0
  24. data/lib/rubocop/cop/mixin/statement_modifier.rb +2 -2
  25. data/lib/rubocop/cop/mixin/trailing_comma.rb +6 -3
  26. data/lib/rubocop/cop/offense.rb +11 -0
  27. data/lib/rubocop/cop/style/attr.rb +8 -0
  28. data/lib/rubocop/cop/style/conditional_assignment.rb +2 -2
  29. data/lib/rubocop/cop/style/guard_clause.rb +3 -2
  30. data/lib/rubocop/cop/style/if_unless_modifier.rb +38 -3
  31. data/lib/rubocop/cop/style/infinite_loop.rb +1 -1
  32. data/lib/rubocop/cop/style/multiline_method_signature.rb +1 -1
  33. data/lib/rubocop/cop/style/trailing_underscore_variable.rb +7 -1
  34. data/lib/rubocop/cop/style/while_until_modifier.rb +1 -1
  35. data/lib/rubocop/formatter/base_formatter.rb +2 -2
  36. data/lib/rubocop/formatter/json_formatter.rb +6 -5
  37. data/lib/rubocop/node_pattern.rb +1 -1
  38. data/lib/rubocop/options.rb +8 -8
  39. data/lib/rubocop/result_cache.rb +2 -0
  40. data/lib/rubocop/runner.rb +5 -1
  41. data/lib/rubocop/version.rb +1 -1
  42. metadata +6 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8789393bf78c1ae637e196f15a3b312a261b8239996ce92bcd99670ab358bea0
4
- data.tar.gz: 6b1e83fe89bcd3e003ea5f95307d212b3e5adce496ddc26dfe6ff92ea4dc3356
3
+ metadata.gz: a1c6769965ef19c24fed5115e5ee0e6949aef81f2d4f0c64a28e867b694b8f8b
4
+ data.tar.gz: 6785ee7c23edbb4b47414ca32a9cb7b7e24565c454c8e4a33f742b9a15de8e5b
5
5
  SHA512:
6
- metadata.gz: d0a92b3b466939337e7d100d255a9c08ff7db25c235c3645ad65e878151899000749a5e20b01eda2be3ec7e4384272cfed2dce12053dd87df4b01be83453c3d9
7
- data.tar.gz: d646dad7e86dcacd75a286f70c2843934acb9a7416a40edec51fa373d9f0b3da05f74eac21ad869c24b92b550e2efb66cdf0229dc6ef2fb772edc7a7a6ee5107
6
+ metadata.gz: e3e28e9ed24f5e757ce4c24f4ee4d079eb5e7ac1c6f50bd50fb512c5b4986d84ec19b0ba426a9b077ca734177a5e5139a50c12f5fe331216abee67bd6a2436b4
7
+ data.tar.gz: 2f2739072557a141d69a51037e38a0973bee53caf40d216610eaffd3a8f14409e64562ed71a49803ad8b11b71fedc51312657efaecb27189900c7b5c44b2cb8c
data/README.md CHANGED
@@ -53,7 +53,7 @@ haven't reached version 1.0 yet). To prevent an unwanted RuboCop update you
53
53
  might want to use a conservative version lock in your `Gemfile`:
54
54
 
55
55
  ```rb
56
- gem 'rubocop', '~> 0.77.0', require: false
56
+ gem 'rubocop', '~> 0.78.0', require: false
57
57
  ```
58
58
 
59
59
  ## Quickstart
@@ -59,6 +59,7 @@ AllCops:
59
59
  - '**/Vagrantfile'
60
60
  Exclude:
61
61
  - 'node_modules/**/*'
62
+ - 'tmp/**/*'
62
63
  - 'vendor/**/*'
63
64
  - '.git/**/*'
64
65
  # Default formatter will be used if no `-f/--format` option is given.
@@ -196,9 +197,10 @@ Gemspec/RequiredRubyVersion:
196
197
  VersionAdded: '0.52'
197
198
  Include:
198
199
  - '**/*.gemspec'
199
- -
200
+
200
201
  Gemspec/RubyVersionGlobalsUsage:
201
202
  Description: Checks usage of RUBY_VERSION in gemspec.
203
+ StyleGuide: '#no-ruby-version-in-the-gemspec'
202
204
  Enabled: true
203
205
  VersionAdded: '0.72'
204
206
  Include:
@@ -799,6 +801,29 @@ Layout/LeadingEmptyLines:
799
801
  VersionAdded: '0.57'
800
802
  VersionChanged: '0.77'
801
803
 
804
+ Layout/LineLength:
805
+ Description: 'Limit lines to 80 characters.'
806
+ StyleGuide: '#80-character-limits'
807
+ Enabled: true
808
+ VersionAdded: '0.25'
809
+ VersionChanged: '0.78'
810
+ AutoCorrect: false
811
+ Max: 80
812
+ # To make it possible to copy or click on URIs in the code, we allow lines
813
+ # containing a URI to be longer than Max.
814
+ AllowHeredoc: true
815
+ AllowURI: true
816
+ URISchemes:
817
+ - http
818
+ - https
819
+ # The IgnoreCopDirectives option causes the LineLength rule to ignore cop
820
+ # directives like '# rubocop: enable ...' when calculating a line's length.
821
+ IgnoreCopDirectives: true
822
+ # The IgnoredPatterns option is a list of !ruby/regexp and/or string
823
+ # elements. Strings will be converted to Regexp objects. A line that matches
824
+ # any regular expression listed in this option will be ignored by LineLength.
825
+ IgnoredPatterns: []
826
+
802
827
  Layout/MultilineArrayBraceLayout:
803
828
  Description: >-
804
829
  Checks that the closing brace in an array literal is
@@ -1042,6 +1067,10 @@ Layout/SpaceAroundOperators:
1042
1067
  # with an operator on the previous or next line, not counting empty lines
1043
1068
  # or comment lines.
1044
1069
  AllowForAlignment: true
1070
+ EnforcedStyleForExponentOperator: no_space
1071
+ SupportedStylesForExponentOperator:
1072
+ - space
1073
+ - no_space
1045
1074
 
1046
1075
  Layout/SpaceBeforeBlockBraces:
1047
1076
  Description: >-
@@ -1471,6 +1500,12 @@ Lint/NextWithoutAccumulator:
1471
1500
  Enabled: true
1472
1501
  VersionAdded: '0.36'
1473
1502
 
1503
+ Lint/NonDeterministicRequireOrder:
1504
+ Description: 'Always sort arrays returned by Dir.glob when requiring files.'
1505
+ Enabled: true
1506
+ VersionAdded: '0.78'
1507
+ Safe: false
1508
+
1474
1509
  Lint/NonLocalExitFromIterator:
1475
1510
  Description: 'Do not use return in iterator to cause non-local exit.'
1476
1511
  Enabled: true
@@ -1809,29 +1844,6 @@ Metrics/CyclomaticComplexity:
1809
1844
  VersionAdded: '0.25'
1810
1845
  Max: 6
1811
1846
 
1812
- Metrics/LineLength:
1813
- Description: 'Limit lines to 80 characters.'
1814
- StyleGuide: '#80-character-limits'
1815
- Enabled: true
1816
- VersionAdded: '0.25'
1817
- VersionChanged: '0.68'
1818
- AutoCorrect: false
1819
- Max: 80
1820
- # To make it possible to copy or click on URIs in the code, we allow lines
1821
- # containing a URI to be longer than Max.
1822
- AllowHeredoc: true
1823
- AllowURI: true
1824
- URISchemes:
1825
- - http
1826
- - https
1827
- # The IgnoreCopDirectives option causes the LineLength rule to ignore cop
1828
- # directives like '# rubocop: enable ...' when calculating a line's length.
1829
- IgnoreCopDirectives: true
1830
- # The IgnoredPatterns option is a list of !ruby/regexp and/or string
1831
- # elements. Strings will be converted to Regexp objects. A line that matches
1832
- # any regular expression listed in this option will be ignored by LineLength.
1833
- IgnoredPatterns: []
1834
-
1835
1847
  Metrics/MethodLength:
1836
1848
  Description: 'Avoid methods longer than 10 lines of code.'
1837
1849
  StyleGuide: '#short-methods'
@@ -3842,7 +3854,7 @@ Style/TrivialAccessors:
3842
3854
  # Commonly used in DSLs
3843
3855
  AllowDSLWriters: false
3844
3856
  IgnoreClassMethods: false
3845
- AllowedMethod:
3857
+ AllowedMethods:
3846
3858
  - to_ary
3847
3859
  - to_a
3848
3860
  - to_c
@@ -123,6 +123,7 @@ require_relative 'rubocop/cop/mixin/ignored_pattern'
123
123
  require_relative 'rubocop/cop/mixin/ignored_methods'
124
124
  require_relative 'rubocop/cop/mixin/integer_node'
125
125
  require_relative 'rubocop/cop/mixin/interpolation'
126
+ require_relative 'rubocop/cop/mixin/line_length_help'
126
127
  require_relative 'rubocop/cop/mixin/match_range'
127
128
  require_relative 'rubocop/cop/mixin/method_complexity'
128
129
  require_relative 'rubocop/cop/mixin/method_preference'
@@ -142,6 +143,7 @@ require_relative 'rubocop/cop/mixin/percent_array'
142
143
  require_relative 'rubocop/cop/mixin/percent_literal'
143
144
  require_relative 'rubocop/cop/mixin/preceding_following_alignment'
144
145
  require_relative 'rubocop/cop/mixin/preferred_delimiters'
146
+ require_relative 'rubocop/cop/mixin/rational_literal'
145
147
  require_relative 'rubocop/cop/mixin/rescue_node'
146
148
  require_relative 'rubocop/cop/mixin/safe_assignment'
147
149
  require_relative 'rubocop/cop/mixin/space_after_punctuation'
@@ -211,7 +213,7 @@ require_relative 'rubocop/cop/layout/empty_lines_around_arguments'
211
213
  require_relative 'rubocop/cop/layout/empty_lines_around_begin_body'
212
214
  require_relative 'rubocop/cop/layout/empty_lines_around_block_body'
213
215
  require_relative 'rubocop/cop/layout/empty_lines_around_class_body'
214
- require_relative 'rubocop/cop/layout/empty_lines_around_exception_handling_keywords' # rubocop:disable Metrics/LineLength
216
+ require_relative 'rubocop/cop/layout/empty_lines_around_exception_handling_keywords' # rubocop:disable Layout/LineLength
215
217
  require_relative 'rubocop/cop/layout/empty_lines_around_method_body'
216
218
  require_relative 'rubocop/cop/layout/empty_lines_around_module_body'
217
219
  require_relative 'rubocop/cop/layout/empty_lines'
@@ -234,6 +236,7 @@ require_relative 'rubocop/cop/layout/indentation_width'
234
236
  require_relative 'rubocop/cop/layout/initial_indentation'
235
237
  require_relative 'rubocop/cop/layout/leading_comment_space'
236
238
  require_relative 'rubocop/cop/layout/leading_empty_lines'
239
+ require_relative 'rubocop/cop/layout/line_length'
237
240
  require_relative 'rubocop/cop/layout/multiline_array_brace_layout'
238
241
  require_relative 'rubocop/cop/layout/multiline_array_line_breaks'
239
242
  require_relative 'rubocop/cop/layout/multiline_assignment_layout'
@@ -313,6 +316,7 @@ require_relative 'rubocop/cop/lint/multiple_comparison'
313
316
  require_relative 'rubocop/cop/lint/nested_method_definition'
314
317
  require_relative 'rubocop/cop/lint/nested_percent_literal'
315
318
  require_relative 'rubocop/cop/lint/next_without_accumulator'
319
+ require_relative 'rubocop/cop/lint/non_deterministic_require_order'
316
320
  require_relative 'rubocop/cop/lint/non_local_exit_from_iterator'
317
321
  require_relative 'rubocop/cop/lint/number_conversion'
318
322
  require_relative 'rubocop/cop/lint/ordered_magic_comments'
@@ -364,7 +368,6 @@ require_relative 'rubocop/cop/metrics/abc_size'
364
368
  require_relative 'rubocop/cop/metrics/block_length'
365
369
  require_relative 'rubocop/cop/metrics/block_nesting'
366
370
  require_relative 'rubocop/cop/metrics/class_length'
367
- require_relative 'rubocop/cop/metrics/line_length'
368
371
  require_relative 'rubocop/cop/metrics/method_length'
369
372
  require_relative 'rubocop/cop/metrics/module_length'
370
373
  require_relative 'rubocop/cop/metrics/parameter_lists'
@@ -7,13 +7,13 @@ module RuboCop
7
7
  class AutoGenerateConfig < Base
8
8
  self.command_name = :auto_gen_config
9
9
 
10
- PHASE_1 = 'Phase 1 of 2: run Metrics/LineLength cop'
10
+ PHASE_1 = 'Phase 1 of 2: run Layout/LineLength cop'
11
11
  PHASE_2 = 'Phase 2 of 2: run all cops'
12
12
 
13
13
  PHASE_1_OVERRIDDEN =
14
- '(skipped because the default Metrics/LineLength:Max is overridden)'
14
+ '(skipped because the default Layout/LineLength:Max is overridden)'
15
15
  PHASE_1_DISABLED =
16
- '(skipped because Metrics/LineLength is disabled)'
16
+ '(skipped because Layout/LineLength is disabled)'
17
17
 
18
18
  def run
19
19
  add_formatter
@@ -54,15 +54,15 @@ module RuboCop
54
54
  end
55
55
 
56
56
  def line_length_cop(config)
57
- config.for_cop('Metrics/LineLength')
57
+ config.for_cop('Layout/LineLength')
58
58
  end
59
59
 
60
- # Do an initial run with only Metrics/LineLength so that cops that
61
- # depend on Metrics/LineLength:Max get the correct value for that
60
+ # Do an initial run with only Layout/LineLength so that cops that
61
+ # depend on Layout/LineLength:Max get the correct value for that
62
62
  # parameter.
63
63
  def run_line_length_cop
64
64
  puts Rainbow(PHASE_1).yellow
65
- @options[:only] = ['Metrics/LineLength']
65
+ @options[:only] = ['Layout/LineLength']
66
66
  execute_runner
67
67
  @options.delete(:only)
68
68
  @config_store = ConfigStore.new
@@ -115,7 +115,7 @@ module RuboCop
115
115
  relative_file_path = path_relative_to_config(file)
116
116
 
117
117
  # Optimization to quickly decide if the given file is hidden (on the top
118
- # level) and can not be matched by any pattern.
118
+ # level) and cannot be matched by any pattern.
119
119
  is_hidden = relative_file_path.start_with?('.') &&
120
120
  !relative_file_path.start_with?('..')
121
121
  return false if is_hidden && !possibly_include_hidden?
@@ -48,7 +48,7 @@ module RuboCop
48
48
  Style/VariableName Style/VariableNumber
49
49
  Style/AccessorMethodName Style/AsciiIdentifiers],
50
50
  'Layout' => %w[Lint/BlockAlignment Lint/EndAlignment
51
- Lint/DefEndAlignment],
51
+ Lint/DefEndAlignment Metrics/LineLength],
52
52
  'Lint' => 'Style/FlipFlop'
53
53
  }.map do |new_department, old_names|
54
54
  Array(old_names).map do |old_name|
@@ -114,13 +114,13 @@ module RuboCop
114
114
  cops: 'Style/IfUnlessModifier',
115
115
  parameters: 'MaxLineLength',
116
116
  alternative: '`Style/IfUnlessModifier: MaxLineLength` has been ' \
117
- 'removed. Use `Metrics/LineLength: Max` instead'
117
+ 'removed. Use `Layout/LineLength: Max` instead'
118
118
  },
119
119
  {
120
120
  cops: 'Style/WhileUntilModifier',
121
121
  parameters: 'MaxLineLength',
122
122
  alternative: '`Style/WhileUntilModifier: MaxLineLength` has been ' \
123
- 'removed. Use `Metrics/LineLength: Max` instead'
123
+ 'removed. Use `Layout/LineLength: Max` instead'
124
124
  },
125
125
  {
126
126
  cops: 'AllCops',
@@ -41,7 +41,7 @@ module RuboCop
41
41
 
42
42
  @config_obsoletion.reject_obsolete_cops_and_parameters
43
43
 
44
- warn_about_unrecognized_cops(invalid_cop_names)
44
+ alert_about_unrecognized_cops(invalid_cop_names)
45
45
  check_target_ruby
46
46
  validate_parameter_names(valid_cop_names)
47
47
  validate_enforced_styles(valid_cop_names)
@@ -96,7 +96,8 @@ module RuboCop
96
96
  raise ValidationError, msg
97
97
  end
98
98
 
99
- def warn_about_unrecognized_cops(invalid_cop_names)
99
+ def alert_about_unrecognized_cops(invalid_cop_names)
100
+ unknown_cops = []
100
101
  invalid_cop_names.each do |name|
101
102
  # There could be a custom cop with this name. If so, don't warn
102
103
  next if Cop::Cop.registry.contains_cop_matching?([name])
@@ -106,9 +107,10 @@ module RuboCop
106
107
  # to do so than to pass the value around to various methods.
107
108
  next if name == 'inherit_mode'
108
109
 
109
- warn Rainbow("Warning: unrecognized cop #{name} found in " \
110
- "#{smart_loaded_path}").yellow
110
+ unknown_cops << "unrecognized cop #{name} found in " \
111
+ "#{smart_loaded_path}"
111
112
  end
113
+ raise ValidationError, unknown_cops.join(', ') if unknown_cops.any?
112
114
  end
113
115
 
114
116
  def validate_syntax_cop
@@ -76,7 +76,7 @@ module RuboCop
76
76
  end
77
77
 
78
78
  def max_line_length
79
- config.for_cop('Metrics/LineLength')['Max'] || 80
79
+ config.for_cop('Layout/LineLength')['Max'] || 80
80
80
  end
81
81
 
82
82
  def disable_offense_at_end_of_line(range, eol_comment)
@@ -13,8 +13,8 @@ module RuboCop
13
13
  #
14
14
  # However, it don't replace all `sources` of `http://` with `https://`.
15
15
  # For example, when specifying an internal gem server using HTTP on the
16
- # intranet, a use case where HTTPS can not be specified was considered.
17
- # Consider using HTTP only if you can not use HTTPS.
16
+ # intranet, a use case where HTTPS cannot be specified was considered.
17
+ # Consider using HTTP only if you cannot use HTTPS.
18
18
  #
19
19
  # @example
20
20
  # # bad
@@ -172,6 +172,8 @@ module RuboCop
172
172
  end
173
173
 
174
174
  def disable_uncorrectable(node)
175
+ return unless node
176
+
175
177
  @disabled_lines ||= {}
176
178
  line = node.location.line
177
179
  return if @disabled_lines.key?(line)
@@ -217,7 +219,7 @@ module RuboCop
217
219
  !relevant_file?(file)
218
220
  end
219
221
 
220
- # This method should be overriden when a cop's behavior depends
222
+ # This method should be overridden when a cop's behavior depends
221
223
  # on state that lives outside of these locations:
222
224
  #
223
225
  # (1) the file under inspection
@@ -2,7 +2,7 @@
2
2
 
3
3
  module RuboCop
4
4
  module Cop
5
- # rubocop:disable Metrics/LineLength
5
+ # rubocop:disable Layout/LineLength
6
6
  module Layout
7
7
  # This cop checks the indentation of the first argument in a method call.
8
8
  # Arguments after the first one are checked by Layout/ArgumentAlignment,
@@ -143,7 +143,7 @@ module RuboCop
143
143
  # second_param
144
144
  #
145
145
  class FirstArgumentIndentation < Cop
146
- # rubocop:enable Metrics/LineLength
146
+ # rubocop:enable Layout/LineLength
147
147
  include Alignment
148
148
  include ConfigurableEnforcedStyle
149
149
  include RangeHelp
@@ -8,9 +8,9 @@ module RuboCop
8
8
  # In Ruby 2.3 or newer, squiggly heredocs (`<<~`) should be used. If you
9
9
  # use the older rubies, you should introduce some library to your project
10
10
  # (e.g. ActiveSupport, Powerpack or Unindent).
11
- # Note: When `Metrics/LineLength`'s `AllowHeredoc` is false (not default),
11
+ # Note: When `Layout/LineLength`'s `AllowHeredoc` is false (not default),
12
12
  # this cop does not add any offenses for long here documents to
13
- # avoid `Metrics/LineLength`'s offenses.
13
+ # avoid `Layout/LineLength`'s offenses.
14
14
  #
15
15
  # @example EnforcedStyle: squiggly (default)
16
16
  # # bad
@@ -159,11 +159,11 @@ module RuboCop
159
159
  end
160
160
 
161
161
  def unlimited_heredoc_length?
162
- config.for_cop('Metrics/LineLength')['AllowHeredoc']
162
+ config.for_cop('Layout/LineLength')['AllowHeredoc']
163
163
  end
164
164
 
165
165
  def max_line_length
166
- config.for_cop('Metrics/LineLength')['Max']
166
+ config.for_cop('Layout/LineLength')['Max']
167
167
  end
168
168
 
169
169
  def correct_by_squiggly(node)
@@ -2,10 +2,9 @@
2
2
 
3
3
  require 'uri'
4
4
 
5
- # rubocop:disable Metrics/ClassLength
6
5
  module RuboCop
7
6
  module Cop
8
- module Metrics
7
+ module Layout
9
8
  # This cop checks the length of lines in the source code.
10
9
  # The maximum length is configurable.
11
10
  # The tab size is configured in the `IndentationWidth`
@@ -58,6 +57,7 @@ module RuboCop
58
57
  include ConfigurableMax
59
58
  include IgnoredPattern
60
59
  include RangeHelp
60
+ include LineLengthHelp
61
61
 
62
62
  MSG = 'Line is too long. [%<length>d/%<max>d]'
63
63
 
@@ -130,20 +130,6 @@ module RuboCop
130
130
  @heredocs ||= extract_heredocs(processed_source.ast)
131
131
  end
132
132
 
133
- def tab_indentation_width
134
- config.for_cop('Layout/Tab')['IndentationWidth']
135
- end
136
-
137
- def indentation_difference(line)
138
- return 0 unless tab_indentation_width
139
-
140
- line.match(/^\t*/)[0].size * (tab_indentation_width - 1)
141
- end
142
-
143
- def line_length(line)
144
- line.length + indentation_difference(line)
145
- end
146
-
147
133
  def highlight_start(line)
148
134
  max - indentation_difference(line)
149
135
  end
@@ -225,51 +211,10 @@ module RuboCop
225
211
  end
226
212
  end
227
213
 
228
- def allow_uri?
229
- cop_config['AllowURI']
230
- end
231
-
232
- def ignore_cop_directives?
233
- cop_config['IgnoreCopDirectives']
234
- end
235
-
236
- def allowed_uri_position?(line, uri_range)
237
- uri_range.begin < max &&
238
- (uri_range.end == line_length(line) ||
239
- uri_range.end == line_length(line) - 1)
240
- end
241
-
242
- def find_excessive_uri_range(line)
243
- last_uri_match = match_uris(line).last
244
- return nil unless last_uri_match
245
-
246
- begin_position, end_position =
247
- last_uri_match.offset(0).map do |pos|
248
- pos + indentation_difference(line)
249
- end
250
- return nil if begin_position < max && end_position < max
251
-
252
- begin_position...end_position
253
- end
254
-
255
- def match_uris(string)
256
- matches = []
257
- string.scan(uri_regexp) do
258
- matches << $LAST_MATCH_INFO if valid_uri?($LAST_MATCH_INFO[0])
214
+ def line_in_heredoc?(line_number)
215
+ heredocs.any? do |range, _delimiter|
216
+ range.cover?(line_number)
259
217
  end
260
- matches
261
- end
262
-
263
- def valid_uri?(uri_ish_string)
264
- URI.parse(uri_ish_string)
265
- true
266
- rescue URI::InvalidURIError, NoMethodError
267
- false
268
- end
269
-
270
- def uri_regexp
271
- @uri_regexp ||=
272
- URI::DEFAULT_PARSER.make_regexp(cop_config['URISchemes'])
273
218
  end
274
219
 
275
220
  def check_directive_line(line, line_index)
@@ -287,23 +232,6 @@ module RuboCop
287
232
  )
288
233
  end
289
234
 
290
- def directive_on_source_line?(line_index)
291
- source_line_number = line_index + processed_source.buffer.first_line
292
- comment =
293
- processed_source
294
- .comments
295
- .detect { |e| e.location.line == source_line_number }
296
-
297
- return false unless comment
298
-
299
- comment.text.match(CommentConfig::COMMENT_DIRECTIVE_REGEXP)
300
- end
301
-
302
- def line_length_without_directive(line)
303
- before_comment, = line.split(CommentConfig::COMMENT_DIRECTIVE_REGEXP)
304
- before_comment.rstrip.length
305
- end
306
-
307
235
  def check_uri_line(line, line_index)
308
236
  uri_range = find_excessive_uri_range(line)
309
237
  return if uri_range && allowed_uri_position?(line, uri_range)
@@ -318,4 +246,3 @@ module RuboCop
318
246
  end
319
247
  end
320
248
  end
321
- # rubocop:enable Metrics/ClassLength