rubocop 0.42.0 → 0.43.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of rubocop might be problematic. Click here for more details.

Files changed (221) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/assets/output.html.erb +21 -10
  4. data/config/default.yml +32 -2
  5. data/config/disabled.yml +8 -1
  6. data/config/enabled.yml +40 -12
  7. data/lib/rubocop.rb +14 -2
  8. data/lib/rubocop/ast_node.rb +2 -0
  9. data/lib/rubocop/cached_data.rb +13 -11
  10. data/lib/rubocop/cli.rb +5 -5
  11. data/lib/rubocop/config.rb +68 -24
  12. data/lib/rubocop/config_loader.rb +13 -11
  13. data/lib/rubocop/config_loader_resolver.rb +4 -2
  14. data/lib/rubocop/cop/cop.rb +16 -5
  15. data/lib/rubocop/cop/lint/assignment_in_condition.rb +21 -20
  16. data/lib/rubocop/cop/lint/block_alignment.rb +3 -4
  17. data/lib/rubocop/cop/lint/def_end_alignment.rb +2 -3
  18. data/lib/rubocop/cop/lint/duplicate_methods.rb +16 -6
  19. data/lib/rubocop/cop/lint/else_layout.rb +1 -1
  20. data/lib/rubocop/cop/lint/empty_interpolation.rb +1 -1
  21. data/lib/rubocop/cop/lint/end_alignment.rb +4 -6
  22. data/lib/rubocop/cop/lint/eval.rb +1 -1
  23. data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +1 -1
  24. data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +8 -8
  25. data/lib/rubocop/cop/lint/inherit_exception.rb +22 -7
  26. data/lib/rubocop/cop/lint/literal_in_condition.rb +5 -5
  27. data/lib/rubocop/cop/lint/literal_in_interpolation.rb +3 -5
  28. data/lib/rubocop/cop/lint/next_without_accumulator.rb +1 -1
  29. data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +9 -8
  30. data/lib/rubocop/cop/lint/percent_string_array.rb +17 -6
  31. data/lib/rubocop/cop/lint/percent_symbol_array.rb +4 -4
  32. data/lib/rubocop/cop/lint/rand_one.rb +3 -3
  33. data/lib/rubocop/cop/lint/require_parentheses.rb +1 -3
  34. data/lib/rubocop/cop/lint/shadowed_exception.rb +39 -44
  35. data/lib/rubocop/cop/lint/string_conversion_in_interpolation.rb +2 -2
  36. data/lib/rubocop/cop/lint/underscore_prefixed_variable_name.rb +1 -2
  37. data/lib/rubocop/cop/lint/unified_integer.rb +38 -0
  38. data/lib/rubocop/cop/lint/unneeded_disable.rb +51 -38
  39. data/lib/rubocop/cop/lint/unneeded_splat_expansion.rb +114 -0
  40. data/lib/rubocop/cop/lint/useless_assignment.rb +25 -12
  41. data/lib/rubocop/cop/lint/useless_setter_call.rb +27 -28
  42. data/lib/rubocop/cop/lint/void.rb +2 -4
  43. data/lib/rubocop/cop/mixin/access_modifier_node.rb +5 -5
  44. data/lib/rubocop/cop/mixin/array_hash_indentation.rb +19 -17
  45. data/lib/rubocop/cop/mixin/autocorrect_alignment.rb +3 -5
  46. data/lib/rubocop/cop/mixin/configurable_naming.rb +4 -5
  47. data/lib/rubocop/cop/mixin/configurable_numbering.rb +52 -0
  48. data/lib/rubocop/cop/mixin/def_node.rb +28 -0
  49. data/lib/rubocop/cop/mixin/documentation_comment.rb +41 -0
  50. data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +18 -13
  51. data/lib/rubocop/cop/mixin/if_node.rb +6 -0
  52. data/lib/rubocop/cop/mixin/match_range.rb +2 -5
  53. data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +2 -2
  54. data/lib/rubocop/cop/mixin/multiline_literal_brace_layout.rb +40 -28
  55. data/lib/rubocop/cop/mixin/negative_conditional.rb +6 -6
  56. data/lib/rubocop/cop/mixin/percent_literal.rb +1 -5
  57. data/lib/rubocop/cop/mixin/preceding_following_alignment.rb +14 -4
  58. data/lib/rubocop/cop/mixin/safe_mode.rb +23 -0
  59. data/lib/rubocop/cop/mixin/space_before_punctuation.rb +2 -4
  60. data/lib/rubocop/cop/mixin/space_inside.rb +1 -3
  61. data/lib/rubocop/cop/mixin/statement_modifier.rb +30 -20
  62. data/lib/rubocop/cop/mixin/trailing_comma.rb +19 -17
  63. data/lib/rubocop/cop/performance/case_when_splat.rb +16 -41
  64. data/lib/rubocop/cop/performance/casecmp.rb +28 -16
  65. data/lib/rubocop/cop/performance/count.rb +58 -34
  66. data/lib/rubocop/cop/performance/detect.rb +3 -7
  67. data/lib/rubocop/cop/performance/double_start_end_with.rb +17 -13
  68. data/lib/rubocop/cop/performance/fixed_size.rb +19 -14
  69. data/lib/rubocop/cop/performance/flat_map.rb +16 -9
  70. data/lib/rubocop/cop/performance/hash_each.rb +2 -3
  71. data/lib/rubocop/cop/performance/lstrip_rstrip.rb +4 -6
  72. data/lib/rubocop/cop/performance/redundant_match.rb +4 -1
  73. data/lib/rubocop/cop/performance/redundant_merge.rb +63 -32
  74. data/lib/rubocop/cop/performance/redundant_sort_by.rb +8 -7
  75. data/lib/rubocop/cop/performance/reverse_each.rb +1 -4
  76. data/lib/rubocop/cop/performance/size.rb +21 -8
  77. data/lib/rubocop/cop/performance/sort_with_block.rb +54 -0
  78. data/lib/rubocop/cop/performance/string_replacement.rb +3 -7
  79. data/lib/rubocop/cop/rails/delegate.rb +2 -3
  80. data/lib/rubocop/cop/rails/find_by.rb +4 -8
  81. data/lib/rubocop/cop/rails/not_null_column.rb +45 -0
  82. data/lib/rubocop/cop/rails/request_referer.rb +3 -3
  83. data/lib/rubocop/cop/rails/safe_navigation.rb +89 -0
  84. data/lib/rubocop/cop/rails/save_bang.rb +78 -9
  85. data/lib/rubocop/cop/rails/scope_args.rb +3 -1
  86. data/lib/rubocop/cop/rails/uniq_before_pluck.rb +2 -3
  87. data/lib/rubocop/cop/rails/validation.rb +1 -1
  88. data/lib/rubocop/cop/security/json_load.rb +36 -0
  89. data/lib/rubocop/cop/style/alias.rb +1 -1
  90. data/lib/rubocop/cop/style/align_hash.rb +25 -14
  91. data/lib/rubocop/cop/style/and_or.rb +13 -3
  92. data/lib/rubocop/cop/style/array_join.rb +3 -3
  93. data/lib/rubocop/cop/style/ascii_comments.rb +1 -2
  94. data/lib/rubocop/cop/style/ascii_identifiers.rb +1 -2
  95. data/lib/rubocop/cop/style/attr.rb +1 -3
  96. data/lib/rubocop/cop/style/block_comments.rb +2 -6
  97. data/lib/rubocop/cop/style/block_delimiters.rb +35 -21
  98. data/lib/rubocop/cop/style/braces_around_hash_parameters.rb +4 -4
  99. data/lib/rubocop/cop/style/case_indentation.rb +1 -3
  100. data/lib/rubocop/cop/style/class_methods.rb +3 -4
  101. data/lib/rubocop/cop/style/collection_methods.rb +1 -1
  102. data/lib/rubocop/cop/style/command_literal.rb +15 -8
  103. data/lib/rubocop/cop/style/comment_annotation.rb +1 -2
  104. data/lib/rubocop/cop/style/conditional_assignment.rb +68 -36
  105. data/lib/rubocop/cop/style/copyright.rb +1 -5
  106. data/lib/rubocop/cop/style/def_with_parentheses.rb +3 -5
  107. data/lib/rubocop/cop/style/documentation.rb +28 -56
  108. data/lib/rubocop/cop/style/documentation_method.rb +80 -0
  109. data/lib/rubocop/cop/style/each_for_simple_loop.rb +6 -5
  110. data/lib/rubocop/cop/style/each_with_object.rb +2 -2
  111. data/lib/rubocop/cop/style/else_alignment.rb +10 -9
  112. data/lib/rubocop/cop/style/empty_case_condition.rb +2 -4
  113. data/lib/rubocop/cop/style/empty_else.rb +1 -4
  114. data/lib/rubocop/cop/style/empty_line_between_defs.rb +1 -3
  115. data/lib/rubocop/cop/style/empty_lines_around_access_modifier.rb +2 -5
  116. data/lib/rubocop/cop/style/encoding.rb +28 -14
  117. data/lib/rubocop/cop/style/even_odd.rb +28 -17
  118. data/lib/rubocop/cop/style/extra_spacing.rb +36 -25
  119. data/lib/rubocop/cop/style/file_name.rb +19 -10
  120. data/lib/rubocop/cop/style/first_parameter_indentation.rb +2 -3
  121. data/lib/rubocop/cop/style/for.rb +12 -8
  122. data/lib/rubocop/cop/style/format_string.rb +1 -1
  123. data/lib/rubocop/cop/style/guard_clause.rb +22 -56
  124. data/lib/rubocop/cop/style/hash_syntax.rb +72 -7
  125. data/lib/rubocop/cop/style/if_unless_modifier.rb +23 -19
  126. data/lib/rubocop/cop/style/if_unless_modifier_of_if_unless.rb +3 -3
  127. data/lib/rubocop/cop/style/indentation_width.rb +30 -16
  128. data/lib/rubocop/cop/style/infinite_loop.rb +16 -13
  129. data/lib/rubocop/cop/style/initial_indentation.rb +23 -18
  130. data/lib/rubocop/cop/style/inline_comment.rb +16 -3
  131. data/lib/rubocop/cop/style/lambda.rb +22 -10
  132. data/lib/rubocop/cop/style/leading_comment_space.rb +12 -1
  133. data/lib/rubocop/cop/style/line_end_concatenation.rb +24 -6
  134. data/lib/rubocop/cop/style/method_call_parentheses.rb +18 -9
  135. data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +3 -4
  136. data/lib/rubocop/cop/style/method_def_parentheses.rb +3 -4
  137. data/lib/rubocop/cop/style/method_missing.rb +10 -2
  138. data/lib/rubocop/cop/style/module_function.rb +14 -6
  139. data/lib/rubocop/cop/style/multiline_assignment_layout.rb +2 -5
  140. data/lib/rubocop/cop/style/multiline_block_chain.rb +3 -5
  141. data/lib/rubocop/cop/style/multiline_block_layout.rb +22 -15
  142. data/lib/rubocop/cop/style/multiline_method_call_brace_layout.rb +9 -0
  143. data/lib/rubocop/cop/style/multiline_method_call_indentation.rb +41 -20
  144. data/lib/rubocop/cop/style/multiline_operation_indentation.rb +6 -6
  145. data/lib/rubocop/cop/style/multiline_ternary_operator.rb +3 -5
  146. data/lib/rubocop/cop/style/mutable_constant.rb +21 -13
  147. data/lib/rubocop/cop/style/negated_if.rb +1 -1
  148. data/lib/rubocop/cop/style/negated_while.rb +3 -3
  149. data/lib/rubocop/cop/style/nested_modifier.rb +2 -4
  150. data/lib/rubocop/cop/style/next.rb +4 -4
  151. data/lib/rubocop/cop/style/non_nil_check.rb +18 -10
  152. data/lib/rubocop/cop/style/numeric_literal_prefix.rb +8 -0
  153. data/lib/rubocop/cop/style/numeric_predicate.rb +9 -9
  154. data/lib/rubocop/cop/style/one_line_conditional.rb +11 -1
  155. data/lib/rubocop/cop/style/op_method.rb +1 -1
  156. data/lib/rubocop/cop/style/option_hash.rb +8 -8
  157. data/lib/rubocop/cop/style/optional_arguments.rb +21 -8
  158. data/lib/rubocop/cop/style/parallel_assignment.rb +51 -35
  159. data/lib/rubocop/cop/style/parentheses_around_condition.rb +2 -2
  160. data/lib/rubocop/cop/style/percent_literal_delimiters.rb +1 -1
  161. data/lib/rubocop/cop/style/raise_args.rb +2 -2
  162. data/lib/rubocop/cop/style/redundant_begin.rb +1 -1
  163. data/lib/rubocop/cop/style/redundant_parentheses.rb +26 -15
  164. data/lib/rubocop/cop/style/redundant_return.rb +5 -5
  165. data/lib/rubocop/cop/style/redundant_self.rb +20 -11
  166. data/lib/rubocop/cop/style/regexp_literal.rb +16 -10
  167. data/lib/rubocop/cop/style/rescue_ensure_alignment.rb +8 -6
  168. data/lib/rubocop/cop/style/safe_navigation.rb +125 -0
  169. data/lib/rubocop/cop/style/self_assignment.rb +2 -2
  170. data/lib/rubocop/cop/style/semicolon.rb +9 -10
  171. data/lib/rubocop/cop/style/signal_exception.rb +2 -4
  172. data/lib/rubocop/cop/style/single_line_block_params.rb +1 -1
  173. data/lib/rubocop/cop/style/single_line_methods.rb +18 -11
  174. data/lib/rubocop/cop/style/space_after_method_name.rb +2 -3
  175. data/lib/rubocop/cop/style/space_after_not.rb +4 -6
  176. data/lib/rubocop/cop/style/space_around_block_parameters.rb +1 -2
  177. data/lib/rubocop/cop/style/space_around_equals_in_parameter_default.rb +1 -3
  178. data/lib/rubocop/cop/style/space_around_operators.rb +21 -16
  179. data/lib/rubocop/cop/style/space_before_block_braces.rb +2 -12
  180. data/lib/rubocop/cop/style/space_before_first_arg.rb +1 -3
  181. data/lib/rubocop/cop/style/space_inside_array_percent_literal.rb +1 -1
  182. data/lib/rubocop/cop/style/space_inside_block_braces.rb +33 -40
  183. data/lib/rubocop/cop/style/space_inside_hash_literal_braces.rb +38 -23
  184. data/lib/rubocop/cop/style/space_inside_percent_literal_delimiters.rb +1 -1
  185. data/lib/rubocop/cop/style/space_inside_string_interpolation.rb +26 -12
  186. data/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +2 -4
  187. data/lib/rubocop/cop/style/symbol_array.rb +10 -10
  188. data/lib/rubocop/cop/style/symbol_proc.rb +28 -13
  189. data/lib/rubocop/cop/style/ternary_parentheses.rb +35 -5
  190. data/lib/rubocop/cop/style/trailing_blank_lines.rb +2 -4
  191. data/lib/rubocop/cop/style/trailing_underscore_variable.rb +29 -17
  192. data/lib/rubocop/cop/style/trivial_accessors.rb +6 -6
  193. data/lib/rubocop/cop/style/unless_else.rb +2 -6
  194. data/lib/rubocop/cop/style/unneeded_capital_w.rb +8 -4
  195. data/lib/rubocop/cop/style/unneeded_interpolation.rb +4 -5
  196. data/lib/rubocop/cop/style/unneeded_percent_q.rb +13 -7
  197. data/lib/rubocop/cop/style/variable_number.rb +79 -0
  198. data/lib/rubocop/cop/style/while_until_modifier.rb +1 -1
  199. data/lib/rubocop/cop/style/word_array.rb +25 -15
  200. data/lib/rubocop/cop/style/zero_length_predicate.rb +2 -0
  201. data/lib/rubocop/cop/util.rb +23 -4
  202. data/lib/rubocop/cop/variable_force.rb +59 -25
  203. data/lib/rubocop/cop/variable_force/locatable.rb +8 -6
  204. data/lib/rubocop/cop/variable_force/variable.rb +2 -2
  205. data/lib/rubocop/cop/variable_force/variable_table.rb +3 -3
  206. data/lib/rubocop/formatter/disabled_config_formatter.rb +16 -11
  207. data/lib/rubocop/formatter/formatter_set.rb +12 -10
  208. data/lib/rubocop/formatter/worst_offenders_formatter.rb +4 -4
  209. data/lib/rubocop/node_pattern.rb +79 -35
  210. data/lib/rubocop/options.rb +4 -4
  211. data/lib/rubocop/processed_source.rb +9 -5
  212. data/lib/rubocop/remote_config.rb +14 -10
  213. data/lib/rubocop/result_cache.rb +14 -6
  214. data/lib/rubocop/runner.rb +55 -34
  215. data/lib/rubocop/string_util.rb +9 -5
  216. data/lib/rubocop/target_finder.rb +1 -1
  217. data/lib/rubocop/token.rb +1 -1
  218. data/lib/rubocop/version.rb +1 -1
  219. metadata +15 -4
  220. data/lib/rubocop/cop/lint/useless_array_splat.rb +0 -56
  221. data/lib/rubocop/cop/performance/push_splat.rb +0 -47
@@ -44,11 +44,7 @@ module RuboCop
44
44
  transposition_count =
45
45
  count_transpositions(common_chars_a, common_chars_b)
46
46
 
47
- sum = (matched_count / shorter.size.to_f) +
48
- (matched_count / longer.size.to_f) +
49
- ((matched_count - transposition_count / 2) / matched_count.to_f)
50
-
51
- sum / 3.0
47
+ compute_non_zero_distance(matched_count.to_f, transposition_count)
52
48
  end
53
49
 
54
50
  def find_common_characters
@@ -80,6 +76,14 @@ module RuboCop
80
76
  end
81
77
  end
82
78
 
79
+ def compute_non_zero_distance(matched_count, transposition_count)
80
+ sum = (matched_count / shorter.size.to_f) +
81
+ (matched_count / longer.size.to_f) +
82
+ ((matched_count - transposition_count / 2) / matched_count)
83
+
84
+ sum / 3.0
85
+ end
86
+
83
87
  def matching_index_range(origin)
84
88
  min = origin - matching_window
85
89
  min = 0 if min < 0
@@ -56,7 +56,7 @@ module RuboCop
56
56
  def target_files_in_dir(base_dir = Dir.pwd)
57
57
  # Support Windows: Backslashes from command-line -> forward slashes
58
58
  if File::ALT_SEPARATOR
59
- base_dir.gsub!(File::ALT_SEPARATOR, File::SEPARATOR)
59
+ base_dir = base_dir.gsub(File::ALT_SEPARATOR, File::SEPARATOR)
60
60
  end
61
61
  all_files = find_files(base_dir, File::FNM_DOTMATCH)
62
62
  hidden_files = Set.new(all_files - find_files(base_dir, 0))
data/lib/rubocop/token.rb CHANGED
@@ -15,7 +15,7 @@ module RuboCop
15
15
  def initialize(pos, type, text)
16
16
  @pos = pos
17
17
  @type = type
18
- # Parser token "text" may be a Fixnum
18
+ # Parser token "text" may be an Integer
19
19
  @text = text.to_s
20
20
  end
21
21
 
@@ -4,7 +4,7 @@
4
4
  module RuboCop
5
5
  # This module holds the RuboCop version information.
6
6
  module Version
7
- STRING = '0.42.0'.freeze
7
+ STRING = '0.43.0'.freeze
8
8
 
9
9
  MSG = '%s (using Parser %s, running on %s %s %s)'.freeze
10
10
 
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.42.0
4
+ version: 0.43.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bozhidar Batsov
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2016-07-25 00:00:00.000000000 Z
13
+ date: 2016-09-19 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rainbow
@@ -194,12 +194,13 @@ files:
194
194
  - lib/rubocop/cop/lint/string_conversion_in_interpolation.rb
195
195
  - lib/rubocop/cop/lint/syntax.rb
196
196
  - lib/rubocop/cop/lint/underscore_prefixed_variable_name.rb
197
+ - lib/rubocop/cop/lint/unified_integer.rb
197
198
  - lib/rubocop/cop/lint/unneeded_disable.rb
199
+ - lib/rubocop/cop/lint/unneeded_splat_expansion.rb
198
200
  - lib/rubocop/cop/lint/unreachable_code.rb
199
201
  - lib/rubocop/cop/lint/unused_block_argument.rb
200
202
  - lib/rubocop/cop/lint/unused_method_argument.rb
201
203
  - lib/rubocop/cop/lint/useless_access_modifier.rb
202
- - lib/rubocop/cop/lint/useless_array_splat.rb
203
204
  - lib/rubocop/cop/lint/useless_assignment.rb
204
205
  - lib/rubocop/cop/lint/useless_comparison.rb
205
206
  - lib/rubocop/cop/lint/useless_else_without_rescue.rb
@@ -225,6 +226,9 @@ files:
225
226
  - lib/rubocop/cop/mixin/configurable_enforced_style.rb
226
227
  - lib/rubocop/cop/mixin/configurable_max.rb
227
228
  - lib/rubocop/cop/mixin/configurable_naming.rb
229
+ - lib/rubocop/cop/mixin/configurable_numbering.rb
230
+ - lib/rubocop/cop/mixin/def_node.rb
231
+ - lib/rubocop/cop/mixin/documentation_comment.rb
228
232
  - lib/rubocop/cop/mixin/empty_lines_around_body.rb
229
233
  - lib/rubocop/cop/mixin/end_keyword_alignment.rb
230
234
  - lib/rubocop/cop/mixin/first_element_line_break.rb
@@ -246,6 +250,7 @@ files:
246
250
  - lib/rubocop/cop/mixin/percent_literal.rb
247
251
  - lib/rubocop/cop/mixin/preceding_following_alignment.rb
248
252
  - lib/rubocop/cop/mixin/safe_assignment.rb
253
+ - lib/rubocop/cop/mixin/safe_mode.rb
249
254
  - lib/rubocop/cop/mixin/space_after_punctuation.rb
250
255
  - lib/rubocop/cop/mixin/space_before_punctuation.rb
251
256
  - lib/rubocop/cop/mixin/space_inside.rb
@@ -266,7 +271,6 @@ files:
266
271
  - lib/rubocop/cop/performance/flat_map.rb
267
272
  - lib/rubocop/cop/performance/hash_each.rb
268
273
  - lib/rubocop/cop/performance/lstrip_rstrip.rb
269
- - lib/rubocop/cop/performance/push_splat.rb
270
274
  - lib/rubocop/cop/performance/range_include.rb
271
275
  - lib/rubocop/cop/performance/redundant_block_call.rb
272
276
  - lib/rubocop/cop/performance/redundant_match.rb
@@ -275,6 +279,7 @@ files:
275
279
  - lib/rubocop/cop/performance/reverse_each.rb
276
280
  - lib/rubocop/cop/performance/sample.rb
277
281
  - lib/rubocop/cop/performance/size.rb
282
+ - lib/rubocop/cop/performance/sort_with_block.rb
278
283
  - lib/rubocop/cop/performance/start_with.rb
279
284
  - lib/rubocop/cop/performance/string_replacement.rb
280
285
  - lib/rubocop/cop/performance/times_map.rb
@@ -285,16 +290,19 @@ files:
285
290
  - lib/rubocop/cop/rails/find_by.rb
286
291
  - lib/rubocop/cop/rails/find_each.rb
287
292
  - lib/rubocop/cop/rails/has_and_belongs_to_many.rb
293
+ - lib/rubocop/cop/rails/not_null_column.rb
288
294
  - lib/rubocop/cop/rails/output.rb
289
295
  - lib/rubocop/cop/rails/output_safety.rb
290
296
  - lib/rubocop/cop/rails/pluralization_grammar.rb
291
297
  - lib/rubocop/cop/rails/read_write_attribute.rb
292
298
  - lib/rubocop/cop/rails/request_referer.rb
299
+ - lib/rubocop/cop/rails/safe_navigation.rb
293
300
  - lib/rubocop/cop/rails/save_bang.rb
294
301
  - lib/rubocop/cop/rails/scope_args.rb
295
302
  - lib/rubocop/cop/rails/time_zone.rb
296
303
  - lib/rubocop/cop/rails/uniq_before_pluck.rb
297
304
  - lib/rubocop/cop/rails/validation.rb
305
+ - lib/rubocop/cop/security/json_load.rb
298
306
  - lib/rubocop/cop/severity.rb
299
307
  - lib/rubocop/cop/style/access_modifier_indentation.rb
300
308
  - lib/rubocop/cop/style/accessor_method_name.rb
@@ -333,6 +341,7 @@ files:
333
341
  - lib/rubocop/cop/style/copyright.rb
334
342
  - lib/rubocop/cop/style/def_with_parentheses.rb
335
343
  - lib/rubocop/cop/style/documentation.rb
344
+ - lib/rubocop/cop/style/documentation_method.rb
336
345
  - lib/rubocop/cop/style/dot_position.rb
337
346
  - lib/rubocop/cop/style/double_negation.rb
338
347
  - lib/rubocop/cop/style/each_for_simple_loop.rb
@@ -437,6 +446,7 @@ files:
437
446
  - lib/rubocop/cop/style/regexp_literal.rb
438
447
  - lib/rubocop/cop/style/rescue_ensure_alignment.rb
439
448
  - lib/rubocop/cop/style/rescue_modifier.rb
449
+ - lib/rubocop/cop/style/safe_navigation.rb
440
450
  - lib/rubocop/cop/style/self_assignment.rb
441
451
  - lib/rubocop/cop/style/semicolon.rb
442
452
  - lib/rubocop/cop/style/send.rb
@@ -488,6 +498,7 @@ files:
488
498
  - lib/rubocop/cop/style/unneeded_percent_q.rb
489
499
  - lib/rubocop/cop/style/variable_interpolation.rb
490
500
  - lib/rubocop/cop/style/variable_name.rb
501
+ - lib/rubocop/cop/style/variable_number.rb
491
502
  - lib/rubocop/cop/style/when_then.rb
492
503
  - lib/rubocop/cop/style/while_until_do.rb
493
504
  - lib/rubocop/cop/style/while_until_modifier.rb
@@ -1,56 +0,0 @@
1
- # encoding: utf-8
2
- # frozen_string_literal: true
3
-
4
- module RuboCop
5
- module Cop
6
- module Lint
7
- # This cop checks for unncessary array splats.
8
- #
9
- # @example
10
- #
11
- # # bad:
12
- #
13
- # a, b = *[1, 2, 3]
14
- #
15
- # # good:
16
- #
17
- # a, b = [1, 2, 3]
18
- #
19
- # # bad:
20
- #
21
- # a = *[1, 2, 3]
22
- #
23
- # # good:
24
- #
25
- # a = [1, 2, 3]
26
- class UselessArraySplat < Cop
27
- MSG = 'Unnecessary array splat.'.freeze
28
- ARRAY_NEW_PATTERN = '(send (const nil :Array) :new ...)'.freeze
29
-
30
- %w(m lv cv iv c gv).each do |var_type|
31
- define_method("on_#{var_type}asgn") do |node|
32
- *, rhs = *node
33
-
34
- return unless rhs.is_a?(Node) && rhs.array_type?
35
-
36
- add_offense(rhs, splat_source_range(rhs)) if array_splat?(rhs)
37
- end
38
- end
39
-
40
- private
41
-
42
- def_node_matcher :array_splat?, <<-PATTERN
43
- (array (splat {(array ...) (block #{ARRAY_NEW_PATTERN} ...) #{ARRAY_NEW_PATTERN}} ...))
44
- PATTERN
45
-
46
- def splat_source_range(node)
47
- node.loc.expression.begin.resize(1)
48
- end
49
-
50
- def autocorrect(node)
51
- ->(corrector) { corrector.remove(splat_source_range(node)) }
52
- end
53
- end
54
- end
55
- end
56
- end
@@ -1,47 +0,0 @@
1
- # encoding: utf-8
2
- # frozen_string_literal: true
3
-
4
- module RuboCop
5
- module Cop
6
- module Performance
7
- # This cop is used to identify usages of
8
- #
9
- # @example
10
- # # bad
11
- # [].push(*a)
12
- #
13
- # # good
14
- # [].concat(a)
15
- class PushSplat < Cop
16
- include Parentheses
17
-
18
- MSG = 'Use `concat` instead of `push(*)`.'.freeze
19
-
20
- def_node_matcher :push_splat, <<-END
21
- (send _ :push (splat ...))
22
- END
23
-
24
- def on_send(node)
25
- push_splat(node) do
26
- add_offense(node, :expression, MSG)
27
- end
28
- end
29
-
30
- def autocorrect(node)
31
- _receiver, _method, splat = *node
32
- body, = *splat
33
- lambda do |corrector|
34
- corrector.replace(node.location.selector, 'concat')
35
-
36
- source = if parens_required?(splat)
37
- "(#{body.source})"
38
- else
39
- body.source
40
- end
41
- corrector.replace(splat.loc.expression, source)
42
- end
43
- end
44
- end
45
- end
46
- end
47
- end