rubocop 0.87.1 → 0.91.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (515) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -2
  3. data/bin/rubocop-profile +32 -0
  4. data/config/default.yml +267 -33
  5. data/lib/rubocop.rb +45 -5
  6. data/lib/rubocop/cached_data.rb +1 -0
  7. data/lib/rubocop/cli.rb +2 -2
  8. data/lib/rubocop/cli/command.rb +1 -0
  9. data/lib/rubocop/cli/command/auto_genenerate_config.rb +4 -3
  10. data/lib/rubocop/cli/command/base.rb +2 -0
  11. data/lib/rubocop/cli/command/execute_runner.rb +10 -1
  12. data/lib/rubocop/cli/command/init_dotfile.rb +1 -0
  13. data/lib/rubocop/cli/command/show_cops.rb +3 -2
  14. data/lib/rubocop/cli/command/version.rb +3 -2
  15. data/lib/rubocop/cli/environment.rb +1 -0
  16. data/lib/rubocop/comment_config.rb +10 -7
  17. data/lib/rubocop/config.rb +20 -3
  18. data/lib/rubocop/config_loader.rb +42 -18
  19. data/lib/rubocop/config_loader_resolver.rb +4 -3
  20. data/lib/rubocop/config_obsoletion.rb +7 -1
  21. data/lib/rubocop/config_store.rb +7 -3
  22. data/lib/rubocop/config_validator.rb +5 -4
  23. data/lib/rubocop/cop/autocorrect_logic.rb +1 -1
  24. data/lib/rubocop/cop/badge.rb +1 -1
  25. data/lib/rubocop/cop/base.rb +37 -6
  26. data/lib/rubocop/cop/bundler/duplicated_gem.rb +5 -1
  27. data/lib/rubocop/cop/bundler/gem_comment.rb +8 -3
  28. data/lib/rubocop/cop/bundler/insecure_protocol_source.rb +2 -0
  29. data/lib/rubocop/cop/commissioner.rb +47 -8
  30. data/lib/rubocop/cop/cop.rb +1 -1
  31. data/lib/rubocop/cop/correctors/alignment_corrector.rb +4 -4
  32. data/lib/rubocop/cop/correctors/condition_corrector.rb +3 -5
  33. data/lib/rubocop/cop/correctors/empty_line_corrector.rb +9 -10
  34. data/lib/rubocop/cop/correctors/line_break_corrector.rb +6 -6
  35. data/lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb +34 -3
  36. data/lib/rubocop/cop/correctors/parentheses_corrector.rb +5 -8
  37. data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +6 -11
  38. data/lib/rubocop/cop/correctors/punctuation_corrector.rb +8 -10
  39. data/lib/rubocop/cop/correctors/unused_arg_corrector.rb +15 -18
  40. data/lib/rubocop/cop/documentation.rb +22 -0
  41. data/lib/rubocop/cop/force.rb +1 -0
  42. data/lib/rubocop/cop/gemspec/required_ruby_version.rb +38 -12
  43. data/lib/rubocop/cop/generator.rb +2 -1
  44. data/lib/rubocop/cop/generator/configuration_injector.rb +2 -2
  45. data/lib/rubocop/cop/internal_affairs/method_name_equal.rb +5 -12
  46. data/lib/rubocop/cop/internal_affairs/node_destructuring.rb +1 -1
  47. data/lib/rubocop/cop/internal_affairs/node_type_predicate.rb +1 -0
  48. data/lib/rubocop/cop/internal_affairs/offense_location_keyword.rb +9 -8
  49. data/lib/rubocop/cop/internal_affairs/redundant_location_argument.rb +11 -7
  50. data/lib/rubocop/cop/internal_affairs/redundant_message_argument.rb +8 -8
  51. data/lib/rubocop/cop/internal_affairs/useless_message_assertion.rb +2 -2
  52. data/lib/rubocop/cop/layout/begin_end_alignment.rb +77 -0
  53. data/lib/rubocop/cop/layout/block_alignment.rb +24 -20
  54. data/lib/rubocop/cop/layout/class_structure.rb +13 -16
  55. data/lib/rubocop/cop/layout/closing_heredoc_indentation.rb +4 -6
  56. data/lib/rubocop/cop/layout/comment_indentation.rb +1 -1
  57. data/lib/rubocop/cop/layout/condition_position.rb +13 -15
  58. data/lib/rubocop/cop/layout/def_end_alignment.rb +8 -5
  59. data/lib/rubocop/cop/layout/dot_position.rb +21 -17
  60. data/lib/rubocop/cop/layout/empty_comment.rb +30 -23
  61. data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +19 -16
  62. data/lib/rubocop/cop/layout/empty_line_after_magic_comment.rb +13 -13
  63. data/lib/rubocop/cop/layout/empty_line_after_multiline_condition.rb +145 -0
  64. data/lib/rubocop/cop/layout/empty_line_between_defs.rb +21 -23
  65. data/lib/rubocop/cop/layout/empty_lines.rb +6 -9
  66. data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +5 -6
  67. data/lib/rubocop/cop/layout/empty_lines_around_arguments.rb +7 -8
  68. data/lib/rubocop/cop/layout/empty_lines_around_attribute_accessor.rb +3 -6
  69. data/lib/rubocop/cop/layout/empty_lines_around_begin_body.rb +2 -5
  70. data/lib/rubocop/cop/layout/empty_lines_around_block_body.rb +2 -5
  71. data/lib/rubocop/cop/layout/empty_lines_around_class_body.rb +2 -5
  72. data/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +2 -5
  73. data/lib/rubocop/cop/layout/empty_lines_around_method_body.rb +2 -5
  74. data/lib/rubocop/cop/layout/empty_lines_around_module_body.rb +2 -5
  75. data/lib/rubocop/cop/layout/end_alignment.rb +14 -19
  76. data/lib/rubocop/cop/layout/extra_spacing.rb +22 -36
  77. data/lib/rubocop/cop/layout/first_array_element_line_break.rb +2 -5
  78. data/lib/rubocop/cop/layout/first_hash_element_line_break.rb +2 -5
  79. data/lib/rubocop/cop/layout/first_method_argument_line_break.rb +5 -9
  80. data/lib/rubocop/cop/layout/first_method_parameter_line_break.rb +2 -5
  81. data/lib/rubocop/cop/layout/hash_alignment.rb +17 -20
  82. data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +15 -14
  83. data/lib/rubocop/cop/layout/heredoc_indentation.rb +16 -13
  84. data/lib/rubocop/cop/layout/indentation_style.rb +0 -2
  85. data/lib/rubocop/cop/layout/initial_indentation.rb +6 -7
  86. data/lib/rubocop/cop/layout/leading_comment_space.rb +12 -10
  87. data/lib/rubocop/cop/layout/leading_empty_lines.rb +6 -11
  88. data/lib/rubocop/cop/layout/multiline_array_brace_layout.rb +2 -5
  89. data/lib/rubocop/cop/layout/multiline_array_line_breaks.rb +2 -5
  90. data/lib/rubocop/cop/layout/multiline_assignment_layout.rb +10 -14
  91. data/lib/rubocop/cop/layout/multiline_block_layout.rb +37 -24
  92. data/lib/rubocop/cop/layout/multiline_hash_brace_layout.rb +2 -5
  93. data/lib/rubocop/cop/layout/multiline_hash_key_line_breaks.rb +2 -5
  94. data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +5 -9
  95. data/lib/rubocop/cop/layout/multiline_method_call_brace_layout.rb +2 -5
  96. data/lib/rubocop/cop/layout/multiline_method_definition_brace_layout.rb +2 -5
  97. data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +32 -24
  98. data/lib/rubocop/cop/layout/space_after_colon.rb +11 -7
  99. data/lib/rubocop/cop/layout/space_after_comma.rb +2 -5
  100. data/lib/rubocop/cop/layout/space_after_method_name.rb +5 -6
  101. data/lib/rubocop/cop/layout/space_after_not.rb +9 -11
  102. data/lib/rubocop/cop/layout/space_after_semicolon.rb +2 -5
  103. data/lib/rubocop/cop/layout/space_around_block_parameters.rb +3 -2
  104. data/lib/rubocop/cop/layout/space_around_equals_in_parameter_default.rb +20 -15
  105. data/lib/rubocop/cop/layout/space_around_keyword.rb +17 -18
  106. data/lib/rubocop/cop/layout/space_around_method_call_operator.rb +33 -66
  107. data/lib/rubocop/cop/layout/space_around_operators.rb +17 -16
  108. data/lib/rubocop/cop/layout/space_before_block_braces.rb +23 -22
  109. data/lib/rubocop/cop/layout/space_before_comma.rb +3 -5
  110. data/lib/rubocop/cop/layout/space_before_comment.rb +10 -7
  111. data/lib/rubocop/cop/layout/space_before_first_arg.rb +7 -7
  112. data/lib/rubocop/cop/layout/space_before_semicolon.rb +2 -5
  113. data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +9 -17
  114. data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +16 -18
  115. data/lib/rubocop/cop/layout/space_inside_array_percent_literal.rb +3 -8
  116. data/lib/rubocop/cop/layout/space_inside_block_braces.rb +17 -16
  117. data/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +15 -19
  118. data/lib/rubocop/cop/layout/space_inside_parens.rb +9 -14
  119. data/lib/rubocop/cop/layout/space_inside_percent_literal_delimiters.rb +5 -10
  120. data/lib/rubocop/cop/layout/space_inside_range_literal.rb +8 -17
  121. data/lib/rubocop/cop/layout/space_inside_reference_brackets.rb +14 -22
  122. data/lib/rubocop/cop/layout/space_inside_string_interpolation.rb +10 -11
  123. data/lib/rubocop/cop/layout/trailing_empty_lines.rb +10 -15
  124. data/lib/rubocop/cop/layout/trailing_whitespace.rb +11 -11
  125. data/lib/rubocop/cop/lint/ambiguous_block_association.rb +7 -4
  126. data/lib/rubocop/cop/lint/ambiguous_operator.rb +17 -10
  127. data/lib/rubocop/cop/lint/ambiguous_regexp_literal.rb +11 -13
  128. data/lib/rubocop/cop/lint/assignment_in_condition.rb +2 -2
  129. data/lib/rubocop/cop/lint/big_decimal_new.rb +9 -10
  130. data/lib/rubocop/cop/lint/binary_operator_with_identical_operands.rb +50 -0
  131. data/lib/rubocop/cop/lint/boolean_symbol.rb +16 -11
  132. data/lib/rubocop/cop/lint/circular_argument_reference.rb +1 -1
  133. data/lib/rubocop/cop/lint/constant_definition_in_block.rb +54 -0
  134. data/lib/rubocop/cop/lint/constant_resolution.rb +2 -2
  135. data/lib/rubocop/cop/lint/debugger.rb +6 -1
  136. data/lib/rubocop/cop/lint/deprecated_class_methods.rb +7 -10
  137. data/lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb +17 -13
  138. data/lib/rubocop/cop/lint/disjunctive_assignment_in_constructor.rb +8 -2
  139. data/lib/rubocop/cop/lint/duplicate_case_condition.rb +1 -1
  140. data/lib/rubocop/cop/lint/duplicate_elsif_condition.rb +39 -0
  141. data/lib/rubocop/cop/lint/duplicate_hash_key.rb +1 -1
  142. data/lib/rubocop/cop/lint/duplicate_methods.rb +7 -6
  143. data/lib/rubocop/cop/lint/duplicate_require.rb +46 -0
  144. data/lib/rubocop/cop/lint/duplicate_rescue_exception.rb +49 -0
  145. data/lib/rubocop/cop/lint/each_with_object_argument.rb +2 -1
  146. data/lib/rubocop/cop/lint/else_layout.rb +1 -1
  147. data/lib/rubocop/cop/lint/empty_conditional_body.rb +67 -0
  148. data/lib/rubocop/cop/lint/empty_ensure.rb +5 -5
  149. data/lib/rubocop/cop/lint/empty_expression.rb +2 -2
  150. data/lib/rubocop/cop/lint/empty_file.rb +50 -0
  151. data/lib/rubocop/cop/lint/empty_interpolation.rb +5 -6
  152. data/lib/rubocop/cop/lint/empty_when.rb +2 -2
  153. data/lib/rubocop/cop/lint/ensure_return.rb +27 -29
  154. data/lib/rubocop/cop/lint/erb_new_arguments.rb +13 -10
  155. data/lib/rubocop/cop/lint/flip_flop.rb +1 -1
  156. data/lib/rubocop/cop/lint/float_comparison.rb +93 -0
  157. data/lib/rubocop/cop/lint/float_out_of_range.rb +1 -1
  158. data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +4 -3
  159. data/lib/rubocop/cop/lint/heredoc_method_call_position.rb +13 -14
  160. data/lib/rubocop/cop/lint/identity_comparison.rb +49 -0
  161. data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +5 -4
  162. data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +8 -8
  163. data/lib/rubocop/cop/lint/inherit_exception.rb +12 -7
  164. data/lib/rubocop/cop/lint/interpolation_check.rb +18 -15
  165. data/lib/rubocop/cop/lint/literal_as_condition.rb +14 -2
  166. data/lib/rubocop/cop/lint/literal_in_interpolation.rb +7 -7
  167. data/lib/rubocop/cop/lint/loop.rb +23 -2
  168. data/lib/rubocop/cop/lint/missing_cop_enable_directive.rb +6 -5
  169. data/lib/rubocop/cop/lint/missing_super.rb +99 -0
  170. data/lib/rubocop/cop/lint/mixed_regexp_capture_types.rb +3 -36
  171. data/lib/rubocop/cop/lint/multiple_comparison.rb +9 -10
  172. data/lib/rubocop/cop/lint/nested_method_definition.rb +14 -20
  173. data/lib/rubocop/cop/lint/nested_percent_literal.rb +1 -1
  174. data/lib/rubocop/cop/lint/next_without_accumulator.rb +1 -1
  175. data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +82 -11
  176. data/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +2 -2
  177. data/lib/rubocop/cop/lint/number_conversion.rb +7 -9
  178. data/lib/rubocop/cop/lint/ordered_magic_comments.rb +11 -13
  179. data/lib/rubocop/cop/lint/out_of_range_regexp_ref.rb +79 -0
  180. data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +4 -10
  181. data/lib/rubocop/cop/lint/percent_string_array.rb +3 -6
  182. data/lib/rubocop/cop/lint/percent_symbol_array.rb +13 -12
  183. data/lib/rubocop/cop/lint/raise_exception.rb +13 -10
  184. data/lib/rubocop/cop/lint/rand_one.rb +2 -1
  185. data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +16 -19
  186. data/lib/rubocop/cop/lint/redundant_cop_enable_directive.rb +7 -11
  187. data/lib/rubocop/cop/lint/redundant_require_statement.rb +5 -7
  188. data/lib/rubocop/cop/lint/redundant_splat_expansion.rb +13 -9
  189. data/lib/rubocop/cop/lint/redundant_string_coercion.rb +6 -13
  190. data/lib/rubocop/cop/lint/redundant_with_index.rb +11 -14
  191. data/lib/rubocop/cop/lint/redundant_with_object.rb +11 -14
  192. data/lib/rubocop/cop/lint/regexp_as_condition.rb +4 -6
  193. data/lib/rubocop/cop/lint/require_parentheses.rb +2 -2
  194. data/lib/rubocop/cop/lint/rescue_exception.rb +1 -1
  195. data/lib/rubocop/cop/lint/rescue_type.rb +8 -8
  196. data/lib/rubocop/cop/lint/return_in_void_context.rb +2 -4
  197. data/lib/rubocop/cop/lint/safe_navigation_chain.rb +3 -6
  198. data/lib/rubocop/cop/lint/safe_navigation_consistency.rb +14 -10
  199. data/lib/rubocop/cop/lint/safe_navigation_with_empty.rb +7 -7
  200. data/lib/rubocop/cop/lint/script_permission.rb +10 -7
  201. data/lib/rubocop/cop/lint/self_assignment.rb +78 -0
  202. data/lib/rubocop/cop/lint/send_with_mixin_argument.rb +8 -12
  203. data/lib/rubocop/cop/lint/shadowed_argument.rb +3 -3
  204. data/lib/rubocop/cop/lint/shadowed_exception.rb +2 -2
  205. data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +7 -7
  206. data/lib/rubocop/cop/lint/struct_new_override.rb +2 -1
  207. data/lib/rubocop/cop/lint/suppressed_exception.rb +4 -7
  208. data/lib/rubocop/cop/lint/to_json.rb +20 -11
  209. data/lib/rubocop/cop/lint/top_level_return_with_argument.rb +34 -0
  210. data/lib/rubocop/cop/lint/trailing_comma_in_attribute_declaration.rb +57 -0
  211. data/lib/rubocop/cop/lint/underscore_prefixed_variable_name.rb +4 -4
  212. data/lib/rubocop/cop/lint/unified_integer.rb +4 -6
  213. data/lib/rubocop/cop/lint/unreachable_code.rb +1 -1
  214. data/lib/rubocop/cop/lint/unreachable_loop.rb +175 -0
  215. data/lib/rubocop/cop/lint/unused_block_argument.rb +8 -3
  216. data/lib/rubocop/cop/lint/unused_method_argument.rb +8 -3
  217. data/lib/rubocop/cop/lint/uri_escape_unescape.rb +4 -2
  218. data/lib/rubocop/cop/lint/uri_regexp.rb +12 -47
  219. data/lib/rubocop/cop/lint/useless_access_modifier.rb +25 -15
  220. data/lib/rubocop/cop/lint/useless_assignment.rb +4 -4
  221. data/lib/rubocop/cop/lint/useless_else_without_rescue.rb +6 -15
  222. data/lib/rubocop/cop/lint/useless_method_definition.rb +70 -0
  223. data/lib/rubocop/cop/lint/useless_setter_call.rb +4 -6
  224. data/lib/rubocop/cop/lint/useless_times.rb +97 -0
  225. data/lib/rubocop/cop/lint/void.rb +3 -7
  226. data/lib/rubocop/cop/metrics/abc_size.rb +1 -1
  227. data/lib/rubocop/cop/metrics/block_length.rb +2 -2
  228. data/lib/rubocop/cop/metrics/block_nesting.rb +2 -2
  229. data/lib/rubocop/cop/metrics/class_length.rb +2 -2
  230. data/lib/rubocop/cop/metrics/cyclomatic_complexity.rb +2 -1
  231. data/lib/rubocop/cop/metrics/method_length.rb +2 -2
  232. data/lib/rubocop/cop/metrics/module_length.rb +2 -2
  233. data/lib/rubocop/cop/metrics/parameter_lists.rb +2 -6
  234. data/lib/rubocop/cop/metrics/perceived_complexity.rb +7 -8
  235. data/lib/rubocop/cop/metrics/utils/abc_size_calculator.rb +50 -5
  236. data/lib/rubocop/cop/metrics/utils/code_length_calculator.rb +53 -24
  237. data/lib/rubocop/cop/metrics/utils/repeated_csend_discount.rb +37 -0
  238. data/lib/rubocop/cop/migration/department_name.rb +14 -16
  239. data/lib/rubocop/cop/mixin/alignment.rb +5 -1
  240. data/lib/rubocop/cop/mixin/allowed_methods.rb +2 -0
  241. data/lib/rubocop/cop/mixin/annotation_comment.rb +5 -0
  242. data/lib/rubocop/cop/mixin/array_min_size.rb +1 -1
  243. data/lib/rubocop/cop/mixin/check_line_breakable.rb +17 -8
  244. data/lib/rubocop/cop/mixin/code_length.rb +22 -5
  245. data/lib/rubocop/cop/mixin/comments_help.rb +48 -0
  246. data/lib/rubocop/cop/mixin/configurable_naming.rb +2 -2
  247. data/lib/rubocop/cop/mixin/empty_lines_around_body.rb +8 -7
  248. data/lib/rubocop/cop/mixin/empty_parameter.rb +3 -1
  249. data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +12 -1
  250. data/lib/rubocop/cop/mixin/first_element_line_break.rb +3 -1
  251. data/lib/rubocop/cop/mixin/hash_transform_method.rb +31 -12
  252. data/lib/rubocop/cop/mixin/line_length_help.rb +1 -3
  253. data/lib/rubocop/cop/mixin/method_complexity.rb +10 -2
  254. data/lib/rubocop/cop/mixin/multiline_element_line_breaks.rb +3 -1
  255. data/lib/rubocop/cop/mixin/multiline_literal_brace_layout.rb +13 -12
  256. data/lib/rubocop/cop/mixin/negative_conditional.rb +2 -2
  257. data/lib/rubocop/cop/mixin/percent_array.rb +16 -9
  258. data/lib/rubocop/cop/mixin/range_help.rb +18 -4
  259. data/lib/rubocop/cop/mixin/regexp_literal_help.rb +1 -1
  260. data/lib/rubocop/cop/mixin/rescue_node.rb +10 -1
  261. data/lib/rubocop/cop/mixin/space_after_punctuation.rb +4 -3
  262. data/lib/rubocop/cop/mixin/space_before_punctuation.rb +4 -3
  263. data/lib/rubocop/cop/mixin/statement_modifier.rb +39 -10
  264. data/lib/rubocop/cop/mixin/surrounding_space.rb +8 -29
  265. data/lib/rubocop/cop/mixin/trailing_comma.rb +9 -11
  266. data/lib/rubocop/cop/mixin/uncommunicative_name.rb +6 -13
  267. data/lib/rubocop/cop/mixin/unused_argument.rb +4 -6
  268. data/lib/rubocop/cop/naming/accessor_method_name.rb +4 -2
  269. data/lib/rubocop/cop/naming/ascii_identifiers.rb +3 -3
  270. data/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +2 -2
  271. data/lib/rubocop/cop/naming/block_parameter_name.rb +1 -1
  272. data/lib/rubocop/cop/naming/class_and_module_camel_case.rb +2 -2
  273. data/lib/rubocop/cop/naming/constant_name.rb +2 -2
  274. data/lib/rubocop/cop/naming/file_name.rb +4 -4
  275. data/lib/rubocop/cop/naming/heredoc_delimiter_case.rb +2 -2
  276. data/lib/rubocop/cop/naming/heredoc_delimiter_naming.rb +2 -2
  277. data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +2 -2
  278. data/lib/rubocop/cop/naming/method_parameter_name.rb +1 -1
  279. data/lib/rubocop/cop/naming/predicate_name.rb +3 -5
  280. data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +12 -11
  281. data/lib/rubocop/cop/offense.rb +1 -0
  282. data/lib/rubocop/cop/registry.rb +3 -3
  283. data/lib/rubocop/cop/security/eval.rb +3 -2
  284. data/lib/rubocop/cop/security/json_load.rb +7 -8
  285. data/lib/rubocop/cop/security/marshal_load.rb +3 -4
  286. data/lib/rubocop/cop/security/open.rb +3 -2
  287. data/lib/rubocop/cop/security/yaml_load.rb +7 -6
  288. data/lib/rubocop/cop/severity.rb +0 -8
  289. data/lib/rubocop/cop/style/access_modifier_declarations.rb +7 -8
  290. data/lib/rubocop/cop/style/accessor_grouping.rb +29 -20
  291. data/lib/rubocop/cop/style/alias.rb +43 -36
  292. data/lib/rubocop/cop/style/and_or.rb +9 -11
  293. data/lib/rubocop/cop/style/array_coercion.rb +63 -0
  294. data/lib/rubocop/cop/style/array_join.rb +7 -8
  295. data/lib/rubocop/cop/style/ascii_comments.rb +4 -4
  296. data/lib/rubocop/cop/style/attr.rb +12 -9
  297. data/lib/rubocop/cop/style/auto_resource_cleanup.rb +7 -7
  298. data/lib/rubocop/cop/style/bare_percent_literals.rb +10 -12
  299. data/lib/rubocop/cop/style/begin_block.rb +2 -2
  300. data/lib/rubocop/cop/style/bisected_attr_accessor.rb +14 -18
  301. data/lib/rubocop/cop/style/block_comments.rb +14 -18
  302. data/lib/rubocop/cop/style/block_delimiters.rb +23 -23
  303. data/lib/rubocop/cop/style/case_equality.rb +32 -5
  304. data/lib/rubocop/cop/style/case_like_if.rb +236 -0
  305. data/lib/rubocop/cop/style/class_and_module_children.rb +16 -11
  306. data/lib/rubocop/cop/style/class_check.rb +6 -11
  307. data/lib/rubocop/cop/style/class_methods.rb +7 -11
  308. data/lib/rubocop/cop/style/class_methods_definitions.rb +157 -0
  309. data/lib/rubocop/cop/style/class_vars.rb +7 -12
  310. data/lib/rubocop/cop/style/collection_methods.rb +11 -17
  311. data/lib/rubocop/cop/style/colon_method_call.rb +8 -9
  312. data/lib/rubocop/cop/style/colon_method_definition.rb +6 -6
  313. data/lib/rubocop/cop/style/combinable_loops.rb +89 -0
  314. data/lib/rubocop/cop/style/command_literal.rb +23 -24
  315. data/lib/rubocop/cop/style/comment_annotation.rb +15 -15
  316. data/lib/rubocop/cop/style/commented_keyword.rb +6 -3
  317. data/lib/rubocop/cop/style/conditional_assignment.rb +62 -64
  318. data/lib/rubocop/cop/style/constant_visibility.rb +3 -2
  319. data/lib/rubocop/cop/style/copyright.rb +12 -12
  320. data/lib/rubocop/cop/style/date_time.rb +1 -1
  321. data/lib/rubocop/cop/style/def_with_parentheses.rb +8 -10
  322. data/lib/rubocop/cop/style/dir.rb +8 -10
  323. data/lib/rubocop/cop/style/disable_cops_within_source_code_directive.rb +7 -9
  324. data/lib/rubocop/cop/style/documentation.rb +6 -8
  325. data/lib/rubocop/cop/style/documentation_method.rb +1 -1
  326. data/lib/rubocop/cop/style/double_cop_disable_directive.rb +12 -15
  327. data/lib/rubocop/cop/style/double_negation.rb +3 -2
  328. data/lib/rubocop/cop/style/each_for_simple_loop.rb +5 -8
  329. data/lib/rubocop/cop/style/each_with_object.rb +16 -19
  330. data/lib/rubocop/cop/style/empty_block_parameter.rb +9 -10
  331. data/lib/rubocop/cop/style/empty_case_condition.rb +19 -20
  332. data/lib/rubocop/cop/style/empty_else.rb +17 -19
  333. data/lib/rubocop/cop/style/empty_lambda_parameter.rb +9 -10
  334. data/lib/rubocop/cop/style/empty_literal.rb +18 -17
  335. data/lib/rubocop/cop/style/empty_method.rb +10 -13
  336. data/lib/rubocop/cop/style/encoding.rb +5 -9
  337. data/lib/rubocop/cop/style/end_block.rb +4 -6
  338. data/lib/rubocop/cop/style/eval_with_location.rb +7 -7
  339. data/lib/rubocop/cop/style/even_odd.rb +8 -11
  340. data/lib/rubocop/cop/style/expand_path_arguments.rb +22 -21
  341. data/lib/rubocop/cop/style/explicit_block_argument.rb +102 -0
  342. data/lib/rubocop/cop/style/exponential_notation.rb +7 -9
  343. data/lib/rubocop/cop/style/float_division.rb +10 -11
  344. data/lib/rubocop/cop/style/for.rb +11 -15
  345. data/lib/rubocop/cop/style/format_string.rb +18 -19
  346. data/lib/rubocop/cop/style/format_string_token.rb +10 -12
  347. data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +19 -41
  348. data/lib/rubocop/cop/style/global_std_stream.rb +65 -0
  349. data/lib/rubocop/cop/style/global_vars.rb +2 -2
  350. data/lib/rubocop/cop/style/guard_clause.rb +6 -6
  351. data/lib/rubocop/cop/style/hash_as_last_array_item.rb +79 -0
  352. data/lib/rubocop/cop/style/hash_each_methods.rb +5 -8
  353. data/lib/rubocop/cop/style/hash_like_case.rb +76 -0
  354. data/lib/rubocop/cop/style/hash_syntax.rb +10 -8
  355. data/lib/rubocop/cop/style/hash_transform_keys.rb +19 -11
  356. data/lib/rubocop/cop/style/hash_transform_values.rb +18 -10
  357. data/lib/rubocop/cop/style/identical_conditional_branches.rb +2 -2
  358. data/lib/rubocop/cop/style/if_inside_else.rb +3 -3
  359. data/lib/rubocop/cop/style/if_unless_modifier.rb +19 -41
  360. data/lib/rubocop/cop/style/if_unless_modifier_of_if_unless.rb +3 -7
  361. data/lib/rubocop/cop/style/if_with_semicolon.rb +3 -6
  362. data/lib/rubocop/cop/style/implicit_runtime_error.rb +2 -1
  363. data/lib/rubocop/cop/style/infinite_loop.rb +24 -24
  364. data/lib/rubocop/cop/style/inline_comment.rb +3 -3
  365. data/lib/rubocop/cop/style/inverse_methods.rb +22 -32
  366. data/lib/rubocop/cop/style/keyword_parameters_order.rb +58 -0
  367. data/lib/rubocop/cop/style/lambda.rb +7 -12
  368. data/lib/rubocop/cop/style/lambda_call.rb +17 -14
  369. data/lib/rubocop/cop/style/line_end_concatenation.rb +19 -16
  370. data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +2 -1
  371. data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +16 -11
  372. data/lib/rubocop/cop/style/method_call_with_args_parentheses/require_parentheses.rb +4 -8
  373. data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +8 -7
  374. data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +12 -3
  375. data/lib/rubocop/cop/style/method_def_parentheses.rb +11 -16
  376. data/lib/rubocop/cop/style/min_max.rb +8 -12
  377. data/lib/rubocop/cop/style/missing_else.rb +11 -21
  378. data/lib/rubocop/cop/style/missing_respond_to_missing.rb +10 -3
  379. data/lib/rubocop/cop/style/mixin_grouping.rb +24 -27
  380. data/lib/rubocop/cop/style/mixin_usage.rb +2 -1
  381. data/lib/rubocop/cop/style/module_function.rb +10 -13
  382. data/lib/rubocop/cop/style/multiline_if_modifier.rb +3 -10
  383. data/lib/rubocop/cop/style/multiline_if_then.rb +4 -10
  384. data/lib/rubocop/cop/style/multiline_memoization.rb +14 -12
  385. data/lib/rubocop/cop/style/multiline_method_signature.rb +2 -2
  386. data/lib/rubocop/cop/style/multiline_ternary_operator.rb +17 -6
  387. data/lib/rubocop/cop/style/multiline_when_then.rb +9 -11
  388. data/lib/rubocop/cop/style/multiple_comparison.rb +1 -1
  389. data/lib/rubocop/cop/style/mutable_constant.rb +23 -20
  390. data/lib/rubocop/cop/style/negated_if.rb +6 -6
  391. data/lib/rubocop/cop/style/negated_unless.rb +6 -6
  392. data/lib/rubocop/cop/style/negated_while.rb +7 -15
  393. data/lib/rubocop/cop/style/nested_modifier.rb +10 -13
  394. data/lib/rubocop/cop/style/nested_parenthesized_calls.rb +14 -12
  395. data/lib/rubocop/cop/style/nested_ternary_operator.rb +14 -16
  396. data/lib/rubocop/cop/style/next.rb +10 -14
  397. data/lib/rubocop/cop/style/nil_comparison.rb +13 -11
  398. data/lib/rubocop/cop/style/non_nil_check.rb +34 -26
  399. data/lib/rubocop/cop/style/not.rb +20 -26
  400. data/lib/rubocop/cop/style/numeric_literal_prefix.rb +4 -9
  401. data/lib/rubocop/cop/style/numeric_predicate.rb +9 -15
  402. data/lib/rubocop/cop/style/one_line_conditional.rb +71 -23
  403. data/lib/rubocop/cop/style/option_hash.rb +1 -1
  404. data/lib/rubocop/cop/style/optional_arguments.rb +1 -1
  405. data/lib/rubocop/cop/style/optional_boolean_parameter.rb +42 -0
  406. data/lib/rubocop/cop/style/or_assignment.rb +13 -10
  407. data/lib/rubocop/cop/style/parallel_assignment.rb +18 -18
  408. data/lib/rubocop/cop/style/parentheses_around_condition.rb +6 -6
  409. data/lib/rubocop/cop/style/percent_literal_delimiters.rb +14 -20
  410. data/lib/rubocop/cop/style/percent_q_literals.rb +8 -10
  411. data/lib/rubocop/cop/style/perl_backrefs.rb +8 -10
  412. data/lib/rubocop/cop/style/preferred_hash_methods.rb +11 -14
  413. data/lib/rubocop/cop/style/proc.rb +6 -6
  414. data/lib/rubocop/cop/style/raise_args.rb +15 -24
  415. data/lib/rubocop/cop/style/random_with_offset.rb +17 -16
  416. data/lib/rubocop/cop/style/redundant_assignment.rb +8 -10
  417. data/lib/rubocop/cop/style/redundant_begin.rb +7 -9
  418. data/lib/rubocop/cop/style/redundant_capital_w.rb +6 -9
  419. data/lib/rubocop/cop/style/redundant_condition.rb +20 -9
  420. data/lib/rubocop/cop/style/redundant_exception.rb +2 -0
  421. data/lib/rubocop/cop/style/redundant_fetch_block.rb +3 -12
  422. data/lib/rubocop/cop/style/redundant_file_extension_in_require.rb +51 -0
  423. data/lib/rubocop/cop/style/redundant_freeze.rb +5 -7
  424. data/lib/rubocop/cop/style/redundant_interpolation.rb +25 -24
  425. data/lib/rubocop/cop/style/redundant_parentheses.rb +19 -12
  426. data/lib/rubocop/cop/style/redundant_regexp_character_class.rb +6 -13
  427. data/lib/rubocop/cop/style/redundant_regexp_escape.rb +14 -23
  428. data/lib/rubocop/cop/style/redundant_self.rb +2 -2
  429. data/lib/rubocop/cop/style/redundant_self_assignment.rb +116 -0
  430. data/lib/rubocop/cop/style/redundant_sort.rb +21 -13
  431. data/lib/rubocop/cop/style/regexp_literal.rb +10 -21
  432. data/lib/rubocop/cop/style/rescue_modifier.rb +29 -9
  433. data/lib/rubocop/cop/style/return_nil.rb +5 -5
  434. data/lib/rubocop/cop/style/safe_navigation.rb +22 -16
  435. data/lib/rubocop/cop/style/sample.rb +12 -14
  436. data/lib/rubocop/cop/style/self_assignment.rb +26 -22
  437. data/lib/rubocop/cop/style/semicolon.rb +6 -9
  438. data/lib/rubocop/cop/style/send.rb +4 -5
  439. data/lib/rubocop/cop/style/signal_exception.rb +25 -19
  440. data/lib/rubocop/cop/style/single_argument_dig.rb +55 -0
  441. data/lib/rubocop/cop/style/single_line_block_params.rb +4 -2
  442. data/lib/rubocop/cop/style/single_line_methods.rb +18 -17
  443. data/lib/rubocop/cop/style/slicing_with_range.rb +6 -8
  444. data/lib/rubocop/cop/style/sole_nested_conditional.rb +66 -0
  445. data/lib/rubocop/cop/style/special_global_vars.rb +10 -15
  446. data/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +17 -20
  447. data/lib/rubocop/cop/style/stderr_puts.rb +5 -6
  448. data/lib/rubocop/cop/style/string_concatenation.rb +106 -0
  449. data/lib/rubocop/cop/style/string_hash_keys.rb +6 -7
  450. data/lib/rubocop/cop/style/string_methods.rb +7 -17
  451. data/lib/rubocop/cop/style/strip.rb +9 -14
  452. data/lib/rubocop/cop/style/struct_inheritance.rb +4 -7
  453. data/lib/rubocop/cop/style/symbol_array.rb +6 -17
  454. data/lib/rubocop/cop/style/symbol_literal.rb +4 -6
  455. data/lib/rubocop/cop/style/symbol_proc.rb +15 -19
  456. data/lib/rubocop/cop/style/ternary_parentheses.rb +21 -20
  457. data/lib/rubocop/cop/style/trailing_body_on_class.rb +3 -6
  458. data/lib/rubocop/cop/style/trailing_body_on_method_definition.rb +4 -7
  459. data/lib/rubocop/cop/style/trailing_body_on_module.rb +3 -6
  460. data/lib/rubocop/cop/style/trailing_comma_in_arguments.rb +2 -5
  461. data/lib/rubocop/cop/style/trailing_comma_in_array_literal.rb +2 -5
  462. data/lib/rubocop/cop/style/trailing_comma_in_block_args.rb +7 -6
  463. data/lib/rubocop/cop/style/trailing_comma_in_hash_literal.rb +2 -5
  464. data/lib/rubocop/cop/style/trailing_method_end_statement.rb +9 -32
  465. data/lib/rubocop/cop/style/trailing_underscore_variable.rb +8 -17
  466. data/lib/rubocop/cop/style/trivial_accessors.rb +26 -30
  467. data/lib/rubocop/cop/style/unless_else.rb +5 -8
  468. data/lib/rubocop/cop/style/unpack_first.rb +5 -8
  469. data/lib/rubocop/cop/style/variable_interpolation.rb +7 -10
  470. data/lib/rubocop/cop/style/when_then.rb +4 -6
  471. data/lib/rubocop/cop/style/while_until_do.rb +6 -16
  472. data/lib/rubocop/cop/style/while_until_modifier.rb +6 -20
  473. data/lib/rubocop/cop/style/word_array.rb +5 -23
  474. data/lib/rubocop/cop/style/yoda_condition.rb +4 -15
  475. data/lib/rubocop/cop/style/zero_length_predicate.rb +17 -19
  476. data/lib/rubocop/cop/team.rb +2 -1
  477. data/lib/rubocop/cop/tokens_util.rb +84 -0
  478. data/lib/rubocop/cop/util.rb +3 -13
  479. data/lib/rubocop/cop/utils/format_string.rb +3 -5
  480. data/lib/rubocop/cop/variable_force.rb +2 -2
  481. data/lib/rubocop/cop/variable_force/branch.rb +1 -0
  482. data/lib/rubocop/cop/variable_force/variable.rb +7 -5
  483. data/lib/rubocop/cops_documentation_generator.rb +284 -0
  484. data/lib/rubocop/core_ext/string.rb +2 -2
  485. data/lib/rubocop/error.rb +1 -0
  486. data/lib/rubocop/ext/regexp_node.rb +46 -0
  487. data/lib/rubocop/file_finder.rb +13 -12
  488. data/lib/rubocop/formatter/auto_gen_config_formatter.rb +2 -1
  489. data/lib/rubocop/formatter/disabled_config_formatter.rb +1 -1
  490. data/lib/rubocop/formatter/formatter_set.rb +1 -0
  491. data/lib/rubocop/formatter/html_formatter.rb +2 -0
  492. data/lib/rubocop/formatter/junit_formatter.rb +1 -1
  493. data/lib/rubocop/formatter/progress_formatter.rb +2 -1
  494. data/lib/rubocop/formatter/quiet_formatter.rb +1 -1
  495. data/lib/rubocop/formatter/simple_text_formatter.rb +36 -6
  496. data/lib/rubocop/name_similarity.rb +1 -0
  497. data/lib/rubocop/options.rb +25 -4
  498. data/lib/rubocop/path_util.rb +17 -17
  499. data/lib/rubocop/rake_task.rb +1 -0
  500. data/lib/rubocop/remote_config.rb +1 -0
  501. data/lib/rubocop/result_cache.rb +37 -15
  502. data/lib/rubocop/rspec/cop_helper.rb +4 -1
  503. data/lib/rubocop/rspec/expect_offense.rb +37 -6
  504. data/lib/rubocop/rspec/shared_contexts.rb +25 -14
  505. data/lib/rubocop/runner.rb +36 -21
  506. data/lib/rubocop/string_interpreter.rb +3 -0
  507. data/lib/rubocop/target_finder.rb +14 -10
  508. data/lib/rubocop/target_ruby.rb +6 -0
  509. data/lib/rubocop/version.rb +3 -2
  510. data/lib/rubocop/yaml_duplication_checker.rb +1 -0
  511. metadata +45 -8
  512. data/lib/rubocop/cop/lint/useless_comparison.rb +0 -28
  513. data/lib/rubocop/cop/mixin/parser_diagnostic.rb +0 -37
  514. data/lib/rubocop/cop/mixin/too_many_lines.rb +0 -25
  515. data/lib/rubocop/cop/style/method_missing_super.rb +0 -34
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 766878b5fd031a287c24a96e8545398cf26adca7b6ea1a3f6b0a3bd15ee07dda
4
- data.tar.gz: 8e33f8a7e7a15ada40bdfbba85c9568e8910c71871af11677f74499241d20c87
3
+ metadata.gz: 2e27cb6b7c6fcded0825904076fe0d1f5bdc7f3dd6d7391e1b3b09900f276eda
4
+ data.tar.gz: df22bf3745be7f53ec2c96a0c00f9d467bed247123d929a19938bb15b62b4a1c
5
5
  SHA512:
6
- metadata.gz: dd87ec99764bc87637c84d50443a60611c87dabb23af42f5339b8911b60898b527e94bed74a1fb925d0ebe91d059041a1214dc7bb53a6d9c4e15a0bafab4c465
7
- data.tar.gz: d747fdfd2254f1b13a332d145aef2fb205afe4aae67c9fddc41d0bdbd6eff13c6f72af18426497ac98ae68a492abcc297892a41e0f2e766ac428029b69e3b9b4
6
+ metadata.gz: 29e908f8706eedf177e93d909e744f310a57cfdbfb75d1071b4cddfeb3bd4e480ca7d654ec442ceac848b917cc75eebc500321740f8e68c59356e3b99a349b00
7
+ data.tar.gz: 4857c9ba3dec5f0c163e63101d630a543ba8a3d3b6a2d2b6237dca2e0072fbc6885222130957617ade1ae98f9a0e2ca624164f10d3fd146aa96270c777dbfc03
data/README.md CHANGED
@@ -22,7 +22,7 @@
22
22
  **RuboCop** is a Ruby static code analyzer (a.k.a. `linter`) and code formatter. Out of the box it
23
23
  will enforce many of the guidelines outlined in the community [Ruby Style
24
24
  Guide](https://rubystyle.guide). Apart from reporting the problems discovered in your code,
25
- RuboCop can also automatically fix many of them you.
25
+ RuboCop can also automatically fix many of them for you.
26
26
 
27
27
  RuboCop is extremely flexible and most aspects of its behavior can be tweaked via various
28
28
  [configuration options](https://github.com/rubocop-hq/rubocop/blob/master/config/default.yml).
@@ -49,7 +49,7 @@ haven't reached version 1.0 yet). To prevent an unwanted RuboCop update you
49
49
  might want to use a conservative version lock in your `Gemfile`:
50
50
 
51
51
  ```rb
52
- gem 'rubocop', '~> 0.87.1', require: false
52
+ gem 'rubocop', '~> 0.91.0', require: false
53
53
  ```
54
54
 
55
55
  ## Quickstart
@@ -0,0 +1,32 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ if ARGV.include?('-h') || ARGV.include?('--help')
5
+ puts "Usage: same as main `rubocop` command but gathers profiling info"
6
+ puts "Additional option: `--memory` to print memory usage"
7
+ exit(0)
8
+ end
9
+ with_mem = ARGV.delete('--memory')
10
+ ARGV.unshift '--cache', 'false' unless ARGV.include?('--cache')
11
+
12
+ require 'stackprof'
13
+ if with_mem
14
+ require 'memory_profiler'
15
+ MemoryProfiler.start
16
+ end
17
+ StackProf.start
18
+ start = Process.clock_gettime(Process::CLOCK_MONOTONIC)
19
+ begin
20
+ load "#{__dir__}/../exe/rubocop"
21
+ ensure
22
+ delta = Process.clock_gettime(Process::CLOCK_MONOTONIC) - start
23
+ puts "Finished in #{delta.round(1)} seconds"
24
+ StackProf.stop
25
+ if with_mem
26
+ puts "Building memory report..."
27
+ report = MemoryProfiler.stop
28
+ end
29
+ Dir.mkdir('tmp') unless File.exist?('tmp')
30
+ StackProf.results('tmp/stackprof.dump')
31
+ report&.pretty_print(scale_bytes: true)
32
+ end
@@ -117,6 +117,8 @@ AllCops:
117
117
  # CacheRootDirectory is ~ (nil), which it is by default, the root will be
118
118
  # taken from the environment variable `$XDG_CACHE_HOME` if it is set, or if
119
119
  # `$XDG_CACHE_HOME` is not set, it will be `$HOME/.cache/`.
120
+ # The CacheRootDirectory can be overwritten by passing the `--cache-root` command
121
+ # line option or by setting `$RUBOCOP_CACHE_ROOT` environment variable.
120
122
  CacheRootDirectory: ~
121
123
  # It is possible for a malicious user to know the location of RuboCop's cache
122
124
  # directory by looking at CacheRootDirectory, and create a symlink in its
@@ -210,9 +212,10 @@ Gemspec/OrderedDependencies:
210
212
  - '**/*.gemspec'
211
213
 
212
214
  Gemspec/RequiredRubyVersion:
213
- Description: 'Checks that `required_ruby_version` of gemspec and `TargetRubyVersion` of .rubocop.yml are equal.'
215
+ Description: 'Checks that `required_ruby_version` of gemspec is specified and equal to `TargetRubyVersion` of .rubocop.yml.'
214
216
  Enabled: true
215
217
  VersionAdded: '0.52'
218
+ VersionChanged: '0.89'
216
219
  Include:
217
220
  - '**/*.gemspec'
218
221
 
@@ -308,6 +311,19 @@ Layout/AssignmentIndentation:
308
311
  # But it can be overridden by setting this parameter
309
312
  IndentationWidth: ~
310
313
 
314
+ Layout/BeginEndAlignment:
315
+ Description: 'Align ends corresponding to begins correctly.'
316
+ Enabled: pending
317
+ VersionAdded: '0.91'
318
+ # The value `start_of_line` means that `end` should be aligned the start of the line
319
+ # where the `begin` keyword is.
320
+ # The value `begin` means that `end` should be aligned with the `begin` keyword.
321
+ EnforcedStyleAlignWith: start_of_line
322
+ SupportedStylesAlignWith:
323
+ - start_of_line
324
+ - begin
325
+ Severity: warning
326
+
311
327
  Layout/BlockAlignment:
312
328
  Description: 'Align block ends correctly.'
313
329
  Enabled: true
@@ -398,7 +414,6 @@ Layout/DefEndAlignment:
398
414
  SupportedStylesAlignWith:
399
415
  - start_of_line
400
416
  - def
401
- AutoCorrect: false
402
417
  Severity: warning
403
418
 
404
419
  Layout/DotPosition:
@@ -435,6 +450,14 @@ Layout/EmptyLineAfterMagicComment:
435
450
  Enabled: true
436
451
  VersionAdded: '0.49'
437
452
 
453
+ Layout/EmptyLineAfterMultilineCondition:
454
+ Description: 'Enforces empty line after multiline condition.'
455
+ # This is disabled, because this style is not very common in practice.
456
+ Enabled: false
457
+ VersionAdded: '0.90'
458
+ Reference:
459
+ - https://github.com/airbnb/ruby#multiline-if-newline
460
+
438
461
  Layout/EmptyLineBetweenDefs:
439
462
  Description: 'Use empty lines between defs.'
440
463
  StyleGuide: '#empty-lines-between-methods'
@@ -554,7 +577,6 @@ Layout/EndAlignment:
554
577
  - keyword
555
578
  - variable
556
579
  - start_of_line
557
- AutoCorrect: false
558
580
  Severity: warning
559
581
 
560
582
  Layout/EndOfLine:
@@ -1234,7 +1256,7 @@ Layout/SpaceInsideBlockBraces:
1234
1256
 
1235
1257
  Layout/SpaceInsideHashLiteralBraces:
1236
1258
  Description: "Use spaces inside hash literal braces - or don't."
1237
- StyleGuide: '#spaces-operators'
1259
+ StyleGuide: '#spaces-braces'
1238
1260
  Enabled: true
1239
1261
  VersionAdded: '0.49'
1240
1262
  EnforcedStyle: space
@@ -1355,6 +1377,12 @@ Lint/BigDecimalNew:
1355
1377
  Enabled: true
1356
1378
  VersionAdded: '0.53'
1357
1379
 
1380
+ Lint/BinaryOperatorWithIdenticalOperands:
1381
+ Description: 'This cop checks for places where binary operator has identical operands.'
1382
+ Enabled: pending
1383
+ Safe: false
1384
+ VersionAdded: '0.89'
1385
+
1358
1386
  Lint/BooleanSymbol:
1359
1387
  Description: 'Check for `:true` and `:false` symbols.'
1360
1388
  Enabled: true
@@ -1367,6 +1395,12 @@ Lint/CircularArgumentReference:
1367
1395
  Enabled: true
1368
1396
  VersionAdded: '0.33'
1369
1397
 
1398
+ Lint/ConstantDefinitionInBlock:
1399
+ Description: 'Do not define constants within a block.'
1400
+ StyleGuide: '#no-constant-definition-in-block'
1401
+ Enabled: pending
1402
+ VersionAdded: '0.91'
1403
+
1370
1404
  Lint/ConstantResolution:
1371
1405
  Description: 'Check that constants are fully qualified with `::`.'
1372
1406
  Enabled: false
@@ -1397,12 +1431,18 @@ Lint/DisjunctiveAssignmentInConstructor:
1397
1431
  Enabled: true
1398
1432
  Safe: false
1399
1433
  VersionAdded: '0.62'
1434
+ VersionChanged: '0.88'
1400
1435
 
1401
1436
  Lint/DuplicateCaseCondition:
1402
1437
  Description: 'Do not repeat values in case conditionals.'
1403
1438
  Enabled: true
1404
1439
  VersionAdded: '0.45'
1405
1440
 
1441
+ Lint/DuplicateElsifCondition:
1442
+ Description: 'Do not repeat conditions used in if `elsif`.'
1443
+ Enabled: 'pending'
1444
+ VersionAdded: '0.88'
1445
+
1406
1446
  Lint/DuplicateHashKey:
1407
1447
  Description: 'Check for duplicate keys in hash literals.'
1408
1448
  Enabled: true
@@ -1414,6 +1454,16 @@ Lint/DuplicateMethods:
1414
1454
  Enabled: true
1415
1455
  VersionAdded: '0.29'
1416
1456
 
1457
+ Lint/DuplicateRequire:
1458
+ Description: 'Check for duplicate `require`s and `require_relative`s.'
1459
+ Enabled: pending
1460
+ VersionAdded: '0.90'
1461
+
1462
+ Lint/DuplicateRescueException:
1463
+ Description: 'Checks that there are no repeated exceptions used in `rescue` expressions.'
1464
+ Enabled: pending
1465
+ VersionAdded: '0.89'
1466
+
1417
1467
  Lint/EachWithObjectArgument:
1418
1468
  Description: 'Check for immutable argument given to each_with_object.'
1419
1469
  Enabled: true
@@ -1424,18 +1474,29 @@ Lint/ElseLayout:
1424
1474
  Enabled: true
1425
1475
  VersionAdded: '0.17'
1426
1476
 
1477
+ Lint/EmptyConditionalBody:
1478
+ Description: 'This cop checks for the presence of `if`, `elsif` and `unless` branches without a body.'
1479
+ Enabled: 'pending'
1480
+ AllowComments: true
1481
+ VersionAdded: '0.89'
1482
+
1427
1483
  Lint/EmptyEnsure:
1428
1484
  Description: 'Checks for empty ensure block.'
1429
1485
  Enabled: true
1430
1486
  VersionAdded: '0.10'
1431
1487
  VersionChanged: '0.48'
1432
- AutoCorrect: false
1433
1488
 
1434
1489
  Lint/EmptyExpression:
1435
1490
  Description: 'Checks for empty expressions.'
1436
1491
  Enabled: true
1437
1492
  VersionAdded: '0.45'
1438
1493
 
1494
+ Lint/EmptyFile:
1495
+ Description: 'Enforces that Ruby source files are not empty.'
1496
+ Enabled: pending
1497
+ AllowComments: true
1498
+ VersionAdded: '0.90'
1499
+
1439
1500
  Lint/EmptyInterpolation:
1440
1501
  Description: 'Checks for empty string interpolation.'
1441
1502
  Enabled: true
@@ -1467,6 +1528,12 @@ Lint/FlipFlop:
1467
1528
  Enabled: true
1468
1529
  VersionAdded: '0.16'
1469
1530
 
1531
+ Lint/FloatComparison:
1532
+ Description: 'Checks for the presence of precise comparison of floating point numbers.'
1533
+ StyleGuide: '#float-comparison'
1534
+ Enabled: pending
1535
+ VersionAdded: '0.89'
1536
+
1470
1537
  Lint/FloatOutOfRange:
1471
1538
  Description: >-
1472
1539
  Catches floating-point literals too large or small for Ruby to
@@ -1487,6 +1554,12 @@ Lint/HeredocMethodCallPosition:
1487
1554
  StyleGuide: '#heredoc-method-calls'
1488
1555
  VersionAdded: '0.68'
1489
1556
 
1557
+ Lint/IdentityComparison:
1558
+ Description: 'Prefer `equal?` over `==` when comparing `object_id`.'
1559
+ Enabled: pending
1560
+ StyleGuide: '#identity-comparison'
1561
+ VersionAdded: '0.91'
1562
+
1490
1563
  Lint/ImplicitStringConcatenation:
1491
1564
  Description: >-
1492
1565
  Checks for adjacent string literals on the same line, which
@@ -1514,7 +1587,7 @@ Lint/InheritException:
1514
1587
  Lint/InterpolationCheck:
1515
1588
  Description: 'Raise warning for interpolation in single q strs.'
1516
1589
  Enabled: true
1517
- SafeAutoCorrect: false
1590
+ Safe: false
1518
1591
  VersionAdded: '0.50'
1519
1592
  VersionChanged: '0.87'
1520
1593
 
@@ -1536,6 +1609,7 @@ Lint/Loop:
1536
1609
  StyleGuide: '#loop-with-break'
1537
1610
  Enabled: true
1538
1611
  VersionAdded: '0.9'
1612
+ VersionChanged: '0.89'
1539
1613
 
1540
1614
  Lint/MissingCopEnableDirective:
1541
1615
  Description: 'Checks for a `# rubocop:enable` after `# rubocop:disable`.'
@@ -1550,6 +1624,13 @@ Lint/MissingCopEnableDirective:
1550
1624
  # .inf for any size
1551
1625
  MaximumRangeSize: .inf
1552
1626
 
1627
+ Lint/MissingSuper:
1628
+ Description: >-
1629
+ This cop checks for the presence of constructors and lifecycle callbacks
1630
+ without calls to `super`'.
1631
+ Enabled: pending
1632
+ VersionAdded: '0.89'
1633
+
1553
1634
  Lint/MixedRegexpCaptureTypes:
1554
1635
  Description: 'Do not mix named captures and numbered captures in a Regexp literal.'
1555
1636
  Enabled: pending
@@ -1602,6 +1683,12 @@ Lint/OrderedMagicComments:
1602
1683
  Enabled: true
1603
1684
  VersionAdded: '0.53'
1604
1685
 
1686
+ Lint/OutOfRangeRegexpRef:
1687
+ Description: 'Checks for out of range reference for Regexp because it always returns nil.'
1688
+ Enabled: pending
1689
+ Safe: false
1690
+ VersionAdded: '0.89'
1691
+
1605
1692
  Lint/ParenthesesAsGroupedExpression:
1606
1693
  Description: >-
1607
1694
  Checks for method calls with a space before the opening
@@ -1724,6 +1811,7 @@ Lint/SafeNavigationChain:
1724
1811
  - presence
1725
1812
  - try
1726
1813
  - try!
1814
+ - in?
1727
1815
 
1728
1816
  Lint/SafeNavigationConsistency:
1729
1817
  Description: >-
@@ -1752,6 +1840,11 @@ Lint/ScriptPermission:
1752
1840
  VersionAdded: '0.49'
1753
1841
  VersionChanged: '0.50'
1754
1842
 
1843
+ Lint/SelfAssignment:
1844
+ Description: 'Checks for self-assignments.'
1845
+ Enabled: pending
1846
+ VersionAdded: '0.89'
1847
+
1755
1848
  Lint/SendWithMixinArgument:
1756
1849
  Description: 'Checks for `send` method when using mixin.'
1757
1850
  Enabled: true
@@ -1802,6 +1895,16 @@ Lint/ToJSON:
1802
1895
  Enabled: true
1803
1896
  VersionAdded: '0.66'
1804
1897
 
1898
+ Lint/TopLevelReturnWithArgument:
1899
+ Description: 'This cop detects top level return statements with argument.'
1900
+ Enabled: 'pending'
1901
+ VersionAdded: '0.89'
1902
+
1903
+ Lint/TrailingCommaInAttributeDeclaration:
1904
+ Description: 'This cop checks for trailing commas in attribute declarations.'
1905
+ Enabled: pending
1906
+ VersionAdded: '0.90'
1907
+
1805
1908
  Lint/UnderscorePrefixedVariableName:
1806
1909
  Description: 'Do not use prefix `_` for a variable that is used.'
1807
1910
  Enabled: true
@@ -1818,6 +1921,11 @@ Lint/UnreachableCode:
1818
1921
  Enabled: true
1819
1922
  VersionAdded: '0.9'
1820
1923
 
1924
+ Lint/UnreachableLoop:
1925
+ Description: 'This cop checks for loops that will have at most one iteration.'
1926
+ Enabled: pending
1927
+ VersionAdded: '0.89'
1928
+
1821
1929
  Lint/UnusedBlockArgument:
1822
1930
  Description: 'Checks for unused block arguments.'
1823
1931
  StyleGuide: '#underscore-unused-vars'
@@ -1867,16 +1975,18 @@ Lint/UselessAssignment:
1867
1975
  Enabled: true
1868
1976
  VersionAdded: '0.11'
1869
1977
 
1870
- Lint/UselessComparison:
1871
- Description: 'Checks for comparison of something with itself.'
1872
- Enabled: true
1873
- VersionAdded: '0.11'
1874
-
1875
1978
  Lint/UselessElseWithoutRescue:
1876
1979
  Description: 'Checks for useless `else` in `begin..end` without `rescue`.'
1877
1980
  Enabled: true
1878
1981
  VersionAdded: '0.17'
1879
1982
 
1983
+ Lint/UselessMethodDefinition:
1984
+ Description: 'Checks for useless method definitions.'
1985
+ Enabled: pending
1986
+ VersionAdded: '0.90'
1987
+ Safe: false
1988
+ AllowComments: true
1989
+
1880
1990
  Lint/UselessSetterCall:
1881
1991
  Description: 'Checks for useless setter call to a local variable.'
1882
1992
  Enabled: true
@@ -1884,6 +1994,12 @@ Lint/UselessSetterCall:
1884
1994
  VersionChanged: '0.80'
1885
1995
  Safe: false
1886
1996
 
1997
+ Lint/UselessTimes:
1998
+ Description: 'Checks for useless `Integer#times` calls.'
1999
+ Enabled: pending
2000
+ VersionAdded: '0.91'
2001
+ Safe: false
2002
+
1887
2003
  Lint/Void:
1888
2004
  Description: 'Possible use of operator/literal/variable in void context.'
1889
2005
  Enabled: true
@@ -1905,7 +2021,7 @@ Metrics/AbcSize:
1905
2021
  # The ABC size is a calculated magnitude, so this number can be an Integer or
1906
2022
  # a Float.
1907
2023
  IgnoredMethods: []
1908
- Max: 15
2024
+ Max: 17
1909
2025
 
1910
2026
  Metrics/BlockLength:
1911
2027
  Description: 'Avoid long blocks with many lines.'
@@ -1987,7 +2103,7 @@ Metrics/PerceivedComplexity:
1987
2103
  VersionAdded: '0.25'
1988
2104
  VersionChanged: '0.81'
1989
2105
  IgnoredMethods: []
1990
- Max: 7
2106
+ Max: 8
1991
2107
 
1992
2108
  ################## Migration #############################
1993
2109
 
@@ -2179,17 +2295,18 @@ Naming/MethodParameterName:
2179
2295
  AllowNamesEndingInNumbers: true
2180
2296
  # Allowed names that will not register an offense
2181
2297
  AllowedNames:
2182
- - io
2183
- - id
2184
- - to
2298
+ - at
2185
2299
  - by
2186
- - 'on'
2300
+ - db
2301
+ - id
2187
2302
  - in
2188
- - at
2303
+ - io
2189
2304
  - ip
2190
- - db
2305
+ - of
2306
+ - 'on'
2191
2307
  - os
2192
2308
  - pp
2309
+ - to
2193
2310
  # Forbidden names that will register an offense
2194
2311
  ForbiddenNames: []
2195
2312
 
@@ -2340,6 +2457,15 @@ Style/AndOr:
2340
2457
  - always
2341
2458
  - conditionals
2342
2459
 
2460
+ Style/ArrayCoercion:
2461
+ Description: >-
2462
+ Use Array() instead of explicit Array check or [*var], when dealing
2463
+ with a variable you want to treat as an Array, but you're not certain it's an array.
2464
+ StyleGuide: '#array-coercion'
2465
+ Safe: false
2466
+ Enabled: 'pending'
2467
+ VersionAdded: '0.88'
2468
+
2343
2469
  Style/ArrayJoin:
2344
2470
  Description: 'Use Array#join instead of Array#*.'
2345
2471
  StyleGuide: '#array-join'
@@ -2512,6 +2638,7 @@ Style/CaseEquality:
2512
2638
  StyleGuide: '#no-case-equality'
2513
2639
  Enabled: true
2514
2640
  VersionAdded: '0.9'
2641
+ VersionChanged: '0.89'
2515
2642
  # If AllowOnConstant is enabled, the cop will ignore violations when the receiver of
2516
2643
  # the case equality operator is a constant.
2517
2644
  #
@@ -2522,6 +2649,13 @@ Style/CaseEquality:
2522
2649
  # String === "string"
2523
2650
  AllowOnConstant: false
2524
2651
 
2652
+ Style/CaseLikeIf:
2653
+ Description: 'This cop identifies places where `if-elsif` constructions can be replaced with `case-when`.'
2654
+ StyleGuide: '#case-vs-if-else'
2655
+ Enabled: 'pending'
2656
+ Safe: false
2657
+ VersionAdded: '0.88'
2658
+
2525
2659
  Style/CharacterLiteral:
2526
2660
  Description: 'Checks for uses of character literals.'
2527
2661
  StyleGuide: '#no-character-literals'
@@ -2537,7 +2671,6 @@ Style/ClassAndModuleChildren:
2537
2671
  # have the knowledge to perform either operation safely and thus requires
2538
2672
  # manual oversight.
2539
2673
  SafeAutoCorrect: false
2540
- AutoCorrect: false
2541
2674
  Enabled: true
2542
2675
  VersionAdded: '0.19'
2543
2676
  #
@@ -2576,6 +2709,16 @@ Style/ClassMethods:
2576
2709
  VersionAdded: '0.9'
2577
2710
  VersionChanged: '0.20'
2578
2711
 
2712
+ Style/ClassMethodsDefinitions:
2713
+ Description: 'Enforces using `def self.method_name` or `class << self` to define class methods.'
2714
+ StyleGuide: '#def-self-class-methods'
2715
+ Enabled: false
2716
+ VersionAdded: '0.89'
2717
+ EnforcedStyle: def_self
2718
+ SupportedStyles:
2719
+ - def_self
2720
+ - self_class
2721
+
2579
2722
  Style/ClassVars:
2580
2723
  Description: 'Avoid the use of class variables.'
2581
2724
  StyleGuide: '#no-class-vars'
@@ -2616,6 +2759,14 @@ Style/ColonMethodDefinition:
2616
2759
  Enabled: true
2617
2760
  VersionAdded: '0.52'
2618
2761
 
2762
+ Style/CombinableLoops:
2763
+ Description: >-
2764
+ Checks for places where multiple consecutive loops over the same data
2765
+ can be combined into a single loop.
2766
+ Enabled: pending
2767
+ Safe: false
2768
+ VersionAdded: '0.90'
2769
+
2619
2770
  Style/CommandLiteral:
2620
2771
  Description: 'Use `` or %x around command literals.'
2621
2772
  StyleGuide: '#percent-x'
@@ -2859,6 +3010,16 @@ Style/ExpandPathArguments:
2859
3010
  Enabled: true
2860
3011
  VersionAdded: '0.53'
2861
3012
 
3013
+ Style/ExplicitBlockArgument:
3014
+ Description: >-
3015
+ Consider using explicit block argument to avoid writing block literal
3016
+ that just passes its arguments to another block.
3017
+ StyleGuide: '#block-argument'
3018
+ Enabled: pending
3019
+ # May change the yielding arity.
3020
+ Safe: false
3021
+ VersionAdded: '0.89'
3022
+
2862
3023
  Style/ExponentialNotation:
2863
3024
  Description: 'When using exponential notation, favor a mantissa between 1 (inclusive) and 10 (exclusive).'
2864
3025
  StyleGuide: '#exponential-notation'
@@ -2940,7 +3101,14 @@ Style/FrozenStringLiteralComment:
2940
3101
  # `never` will enforce that the frozen string literal comment does not
2941
3102
  # exist in a file.
2942
3103
  - never
2943
- Safe: false
3104
+ SafeAutoCorrect: false
3105
+
3106
+ Style/GlobalStdStream:
3107
+ Description: 'Enforces the use of `$stdout/$stderr/$stdin` instead of `STDOUT/STDERR/STDIN`.'
3108
+ StyleGuide: '#global-stdout'
3109
+ Enabled: pending
3110
+ VersionAdded: '0.89'
3111
+ SafeAutoCorrect: false
2944
3112
 
2945
3113
  Style/GlobalVars:
2946
3114
  Description: 'Do not introduce global variables.'
@@ -2961,6 +3129,18 @@ Style/GuardClause:
2961
3129
  # needs to have to trigger this cop
2962
3130
  MinBodyLength: 1
2963
3131
 
3132
+ Style/HashAsLastArrayItem:
3133
+ Description: >-
3134
+ Checks for presence or absence of braces around hash literal as a last
3135
+ array item depending on configuration.
3136
+ StyleGuide: '#hash-literal-as-last-array-item'
3137
+ Enabled: 'pending'
3138
+ VersionAdded: '0.88'
3139
+ EnforcedStyle: braces
3140
+ SupportedStyles:
3141
+ - braces
3142
+ - no_braces
3143
+
2964
3144
  Style/HashEachMethods:
2965
3145
  Description: 'Use Hash#each_key and Hash#each_value.'
2966
3146
  StyleGuide: '#hash-each'
@@ -2968,6 +3148,16 @@ Style/HashEachMethods:
2968
3148
  VersionAdded: '0.80'
2969
3149
  Safe: false
2970
3150
 
3151
+ Style/HashLikeCase:
3152
+ Description: >-
3153
+ Checks for places where `case-when` represents a simple 1:1
3154
+ mapping and can be replaced with a hash lookup.
3155
+ Enabled: 'pending'
3156
+ VersionAdded: '0.88'
3157
+ # `MinBranchesCount` defines the number of branches `case` needs to have
3158
+ # to trigger this cop
3159
+ MinBranchesCount: 3
3160
+
2971
3161
  Style/HashSyntax:
2972
3162
  Description: >-
2973
3163
  Prefer Ruby 1.9 hash syntax { a: 1, b: 2 } over 1.8 syntax
@@ -2992,15 +3182,17 @@ Style/HashSyntax:
2992
3182
  PreferHashRocketsForNonAlnumEndingSymbols: false
2993
3183
 
2994
3184
  Style/HashTransformKeys:
2995
- Description: 'Prefer `transform_keys` over `each_with_object` and `map`.'
3185
+ Description: 'Prefer `transform_keys` over `each_with_object`, `map`, or `to_h`.'
2996
3186
  Enabled: 'pending'
2997
3187
  VersionAdded: '0.80'
3188
+ VersionChanged: '0.90'
2998
3189
  Safe: false
2999
3190
 
3000
3191
  Style/HashTransformValues:
3001
- Description: 'Prefer `transform_values` over `each_with_object` and `map`.'
3192
+ Description: 'Prefer `transform_values` over `each_with_object`, `map`, or `to_h`.'
3002
3193
  Enabled: 'pending'
3003
3194
  VersionAdded: '0.80'
3195
+ VersionChanged: '0.90'
3004
3196
  Safe: false
3005
3197
 
3006
3198
  Style/IdenticalConditionalBranches:
@@ -3097,6 +3289,12 @@ Style/IpAddresses:
3097
3289
  - "::"
3098
3290
  # :: is a valid IPv6 address, but could potentially be legitimately in code
3099
3291
 
3292
+ Style/KeywordParametersOrder:
3293
+ Description: 'Enforces that optional keyword parameters are placed at the end of the parameters list.'
3294
+ StyleGuide: '#keyword-parameters-order'
3295
+ Enabled: pending
3296
+ VersionAdded: '0.90'
3297
+
3100
3298
  Style/Lambda:
3101
3299
  Description: 'Use the new lambda literal syntax for single-line blocks.'
3102
3300
  StyleGuide: '#lambda-multi-line'
@@ -3175,12 +3373,6 @@ Style/MethodDefParentheses:
3175
3373
  - require_no_parentheses
3176
3374
  - require_no_parentheses_except_multiline
3177
3375
 
3178
- Style/MethodMissingSuper:
3179
- Description: Checks for `method_missing` to call `super`.
3180
- StyleGuide: '#no-method-missing'
3181
- Enabled: true
3182
- VersionAdded: '0.56'
3183
-
3184
3376
  Style/MinMax:
3185
3377
  Description: >-
3186
3378
  Use `Enumerable#minmax` instead of `Enumerable#min`
@@ -3476,7 +3668,6 @@ Style/NumericPredicate:
3476
3668
  # object. Switching these methods has to be done with knowledge of the types
3477
3669
  # of the variables which rubocop doesn't have.
3478
3670
  SafeAutoCorrect: false
3479
- AutoCorrect: false
3480
3671
  Enabled: true
3481
3672
  VersionAdded: '0.42'
3482
3673
  VersionChanged: '0.59'
@@ -3492,12 +3683,13 @@ Style/NumericPredicate:
3492
3683
 
3493
3684
  Style/OneLineConditional:
3494
3685
  Description: >-
3495
- Favor the ternary operator(?:) over
3496
- if/then/else/end constructs.
3686
+ Favor the ternary operator (?:) or multi-line constructs over
3687
+ single-line if/then/else/end constructs.
3497
3688
  StyleGuide: '#ternary-operator'
3498
3689
  Enabled: true
3690
+ AlwaysCorrectToMultiline: false
3499
3691
  VersionAdded: '0.9'
3500
- VersionChanged: '0.38'
3692
+ VersionChanged: '0.90'
3501
3693
 
3502
3694
  Style/OptionHash:
3503
3695
  Description: "Don't use option hashes when you can use keyword arguments."
@@ -3522,6 +3714,13 @@ Style/OptionalArguments:
3522
3714
  VersionAdded: '0.33'
3523
3715
  VersionChanged: '0.83'
3524
3716
 
3717
+ Style/OptionalBooleanParameter:
3718
+ Description: 'Use keyword arguments when defining method with boolean argument.'
3719
+ StyleGuide: '#boolean-keyword-arguments'
3720
+ Enabled: pending
3721
+ Safe: false
3722
+ VersionAdded: '0.89'
3723
+
3525
3724
  Style/OrAssignment:
3526
3725
  Description: 'Recommend usage of double pipe equals (||=) where applicable.'
3527
3726
  StyleGuide: '#double-pipe-for-uninit'
@@ -3665,6 +3864,14 @@ Style/RedundantFetchBlock:
3665
3864
  SafeForConstants: false
3666
3865
  VersionAdded: '0.86'
3667
3866
 
3867
+ Style/RedundantFileExtensionInRequire:
3868
+ Description: >-
3869
+ Checks for the presence of superfluous `.rb` extension in
3870
+ the filename provided to `require` and `require_relative`.
3871
+ StyleGuide: '#no-explicit-rb-to-require'
3872
+ Enabled: 'pending'
3873
+ VersionAdded: '0.88'
3874
+
3668
3875
  Style/RedundantFreeze:
3669
3876
  Description: "Checks usages of Object#freeze on immutable objects."
3670
3877
  Enabled: true
@@ -3713,6 +3920,12 @@ Style/RedundantSelf:
3713
3920
  VersionAdded: '0.10'
3714
3921
  VersionChanged: '0.13'
3715
3922
 
3923
+ Style/RedundantSelfAssignment:
3924
+ Description: 'Checks for places where redundant assignments are made for in place modification methods.'
3925
+ Enabled: pending
3926
+ Safe: false
3927
+ VersionAdded: '0.90'
3928
+
3716
3929
  Style/RedundantSort:
3717
3930
  Description: >-
3718
3931
  Use `min` instead of `sort.first`,
@@ -3832,6 +4045,12 @@ Style/SignalException:
3832
4045
  - only_fail
3833
4046
  - semantic
3834
4047
 
4048
+ Style/SingleArgumentDig:
4049
+ Description: 'Avoid using single argument dig method.'
4050
+ Enabled: pending
4051
+ VersionAdded: '0.89'
4052
+ Safe: false
4053
+
3835
4054
  Style/SingleLineBlockParams:
3836
4055
  Description: 'Enforces the names of some block params.'
3837
4056
  Enabled: false
@@ -3859,6 +4078,14 @@ Style/SlicingWithRange:
3859
4078
  VersionAdded: '0.83'
3860
4079
  Safe: false
3861
4080
 
4081
+ Style/SoleNestedConditional:
4082
+ Description: >-
4083
+ Finds sole nested conditional nodes
4084
+ which can be merged into outer conditional node.
4085
+ Enabled: pending
4086
+ VersionAdded: '0.89'
4087
+ AllowModifier: false
4088
+
3862
4089
  Style/SpecialGlobalVars:
3863
4090
  Description: 'Avoid Perl-style global variables.'
3864
4091
  StyleGuide: '#no-cryptic-perlisms'
@@ -3887,6 +4114,13 @@ Style/StderrPuts:
3887
4114
  Enabled: true
3888
4115
  VersionAdded: '0.51'
3889
4116
 
4117
+ Style/StringConcatenation:
4118
+ Description: 'Checks for places where string concatenation can be replaced with string interpolation.'
4119
+ StyleGuide: '#string-interpolation'
4120
+ Enabled: pending
4121
+ Safe: false
4122
+ VersionAdded: '0.89'
4123
+
3890
4124
  Style/StringHashKeys:
3891
4125
  Description: 'Prefer symbols instead of strings as hash keys.'
3892
4126
  StyleGuide: '#symbols-as-keys'