rubocop 0.80.0 → 0.80.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7143484124cd6cb7ebff12de736d4ed5a17b5189d26ab6da3f8072cf9b3d6f7e
4
- data.tar.gz: acd2182467726955151e8dc249833ed1fffacae4dc988037ec5fe73e1d5bb0c7
3
+ metadata.gz: 4837832a6eb4686ba49145b2668aea7b94d85f3b23d24eb49c05ff9b456393b4
4
+ data.tar.gz: 1d72140d3461ddf8f64eb1218a78f76603b400e09cb902f1bed6e036650c0d86
5
5
  SHA512:
6
- metadata.gz: ae462c69bb5933c60f6254c4778fcddf4c778776b1d4c64247091bf36837c6899636d0d79a433c99aa5c64d1c4cccfbb9d1d8531a2b3a8418558899f6be61481
7
- data.tar.gz: 844dd51ef4fef218ab42a742dbd7717b1a47c18b4cee630ba3da77279832292417a8e4c07486b59f821bc7d28ace0cdfaa917f574b1a35fa52bca7fc17da822f
6
+ metadata.gz: 4637362ae937c8e659c62d5d4e305342f9580652551356a5178ae3861fa680ac3a7ba27a8eaf0869c73de5c66c16a3ed53d1377aba4d1ad9616dd3e69ce2f761
7
+ data.tar.gz: aada4e63308932e7847e94de67565942cbc4b12ae41663a1cb1984228988580e7322612c8c3a73337ae54baa0af9dc0b133f627c44c54a39994f86c0c588b976
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.80.0', require: false
56
+ gem 'rubocop', '~> 0.80.1', require: false
57
57
  ```
58
58
 
59
59
  ## Quickstart
@@ -2820,11 +2820,13 @@ Style/HashSyntax:
2820
2820
  Style/HashTransformKeys:
2821
2821
  Description: 'Prefer `transform_keys` over `each_with_object` and `map`.'
2822
2822
  Enabled: 'pending'
2823
+ VersionAdded: '0.80'
2823
2824
  Safe: false
2824
2825
 
2825
2826
  Style/HashTransformValues:
2826
2827
  Description: 'Prefer `transform_values` over `each_with_object` and `map`.'
2827
2828
  Enabled: 'pending'
2829
+ VersionAdded: '0.80'
2828
2830
  Safe: false
2829
2831
 
2830
2832
  Style/IdenticalConditionalBranches:
@@ -2,6 +2,9 @@
2
2
 
3
3
  require 'pathname'
4
4
 
5
+ # FIXME: Moving Rails department code to RuboCop Rails will remove
6
+ # the following rubocop:disable comment.
7
+ # rubocop:disable Metrics/ClassLength
5
8
  module RuboCop
6
9
  # This class represents the configuration of the RuboCop application
7
10
  # and all its cops. A Config is associated with a YAML configuration
@@ -13,6 +16,8 @@ module RuboCop
13
16
  include FileFinder
14
17
  extend Forwardable
15
18
 
19
+ CopConfig = Struct.new(:name, :metadata)
20
+
16
21
  DEFAULT_RAILS_VERSION = 5.0
17
22
  attr_reader :loaded_path
18
23
 
@@ -215,6 +220,18 @@ module RuboCop
215
220
  nil
216
221
  end
217
222
 
223
+ def pending_cops
224
+ keys.each_with_object([]) do |qualified_cop_name, pending_cops|
225
+ department = department_of(qualified_cop_name)
226
+ next if department && department['Enabled'] == false
227
+
228
+ cop_metadata = self[qualified_cop_name]
229
+ next unless cop_metadata['Enabled'] == 'pending'
230
+
231
+ pending_cops << CopConfig.new(qualified_cop_name, cop_metadata)
232
+ end
233
+ end
234
+
218
235
  private
219
236
 
220
237
  def target_rails_version_from_bundler_lock_file
@@ -235,17 +252,18 @@ module RuboCop
235
252
  end
236
253
 
237
254
  def enable_cop?(qualified_cop_name, cop_options)
238
- cop_department, cop_name = qualified_cop_name.split('/')
239
- department = cop_name.nil?
240
-
241
- unless department
242
- department_options = self[cop_department]
243
- if department_options && department_options['Enabled'] == false
244
- return false
245
- end
246
- end
255
+ department = department_of(qualified_cop_name)
256
+ return false if department && department['Enabled'] == false
247
257
 
248
258
  cop_options.fetch('Enabled') { !for_all_cops['DisabledByDefault'] }
249
259
  end
260
+
261
+ def department_of(qualified_cop_name)
262
+ cop_department, cop_name = qualified_cop_name.split('/')
263
+ return nil if cop_name.nil?
264
+
265
+ self[cop_department]
266
+ end
250
267
  end
251
268
  end
269
+ # rubocop:enable Metrics/ClassLength
@@ -92,7 +92,7 @@ module RuboCop
92
92
  add_excludes_from_files(config, config_file)
93
93
  end
94
94
  merge_with_default(config, config_file).tap do |merged_config|
95
- warn_on_pending_cops(merged_config)
95
+ warn_on_pending_cops(merged_config.pending_cops)
96
96
  end
97
97
  end
98
98
 
@@ -116,20 +116,20 @@ module RuboCop
116
116
  end
117
117
  end
118
118
 
119
- def warn_on_pending_cops(config)
120
- pending_cops = config.keys.select do |key|
121
- config[key]['Enabled'] == 'pending'
122
- end
123
-
124
- return if pending_cops.none?
119
+ def warn_on_pending_cops(pending_cops)
120
+ return if pending_cops.empty?
125
121
 
126
122
  warn Rainbow('The following cops were added to RuboCop, but are not ' \
127
123
  'configured. Please set Enabled to either `true` or ' \
128
124
  '`false` in your `.rubocop.yml` file:').yellow
129
125
 
130
126
  pending_cops.each do |cop|
131
- warn Rainbow(" - #{cop}").yellow
127
+ warn Rainbow(
128
+ " - #{cop.name} (#{cop.metadata['VersionAdded']})"
129
+ ).yellow
132
130
  end
131
+
132
+ warn Rainbow('For more information: https://docs.rubocop.org/en/latest/versioning/').yellow
133
133
  end
134
134
 
135
135
  # Merges the given configuration with the default one. If
@@ -131,7 +131,7 @@ module RuboCop
131
131
  end
132
132
 
133
133
  def breakable_block_range(block_node)
134
- if block_node.arguments?
134
+ if block_node.arguments? && !block_node.lambda?
135
135
  block_node.arguments.loc.end
136
136
  else
137
137
  block_node.loc.begin
@@ -51,7 +51,6 @@ module RuboCop
51
51
  end
52
52
 
53
53
  def handle_possible_offense(node, match, match_desc)
54
- puts node.class
55
54
  captures = extract_captures(match)
56
55
 
57
56
  # If key didn't actually change either, this is most likely a false
@@ -109,10 +109,7 @@ module RuboCop
109
109
  corrector.remove(not_to_receiver(node, method_call))
110
110
  corrector.replace(method_call.loc.selector,
111
111
  inverse_methods[method].to_s)
112
-
113
- if EQUALITY_METHODS.include?(method)
114
- corrector.remove(end_parentheses(node, method_call))
115
- end
112
+ remove_end_parenthesis(corrector, node, method, method_call)
116
113
  end
117
114
  end
118
115
 
@@ -187,6 +184,13 @@ module RuboCop
187
184
  def dot_range(loc)
188
185
  range_between(loc.dot.begin_pos, loc.expression.end_pos)
189
186
  end
187
+
188
+ def remove_end_parenthesis(corrector, node, method, method_call)
189
+ return unless EQUALITY_METHODS.include?(method) ||
190
+ method_call.parent.begin_type?
191
+
192
+ corrector.remove(end_parentheses(node, method_call))
193
+ end
190
194
  end
191
195
  end
192
196
  end
@@ -35,8 +35,8 @@ module RuboCop
35
35
  last_arg = nested.last_argument.source_range
36
36
 
37
37
  leading_space =
38
- range_with_surrounding_space(range: first_arg,
39
- side: :left).begin.resize(1)
38
+ range_with_surrounding_space(range: first_arg.begin,
39
+ side: :left)
40
40
 
41
41
  lambda do |corrector|
42
42
  corrector.replace(leading_space, '(')
@@ -46,7 +46,7 @@ module RuboCop
46
46
  def autocorrect(node)
47
47
  lambda do |corrector|
48
48
  if node.ternary?
49
- corrector.replace(range_of_offense(node), '||')
49
+ correct_ternary(corrector, node)
50
50
  elsif node.modifier_form? || !node.else_branch
51
51
  corrector.replace(node.source_range, node.if_branch.source)
52
52
  else
@@ -90,9 +90,13 @@ module RuboCop
90
90
  end
91
91
 
92
92
  def else_source(else_branch)
93
- wrap_else =
94
- else_branch.basic_conditional? && else_branch.modifier_form?
95
- wrap_else ? "(#{else_branch.source})" : else_branch.source
93
+ if else_branch.basic_conditional? &&
94
+ else_branch.modifier_form? ||
95
+ else_branch.range_type?
96
+ "(#{else_branch.source})"
97
+ else
98
+ else_branch.source
99
+ end
96
100
  end
97
101
 
98
102
  def make_ternary_form(node)
@@ -106,6 +110,15 @@ module RuboCop
106
110
  ternary_form
107
111
  end
108
112
  end
113
+
114
+ def correct_ternary(corrector, node)
115
+ corrector.replace(range_of_offense(node), '||')
116
+
117
+ return unless node.else_branch.range_type?
118
+
119
+ corrector.insert_before(node.else_branch.loc.expression, '(')
120
+ corrector.insert_after(node.else_branch.loc.expression, ')')
121
+ end
109
122
  end
110
123
  end
111
124
  end
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  # This module holds the RuboCop version information.
5
5
  module Version
6
- STRING = '0.80.0'
6
+ STRING = '0.80.1'
7
7
 
8
8
  MSG = '%<version>s (using Parser %<parser_version>s, running on ' \
9
9
  '%<ruby_engine>s %<ruby_version>s %<ruby_platform>s)'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubocop
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.80.0
4
+ version: 0.80.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bozhidar Batsov
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2020-02-18 00:00:00.000000000 Z
13
+ date: 2020-02-29 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: jaro_winkler
@@ -797,7 +797,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
797
797
  - !ruby/object:Gem::Version
798
798
  version: '0'
799
799
  requirements: []
800
- rubygems_version: 3.0.3
800
+ rubygems_version: 3.1.2
801
801
  signing_key:
802
802
  specification_version: 4
803
803
  summary: Automatic Ruby code style checking tool.