rubocop 0.87.0 → 0.90.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.
Files changed (508) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/bin/rubocop-profile +32 -0
  4. data/config/default.yml +232 -33
  5. data/lib/rubocop.rb +36 -4
  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 +2 -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 +39 -16
  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 +4 -0
  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/gem_comment.rb +7 -3
  27. data/lib/rubocop/cop/commissioner.rb +47 -8
  28. data/lib/rubocop/cop/cop.rb +1 -1
  29. data/lib/rubocop/cop/correctors/alignment_corrector.rb +4 -4
  30. data/lib/rubocop/cop/correctors/condition_corrector.rb +3 -5
  31. data/lib/rubocop/cop/correctors/empty_line_corrector.rb +9 -10
  32. data/lib/rubocop/cop/correctors/line_break_corrector.rb +6 -6
  33. data/lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb +34 -3
  34. data/lib/rubocop/cop/correctors/parentheses_corrector.rb +5 -8
  35. data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +6 -11
  36. data/lib/rubocop/cop/correctors/punctuation_corrector.rb +8 -10
  37. data/lib/rubocop/cop/correctors/unused_arg_corrector.rb +15 -18
  38. data/lib/rubocop/cop/documentation.rb +22 -0
  39. data/lib/rubocop/cop/force.rb +1 -0
  40. data/lib/rubocop/cop/gemspec/required_ruby_version.rb +38 -12
  41. data/lib/rubocop/cop/generator.rb +1 -0
  42. data/lib/rubocop/cop/generator/configuration_injector.rb +2 -2
  43. data/lib/rubocop/cop/internal_affairs/method_name_equal.rb +4 -12
  44. data/lib/rubocop/cop/internal_affairs/node_destructuring.rb +1 -1
  45. data/lib/rubocop/cop/internal_affairs/offense_location_keyword.rb +8 -8
  46. data/lib/rubocop/cop/internal_affairs/redundant_location_argument.rb +10 -7
  47. data/lib/rubocop/cop/internal_affairs/redundant_message_argument.rb +7 -8
  48. data/lib/rubocop/cop/internal_affairs/useless_message_assertion.rb +2 -2
  49. data/lib/rubocop/cop/layout/block_alignment.rb +24 -20
  50. data/lib/rubocop/cop/layout/class_structure.rb +15 -53
  51. data/lib/rubocop/cop/layout/closing_heredoc_indentation.rb +4 -6
  52. data/lib/rubocop/cop/layout/comment_indentation.rb +1 -1
  53. data/lib/rubocop/cop/layout/condition_position.rb +13 -15
  54. data/lib/rubocop/cop/layout/def_end_alignment.rb +7 -4
  55. data/lib/rubocop/cop/layout/dot_position.rb +21 -17
  56. data/lib/rubocop/cop/layout/empty_comment.rb +30 -23
  57. data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +19 -16
  58. data/lib/rubocop/cop/layout/empty_line_after_magic_comment.rb +13 -13
  59. data/lib/rubocop/cop/layout/empty_line_after_multiline_condition.rb +144 -0
  60. data/lib/rubocop/cop/layout/empty_line_between_defs.rb +21 -23
  61. data/lib/rubocop/cop/layout/empty_lines.rb +6 -9
  62. data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +5 -6
  63. data/lib/rubocop/cop/layout/empty_lines_around_arguments.rb +7 -8
  64. data/lib/rubocop/cop/layout/empty_lines_around_attribute_accessor.rb +3 -6
  65. data/lib/rubocop/cop/layout/empty_lines_around_begin_body.rb +2 -5
  66. data/lib/rubocop/cop/layout/empty_lines_around_block_body.rb +2 -5
  67. data/lib/rubocop/cop/layout/empty_lines_around_class_body.rb +2 -5
  68. data/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +2 -5
  69. data/lib/rubocop/cop/layout/empty_lines_around_method_body.rb +2 -5
  70. data/lib/rubocop/cop/layout/empty_lines_around_module_body.rb +2 -5
  71. data/lib/rubocop/cop/layout/end_alignment.rb +9 -9
  72. data/lib/rubocop/cop/layout/extra_spacing.rb +22 -36
  73. data/lib/rubocop/cop/layout/first_array_element_line_break.rb +2 -5
  74. data/lib/rubocop/cop/layout/first_hash_element_line_break.rb +2 -5
  75. data/lib/rubocop/cop/layout/first_method_argument_line_break.rb +5 -9
  76. data/lib/rubocop/cop/layout/first_method_parameter_line_break.rb +2 -5
  77. data/lib/rubocop/cop/layout/hash_alignment.rb +17 -20
  78. data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +15 -14
  79. data/lib/rubocop/cop/layout/heredoc_indentation.rb +16 -13
  80. data/lib/rubocop/cop/layout/indentation_style.rb +0 -2
  81. data/lib/rubocop/cop/layout/initial_indentation.rb +6 -7
  82. data/lib/rubocop/cop/layout/leading_comment_space.rb +12 -10
  83. data/lib/rubocop/cop/layout/leading_empty_lines.rb +6 -11
  84. data/lib/rubocop/cop/layout/multiline_array_brace_layout.rb +2 -5
  85. data/lib/rubocop/cop/layout/multiline_array_line_breaks.rb +2 -5
  86. data/lib/rubocop/cop/layout/multiline_assignment_layout.rb +10 -14
  87. data/lib/rubocop/cop/layout/multiline_block_layout.rb +37 -24
  88. data/lib/rubocop/cop/layout/multiline_hash_brace_layout.rb +2 -5
  89. data/lib/rubocop/cop/layout/multiline_hash_key_line_breaks.rb +2 -5
  90. data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +5 -9
  91. data/lib/rubocop/cop/layout/multiline_method_call_brace_layout.rb +2 -5
  92. data/lib/rubocop/cop/layout/multiline_method_definition_brace_layout.rb +2 -5
  93. data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +18 -23
  94. data/lib/rubocop/cop/layout/space_after_colon.rb +11 -7
  95. data/lib/rubocop/cop/layout/space_after_comma.rb +2 -5
  96. data/lib/rubocop/cop/layout/space_after_method_name.rb +5 -6
  97. data/lib/rubocop/cop/layout/space_after_not.rb +9 -11
  98. data/lib/rubocop/cop/layout/space_after_semicolon.rb +2 -5
  99. data/lib/rubocop/cop/layout/space_around_block_parameters.rb +3 -2
  100. data/lib/rubocop/cop/layout/space_around_equals_in_parameter_default.rb +20 -15
  101. data/lib/rubocop/cop/layout/space_around_keyword.rb +17 -18
  102. data/lib/rubocop/cop/layout/space_around_method_call_operator.rb +33 -66
  103. data/lib/rubocop/cop/layout/space_around_operators.rb +17 -16
  104. data/lib/rubocop/cop/layout/space_before_block_braces.rb +23 -22
  105. data/lib/rubocop/cop/layout/space_before_comma.rb +3 -5
  106. data/lib/rubocop/cop/layout/space_before_comment.rb +10 -7
  107. data/lib/rubocop/cop/layout/space_before_first_arg.rb +7 -7
  108. data/lib/rubocop/cop/layout/space_before_semicolon.rb +2 -5
  109. data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +9 -17
  110. data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +16 -18
  111. data/lib/rubocop/cop/layout/space_inside_array_percent_literal.rb +3 -8
  112. data/lib/rubocop/cop/layout/space_inside_block_braces.rb +17 -16
  113. data/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +16 -19
  114. data/lib/rubocop/cop/layout/space_inside_parens.rb +9 -14
  115. data/lib/rubocop/cop/layout/space_inside_percent_literal_delimiters.rb +5 -10
  116. data/lib/rubocop/cop/layout/space_inside_range_literal.rb +8 -17
  117. data/lib/rubocop/cop/layout/space_inside_reference_brackets.rb +13 -16
  118. data/lib/rubocop/cop/layout/space_inside_string_interpolation.rb +10 -11
  119. data/lib/rubocop/cop/layout/trailing_empty_lines.rb +10 -15
  120. data/lib/rubocop/cop/layout/trailing_whitespace.rb +11 -11
  121. data/lib/rubocop/cop/lint/ambiguous_block_association.rb +7 -4
  122. data/lib/rubocop/cop/lint/ambiguous_operator.rb +15 -10
  123. data/lib/rubocop/cop/lint/ambiguous_regexp_literal.rb +11 -13
  124. data/lib/rubocop/cop/lint/assignment_in_condition.rb +2 -2
  125. data/lib/rubocop/cop/lint/big_decimal_new.rb +10 -10
  126. data/lib/rubocop/cop/lint/binary_operator_with_identical_operands.rb +50 -0
  127. data/lib/rubocop/cop/lint/boolean_symbol.rb +16 -11
  128. data/lib/rubocop/cop/lint/circular_argument_reference.rb +1 -1
  129. data/lib/rubocop/cop/lint/constant_resolution.rb +2 -2
  130. data/lib/rubocop/cop/lint/debugger.rb +7 -1
  131. data/lib/rubocop/cop/lint/deprecated_class_methods.rb +9 -10
  132. data/lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb +21 -17
  133. data/lib/rubocop/cop/lint/disjunctive_assignment_in_constructor.rb +8 -2
  134. data/lib/rubocop/cop/lint/duplicate_case_condition.rb +1 -1
  135. data/lib/rubocop/cop/lint/duplicate_elsif_condition.rb +39 -0
  136. data/lib/rubocop/cop/lint/duplicate_hash_key.rb +1 -1
  137. data/lib/rubocop/cop/lint/duplicate_methods.rb +9 -6
  138. data/lib/rubocop/cop/lint/duplicate_require.rb +41 -0
  139. data/lib/rubocop/cop/lint/duplicate_rescue_exception.rb +49 -0
  140. data/lib/rubocop/cop/lint/each_with_object_argument.rb +1 -1
  141. data/lib/rubocop/cop/lint/else_layout.rb +1 -1
  142. data/lib/rubocop/cop/lint/empty_conditional_body.rb +67 -0
  143. data/lib/rubocop/cop/lint/empty_ensure.rb +5 -5
  144. data/lib/rubocop/cop/lint/empty_expression.rb +2 -2
  145. data/lib/rubocop/cop/lint/empty_file.rb +53 -0
  146. data/lib/rubocop/cop/lint/empty_interpolation.rb +5 -6
  147. data/lib/rubocop/cop/lint/empty_when.rb +2 -2
  148. data/lib/rubocop/cop/lint/ensure_return.rb +27 -29
  149. data/lib/rubocop/cop/lint/erb_new_arguments.rb +11 -10
  150. data/lib/rubocop/cop/lint/flip_flop.rb +1 -1
  151. data/lib/rubocop/cop/lint/float_comparison.rb +93 -0
  152. data/lib/rubocop/cop/lint/float_out_of_range.rb +1 -1
  153. data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +5 -4
  154. data/lib/rubocop/cop/lint/heredoc_method_call_position.rb +13 -14
  155. data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +5 -4
  156. data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +8 -8
  157. data/lib/rubocop/cop/lint/inherit_exception.rb +12 -7
  158. data/lib/rubocop/cop/lint/interpolation_check.rb +18 -15
  159. data/lib/rubocop/cop/lint/literal_as_condition.rb +14 -2
  160. data/lib/rubocop/cop/lint/literal_in_interpolation.rb +7 -7
  161. data/lib/rubocop/cop/lint/loop.rb +23 -2
  162. data/lib/rubocop/cop/lint/missing_cop_enable_directive.rb +6 -5
  163. data/lib/rubocop/cop/lint/missing_super.rb +99 -0
  164. data/lib/rubocop/cop/lint/mixed_regexp_capture_types.rb +3 -36
  165. data/lib/rubocop/cop/lint/multiple_comparison.rb +6 -9
  166. data/lib/rubocop/cop/lint/nested_method_definition.rb +14 -20
  167. data/lib/rubocop/cop/lint/nested_percent_literal.rb +1 -1
  168. data/lib/rubocop/cop/lint/next_without_accumulator.rb +1 -1
  169. data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +82 -11
  170. data/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +2 -2
  171. data/lib/rubocop/cop/lint/number_conversion.rb +6 -9
  172. data/lib/rubocop/cop/lint/ordered_magic_comments.rb +11 -13
  173. data/lib/rubocop/cop/lint/out_of_range_regexp_ref.rb +80 -0
  174. data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +4 -10
  175. data/lib/rubocop/cop/lint/percent_string_array.rb +3 -6
  176. data/lib/rubocop/cop/lint/percent_symbol_array.rb +13 -12
  177. data/lib/rubocop/cop/lint/raise_exception.rb +12 -10
  178. data/lib/rubocop/cop/lint/rand_one.rb +2 -2
  179. data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +16 -19
  180. data/lib/rubocop/cop/lint/redundant_cop_enable_directive.rb +7 -11
  181. data/lib/rubocop/cop/lint/redundant_require_statement.rb +4 -7
  182. data/lib/rubocop/cop/lint/redundant_splat_expansion.rb +13 -9
  183. data/lib/rubocop/cop/lint/redundant_string_coercion.rb +6 -13
  184. data/lib/rubocop/cop/lint/redundant_with_index.rb +11 -14
  185. data/lib/rubocop/cop/lint/redundant_with_object.rb +11 -14
  186. data/lib/rubocop/cop/lint/regexp_as_condition.rb +4 -6
  187. data/lib/rubocop/cop/lint/require_parentheses.rb +2 -2
  188. data/lib/rubocop/cop/lint/rescue_exception.rb +1 -1
  189. data/lib/rubocop/cop/lint/rescue_type.rb +8 -8
  190. data/lib/rubocop/cop/lint/return_in_void_context.rb +2 -4
  191. data/lib/rubocop/cop/lint/safe_navigation_chain.rb +3 -6
  192. data/lib/rubocop/cop/lint/safe_navigation_consistency.rb +14 -10
  193. data/lib/rubocop/cop/lint/safe_navigation_with_empty.rb +7 -7
  194. data/lib/rubocop/cop/lint/script_permission.rb +10 -7
  195. data/lib/rubocop/cop/lint/self_assignment.rb +78 -0
  196. data/lib/rubocop/cop/lint/send_with_mixin_argument.rb +5 -11
  197. data/lib/rubocop/cop/lint/shadowed_argument.rb +3 -3
  198. data/lib/rubocop/cop/lint/shadowed_exception.rb +2 -2
  199. data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +7 -7
  200. data/lib/rubocop/cop/lint/struct_new_override.rb +1 -1
  201. data/lib/rubocop/cop/lint/suppressed_exception.rb +4 -7
  202. data/lib/rubocop/cop/lint/to_json.rb +4 -6
  203. data/lib/rubocop/cop/lint/top_level_return_with_argument.rb +34 -0
  204. data/lib/rubocop/cop/lint/trailing_comma_in_attribute_declaration.rb +57 -0
  205. data/lib/rubocop/cop/lint/underscore_prefixed_variable_name.rb +4 -4
  206. data/lib/rubocop/cop/lint/unified_integer.rb +4 -6
  207. data/lib/rubocop/cop/lint/unreachable_code.rb +1 -1
  208. data/lib/rubocop/cop/lint/unreachable_loop.rb +174 -0
  209. data/lib/rubocop/cop/lint/unused_block_argument.rb +8 -3
  210. data/lib/rubocop/cop/lint/unused_method_argument.rb +8 -3
  211. data/lib/rubocop/cop/lint/uri_escape_unescape.rb +1 -1
  212. data/lib/rubocop/cop/lint/uri_regexp.rb +11 -47
  213. data/lib/rubocop/cop/lint/useless_access_modifier.rb +25 -15
  214. data/lib/rubocop/cop/lint/useless_assignment.rb +4 -4
  215. data/lib/rubocop/cop/lint/useless_else_without_rescue.rb +6 -15
  216. data/lib/rubocop/cop/lint/useless_method_definition.rb +77 -0
  217. data/lib/rubocop/cop/lint/useless_setter_call.rb +4 -6
  218. data/lib/rubocop/cop/lint/void.rb +3 -7
  219. data/lib/rubocop/cop/metrics/abc_size.rb +1 -1
  220. data/lib/rubocop/cop/metrics/block_length.rb +2 -2
  221. data/lib/rubocop/cop/metrics/block_nesting.rb +2 -2
  222. data/lib/rubocop/cop/metrics/class_length.rb +2 -2
  223. data/lib/rubocop/cop/metrics/cyclomatic_complexity.rb +2 -1
  224. data/lib/rubocop/cop/metrics/method_length.rb +2 -2
  225. data/lib/rubocop/cop/metrics/module_length.rb +2 -2
  226. data/lib/rubocop/cop/metrics/parameter_lists.rb +2 -6
  227. data/lib/rubocop/cop/metrics/perceived_complexity.rb +7 -8
  228. data/lib/rubocop/cop/metrics/utils/abc_size_calculator.rb +50 -5
  229. data/lib/rubocop/cop/metrics/utils/code_length_calculator.rb +53 -24
  230. data/lib/rubocop/cop/metrics/utils/repeated_csend_discount.rb +37 -0
  231. data/lib/rubocop/cop/migration/department_name.rb +14 -16
  232. data/lib/rubocop/cop/mixin/alignment.rb +5 -1
  233. data/lib/rubocop/cop/mixin/allowed_methods.rb +2 -0
  234. data/lib/rubocop/cop/mixin/annotation_comment.rb +5 -0
  235. data/lib/rubocop/cop/mixin/array_min_size.rb +1 -1
  236. data/lib/rubocop/cop/mixin/check_line_breakable.rb +17 -8
  237. data/lib/rubocop/cop/mixin/code_length.rb +22 -5
  238. data/lib/rubocop/cop/mixin/comments_help.rb +54 -0
  239. data/lib/rubocop/cop/mixin/empty_lines_around_body.rb +8 -7
  240. data/lib/rubocop/cop/mixin/empty_parameter.rb +3 -1
  241. data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +3 -1
  242. data/lib/rubocop/cop/mixin/first_element_line_break.rb +3 -1
  243. data/lib/rubocop/cop/mixin/hash_transform_method.rb +22 -11
  244. data/lib/rubocop/cop/mixin/line_length_help.rb +1 -3
  245. data/lib/rubocop/cop/mixin/method_complexity.rb +10 -2
  246. data/lib/rubocop/cop/mixin/multiline_element_line_breaks.rb +3 -1
  247. data/lib/rubocop/cop/mixin/multiline_literal_brace_layout.rb +13 -12
  248. data/lib/rubocop/cop/mixin/negative_conditional.rb +2 -2
  249. data/lib/rubocop/cop/mixin/percent_array.rb +16 -9
  250. data/lib/rubocop/cop/mixin/range_help.rb +18 -4
  251. data/lib/rubocop/cop/mixin/regexp_literal_help.rb +1 -1
  252. data/lib/rubocop/cop/mixin/rescue_node.rb +10 -1
  253. data/lib/rubocop/cop/mixin/space_after_punctuation.rb +4 -3
  254. data/lib/rubocop/cop/mixin/space_before_punctuation.rb +4 -3
  255. data/lib/rubocop/cop/mixin/statement_modifier.rb +39 -10
  256. data/lib/rubocop/cop/mixin/surrounding_space.rb +8 -29
  257. data/lib/rubocop/cop/mixin/trailing_comma.rb +9 -11
  258. data/lib/rubocop/cop/mixin/uncommunicative_name.rb +6 -13
  259. data/lib/rubocop/cop/mixin/unused_argument.rb +4 -6
  260. data/lib/rubocop/cop/mixin/visibility_help.rb +50 -0
  261. data/lib/rubocop/cop/naming/accessor_method_name.rb +4 -2
  262. data/lib/rubocop/cop/naming/ascii_identifiers.rb +3 -3
  263. data/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +1 -1
  264. data/lib/rubocop/cop/naming/block_parameter_name.rb +1 -1
  265. data/lib/rubocop/cop/naming/class_and_module_camel_case.rb +2 -2
  266. data/lib/rubocop/cop/naming/constant_name.rb +2 -2
  267. data/lib/rubocop/cop/naming/file_name.rb +3 -3
  268. data/lib/rubocop/cop/naming/heredoc_delimiter_case.rb +2 -2
  269. data/lib/rubocop/cop/naming/heredoc_delimiter_naming.rb +2 -2
  270. data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +2 -2
  271. data/lib/rubocop/cop/naming/method_parameter_name.rb +1 -1
  272. data/lib/rubocop/cop/naming/predicate_name.rb +3 -5
  273. data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +12 -11
  274. data/lib/rubocop/cop/offense.rb +1 -0
  275. data/lib/rubocop/cop/registry.rb +3 -3
  276. data/lib/rubocop/cop/security/eval.rb +2 -2
  277. data/lib/rubocop/cop/security/json_load.rb +6 -8
  278. data/lib/rubocop/cop/security/marshal_load.rb +2 -4
  279. data/lib/rubocop/cop/security/open.rb +2 -2
  280. data/lib/rubocop/cop/security/yaml_load.rb +6 -6
  281. data/lib/rubocop/cop/severity.rb +0 -8
  282. data/lib/rubocop/cop/style/access_modifier_declarations.rb +16 -9
  283. data/lib/rubocop/cop/style/accessor_grouping.rb +33 -20
  284. data/lib/rubocop/cop/style/alias.rb +41 -36
  285. data/lib/rubocop/cop/style/and_or.rb +9 -11
  286. data/lib/rubocop/cop/style/array_coercion.rb +63 -0
  287. data/lib/rubocop/cop/style/array_join.rb +6 -8
  288. data/lib/rubocop/cop/style/ascii_comments.rb +4 -4
  289. data/lib/rubocop/cop/style/attr.rb +11 -9
  290. data/lib/rubocop/cop/style/auto_resource_cleanup.rb +5 -7
  291. data/lib/rubocop/cop/style/bare_percent_literals.rb +10 -12
  292. data/lib/rubocop/cop/style/begin_block.rb +2 -2
  293. data/lib/rubocop/cop/style/bisected_attr_accessor.rb +58 -38
  294. data/lib/rubocop/cop/style/block_comments.rb +14 -18
  295. data/lib/rubocop/cop/style/block_delimiters.rb +23 -23
  296. data/lib/rubocop/cop/style/case_equality.rb +29 -5
  297. data/lib/rubocop/cop/style/case_like_if.rb +236 -0
  298. data/lib/rubocop/cop/style/class_and_module_children.rb +14 -11
  299. data/lib/rubocop/cop/style/class_check.rb +7 -9
  300. data/lib/rubocop/cop/style/class_methods.rb +7 -11
  301. data/lib/rubocop/cop/style/class_methods_definitions.rb +131 -0
  302. data/lib/rubocop/cop/style/class_vars.rb +6 -10
  303. data/lib/rubocop/cop/style/collection_methods.rb +11 -17
  304. data/lib/rubocop/cop/style/colon_method_call.rb +8 -9
  305. data/lib/rubocop/cop/style/colon_method_definition.rb +6 -6
  306. data/lib/rubocop/cop/style/combinable_loops.rb +89 -0
  307. data/lib/rubocop/cop/style/command_literal.rb +23 -24
  308. data/lib/rubocop/cop/style/comment_annotation.rb +15 -15
  309. data/lib/rubocop/cop/style/commented_keyword.rb +6 -3
  310. data/lib/rubocop/cop/style/conditional_assignment.rb +13 -4
  311. data/lib/rubocop/cop/style/constant_visibility.rb +3 -2
  312. data/lib/rubocop/cop/style/copyright.rb +12 -12
  313. data/lib/rubocop/cop/style/date_time.rb +1 -1
  314. data/lib/rubocop/cop/style/def_with_parentheses.rb +8 -10
  315. data/lib/rubocop/cop/style/dir.rb +7 -10
  316. data/lib/rubocop/cop/style/disable_cops_within_source_code_directive.rb +7 -9
  317. data/lib/rubocop/cop/style/documentation.rb +6 -8
  318. data/lib/rubocop/cop/style/documentation_method.rb +1 -1
  319. data/lib/rubocop/cop/style/double_cop_disable_directive.rb +12 -15
  320. data/lib/rubocop/cop/style/double_negation.rb +2 -2
  321. data/lib/rubocop/cop/style/each_for_simple_loop.rb +5 -8
  322. data/lib/rubocop/cop/style/each_with_object.rb +16 -19
  323. data/lib/rubocop/cop/style/empty_block_parameter.rb +9 -10
  324. data/lib/rubocop/cop/style/empty_case_condition.rb +19 -20
  325. data/lib/rubocop/cop/style/empty_else.rb +17 -19
  326. data/lib/rubocop/cop/style/empty_lambda_parameter.rb +9 -10
  327. data/lib/rubocop/cop/style/empty_literal.rb +15 -16
  328. data/lib/rubocop/cop/style/empty_method.rb +10 -13
  329. data/lib/rubocop/cop/style/encoding.rb +5 -9
  330. data/lib/rubocop/cop/style/end_block.rb +4 -6
  331. data/lib/rubocop/cop/style/eval_with_location.rb +9 -7
  332. data/lib/rubocop/cop/style/even_odd.rb +7 -11
  333. data/lib/rubocop/cop/style/expand_path_arguments.rb +21 -20
  334. data/lib/rubocop/cop/style/explicit_block_argument.rb +102 -0
  335. data/lib/rubocop/cop/style/exponential_notation.rb +7 -9
  336. data/lib/rubocop/cop/style/float_division.rb +8 -11
  337. data/lib/rubocop/cop/style/for.rb +11 -15
  338. data/lib/rubocop/cop/style/format_string.rb +21 -19
  339. data/lib/rubocop/cop/style/format_string_token.rb +10 -12
  340. data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +19 -41
  341. data/lib/rubocop/cop/style/global_std_stream.rb +65 -0
  342. data/lib/rubocop/cop/style/global_vars.rb +2 -2
  343. data/lib/rubocop/cop/style/guard_clause.rb +6 -6
  344. data/lib/rubocop/cop/style/hash_as_last_array_item.rb +69 -0
  345. data/lib/rubocop/cop/style/hash_each_methods.rb +5 -8
  346. data/lib/rubocop/cop/style/hash_like_case.rb +76 -0
  347. data/lib/rubocop/cop/style/hash_syntax.rb +10 -8
  348. data/lib/rubocop/cop/style/hash_transform_keys.rb +17 -3
  349. data/lib/rubocop/cop/style/hash_transform_values.rb +16 -2
  350. data/lib/rubocop/cop/style/identical_conditional_branches.rb +2 -2
  351. data/lib/rubocop/cop/style/if_inside_else.rb +3 -3
  352. data/lib/rubocop/cop/style/if_unless_modifier.rb +19 -41
  353. data/lib/rubocop/cop/style/if_unless_modifier_of_if_unless.rb +3 -7
  354. data/lib/rubocop/cop/style/if_with_semicolon.rb +3 -6
  355. data/lib/rubocop/cop/style/implicit_runtime_error.rb +1 -1
  356. data/lib/rubocop/cop/style/infinite_loop.rb +24 -24
  357. data/lib/rubocop/cop/style/inline_comment.rb +3 -3
  358. data/lib/rubocop/cop/style/inverse_methods.rb +22 -32
  359. data/lib/rubocop/cop/style/keyword_parameters_order.rb +58 -0
  360. data/lib/rubocop/cop/style/lambda.rb +7 -12
  361. data/lib/rubocop/cop/style/lambda_call.rb +14 -13
  362. data/lib/rubocop/cop/style/line_end_concatenation.rb +19 -16
  363. data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +2 -1
  364. data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +16 -11
  365. data/lib/rubocop/cop/style/method_call_with_args_parentheses/require_parentheses.rb +4 -8
  366. data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +8 -7
  367. data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +12 -3
  368. data/lib/rubocop/cop/style/method_def_parentheses.rb +11 -16
  369. data/lib/rubocop/cop/style/min_max.rb +8 -12
  370. data/lib/rubocop/cop/style/missing_else.rb +11 -21
  371. data/lib/rubocop/cop/style/missing_respond_to_missing.rb +10 -3
  372. data/lib/rubocop/cop/style/mixin_grouping.rb +24 -27
  373. data/lib/rubocop/cop/style/mixin_usage.rb +1 -1
  374. data/lib/rubocop/cop/style/module_function.rb +10 -13
  375. data/lib/rubocop/cop/style/multiline_if_modifier.rb +3 -10
  376. data/lib/rubocop/cop/style/multiline_if_then.rb +4 -10
  377. data/lib/rubocop/cop/style/multiline_memoization.rb +14 -12
  378. data/lib/rubocop/cop/style/multiline_method_signature.rb +2 -2
  379. data/lib/rubocop/cop/style/multiline_ternary_operator.rb +4 -6
  380. data/lib/rubocop/cop/style/multiline_when_then.rb +9 -11
  381. data/lib/rubocop/cop/style/multiple_comparison.rb +1 -1
  382. data/lib/rubocop/cop/style/mutable_constant.rb +23 -20
  383. data/lib/rubocop/cop/style/negated_if.rb +6 -6
  384. data/lib/rubocop/cop/style/negated_unless.rb +6 -6
  385. data/lib/rubocop/cop/style/negated_while.rb +7 -15
  386. data/lib/rubocop/cop/style/nested_modifier.rb +10 -13
  387. data/lib/rubocop/cop/style/nested_parenthesized_calls.rb +14 -12
  388. data/lib/rubocop/cop/style/nested_ternary_operator.rb +14 -16
  389. data/lib/rubocop/cop/style/next.rb +10 -14
  390. data/lib/rubocop/cop/style/nil_comparison.rb +11 -11
  391. data/lib/rubocop/cop/style/non_nil_check.rb +32 -26
  392. data/lib/rubocop/cop/style/not.rb +19 -26
  393. data/lib/rubocop/cop/style/numeric_literal_prefix.rb +4 -9
  394. data/lib/rubocop/cop/style/numeric_predicate.rb +11 -15
  395. data/lib/rubocop/cop/style/one_line_conditional.rb +71 -23
  396. data/lib/rubocop/cop/style/option_hash.rb +1 -1
  397. data/lib/rubocop/cop/style/optional_arguments.rb +1 -1
  398. data/lib/rubocop/cop/style/optional_boolean_parameter.rb +42 -0
  399. data/lib/rubocop/cop/style/or_assignment.rb +13 -10
  400. data/lib/rubocop/cop/style/parallel_assignment.rb +18 -18
  401. data/lib/rubocop/cop/style/parentheses_around_condition.rb +6 -6
  402. data/lib/rubocop/cop/style/percent_literal_delimiters.rb +14 -20
  403. data/lib/rubocop/cop/style/percent_q_literals.rb +8 -10
  404. data/lib/rubocop/cop/style/perl_backrefs.rb +8 -10
  405. data/lib/rubocop/cop/style/preferred_hash_methods.rb +9 -14
  406. data/lib/rubocop/cop/style/proc.rb +6 -6
  407. data/lib/rubocop/cop/style/raise_args.rb +13 -24
  408. data/lib/rubocop/cop/style/random_with_offset.rb +16 -16
  409. data/lib/rubocop/cop/style/redundant_assignment.rb +8 -10
  410. data/lib/rubocop/cop/style/redundant_begin.rb +7 -9
  411. data/lib/rubocop/cop/style/redundant_capital_w.rb +6 -9
  412. data/lib/rubocop/cop/style/redundant_condition.rb +20 -9
  413. data/lib/rubocop/cop/style/redundant_exception.rb +4 -0
  414. data/lib/rubocop/cop/style/redundant_fetch_block.rb +3 -12
  415. data/lib/rubocop/cop/style/redundant_file_extension_in_require.rb +50 -0
  416. data/lib/rubocop/cop/style/redundant_freeze.rb +3 -6
  417. data/lib/rubocop/cop/style/redundant_interpolation.rb +25 -24
  418. data/lib/rubocop/cop/style/redundant_parentheses.rb +7 -9
  419. data/lib/rubocop/cop/style/redundant_regexp_character_class.rb +6 -13
  420. data/lib/rubocop/cop/style/redundant_regexp_escape.rb +16 -25
  421. data/lib/rubocop/cop/style/redundant_self.rb +2 -2
  422. data/lib/rubocop/cop/style/redundant_self_assignment.rb +116 -0
  423. data/lib/rubocop/cop/style/redundant_sort.rb +26 -12
  424. data/lib/rubocop/cop/style/regexp_literal.rb +10 -21
  425. data/lib/rubocop/cop/style/rescue_modifier.rb +29 -9
  426. data/lib/rubocop/cop/style/return_nil.rb +5 -5
  427. data/lib/rubocop/cop/style/safe_navigation.rb +17 -16
  428. data/lib/rubocop/cop/style/sample.rb +10 -13
  429. data/lib/rubocop/cop/style/self_assignment.rb +26 -22
  430. data/lib/rubocop/cop/style/semicolon.rb +6 -9
  431. data/lib/rubocop/cop/style/send.rb +2 -2
  432. data/lib/rubocop/cop/style/signal_exception.rb +23 -19
  433. data/lib/rubocop/cop/style/single_argument_dig.rb +54 -0
  434. data/lib/rubocop/cop/style/single_line_block_params.rb +4 -2
  435. data/lib/rubocop/cop/style/single_line_methods.rb +18 -17
  436. data/lib/rubocop/cop/style/slicing_with_range.rb +4 -7
  437. data/lib/rubocop/cop/style/sole_nested_conditional.rb +66 -0
  438. data/lib/rubocop/cop/style/special_global_vars.rb +10 -15
  439. data/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +17 -20
  440. data/lib/rubocop/cop/style/stderr_puts.rb +4 -6
  441. data/lib/rubocop/cop/style/string_concatenation.rb +92 -0
  442. data/lib/rubocop/cop/style/string_hash_keys.rb +6 -7
  443. data/lib/rubocop/cop/style/string_methods.rb +7 -17
  444. data/lib/rubocop/cop/style/strip.rb +8 -14
  445. data/lib/rubocop/cop/style/struct_inheritance.rb +4 -7
  446. data/lib/rubocop/cop/style/symbol_array.rb +6 -17
  447. data/lib/rubocop/cop/style/symbol_literal.rb +4 -6
  448. data/lib/rubocop/cop/style/symbol_proc.rb +15 -19
  449. data/lib/rubocop/cop/style/ternary_parentheses.rb +21 -20
  450. data/lib/rubocop/cop/style/trailing_body_on_class.rb +3 -6
  451. data/lib/rubocop/cop/style/trailing_body_on_method_definition.rb +4 -7
  452. data/lib/rubocop/cop/style/trailing_body_on_module.rb +3 -6
  453. data/lib/rubocop/cop/style/trailing_comma_in_arguments.rb +2 -5
  454. data/lib/rubocop/cop/style/trailing_comma_in_array_literal.rb +2 -5
  455. data/lib/rubocop/cop/style/trailing_comma_in_block_args.rb +7 -6
  456. data/lib/rubocop/cop/style/trailing_comma_in_hash_literal.rb +2 -5
  457. data/lib/rubocop/cop/style/trailing_method_end_statement.rb +9 -32
  458. data/lib/rubocop/cop/style/trailing_underscore_variable.rb +8 -17
  459. data/lib/rubocop/cop/style/trivial_accessors.rb +26 -30
  460. data/lib/rubocop/cop/style/unless_else.rb +5 -8
  461. data/lib/rubocop/cop/style/unpack_first.rb +4 -8
  462. data/lib/rubocop/cop/style/variable_interpolation.rb +7 -10
  463. data/lib/rubocop/cop/style/when_then.rb +4 -6
  464. data/lib/rubocop/cop/style/while_until_do.rb +6 -16
  465. data/lib/rubocop/cop/style/while_until_modifier.rb +6 -20
  466. data/lib/rubocop/cop/style/word_array.rb +5 -23
  467. data/lib/rubocop/cop/style/yoda_condition.rb +4 -15
  468. data/lib/rubocop/cop/style/zero_length_predicate.rb +19 -17
  469. data/lib/rubocop/cop/team.rb +2 -1
  470. data/lib/rubocop/cop/tokens_util.rb +84 -0
  471. data/lib/rubocop/cop/util.rb +3 -13
  472. data/lib/rubocop/cop/utils/format_string.rb +3 -5
  473. data/lib/rubocop/cop/variable_force.rb +2 -2
  474. data/lib/rubocop/cop/variable_force/branch.rb +1 -0
  475. data/lib/rubocop/cop/variable_force/variable.rb +7 -5
  476. data/lib/rubocop/cops_documentation_generator.rb +284 -0
  477. data/lib/rubocop/core_ext/string.rb +1 -1
  478. data/lib/rubocop/error.rb +1 -0
  479. data/lib/rubocop/ext/regexp_node.rb +46 -0
  480. data/lib/rubocop/file_finder.rb +13 -12
  481. data/lib/rubocop/formatter/auto_gen_config_formatter.rb +2 -1
  482. data/lib/rubocop/formatter/disabled_config_formatter.rb +2 -2
  483. data/lib/rubocop/formatter/formatter_set.rb +1 -0
  484. data/lib/rubocop/formatter/html_formatter.rb +2 -0
  485. data/lib/rubocop/formatter/junit_formatter.rb +1 -1
  486. data/lib/rubocop/formatter/progress_formatter.rb +2 -1
  487. data/lib/rubocop/formatter/quiet_formatter.rb +1 -1
  488. data/lib/rubocop/formatter/simple_text_formatter.rb +36 -6
  489. data/lib/rubocop/name_similarity.rb +1 -0
  490. data/lib/rubocop/options.rb +9 -6
  491. data/lib/rubocop/path_util.rb +17 -17
  492. data/lib/rubocop/rake_task.rb +1 -0
  493. data/lib/rubocop/remote_config.rb +1 -0
  494. data/lib/rubocop/result_cache.rb +13 -8
  495. data/lib/rubocop/rspec/cop_helper.rb +4 -1
  496. data/lib/rubocop/rspec/expect_offense.rb +49 -7
  497. data/lib/rubocop/rspec/shared_contexts.rb +25 -14
  498. data/lib/rubocop/runner.rb +7 -7
  499. data/lib/rubocop/string_interpreter.rb +3 -0
  500. data/lib/rubocop/target_finder.rb +14 -10
  501. data/lib/rubocop/target_ruby.rb +6 -0
  502. data/lib/rubocop/version.rb +3 -2
  503. data/lib/rubocop/yaml_duplication_checker.rb +1 -0
  504. metadata +42 -8
  505. data/lib/rubocop/cop/lint/useless_comparison.rb +0 -28
  506. data/lib/rubocop/cop/mixin/parser_diagnostic.rb +0 -37
  507. data/lib/rubocop/cop/mixin/too_many_lines.rb +0 -25
  508. 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: b4ab19d9feaaa55fc107e42860eb4fe6a6f0106350edcfee8095b689845106d1
4
- data.tar.gz: b096ab80d7f1c3e1e3ea5b4e32f74f0ce23dc5bf34c06b2fb80893c53cd058dc
3
+ metadata.gz: 39db2826fa916853dc6641e30da24937e009a06b843daf1a7cdb2eca458dfaad
4
+ data.tar.gz: 9a4ffd95ff0401aeee427555d1baf51517e06580becfa9243dac9c75305998aa
5
5
  SHA512:
6
- metadata.gz: d9db7c5ac245ecc290c75144ca7baf37d3f8a39911238f4d8d2866ce019c91b0c0dc2a9cc296c71e2f49d972d16773de3c077734ecef7e5b01f7d693de51a001
7
- data.tar.gz: b9a3b18f4a95be71f2518ef6a2a4946f05079f0239a41c11230e7f60ba509b9d511c160edb0fe288663d41432d1e82aba6b721f6c27604a23a64b0bac674216f
6
+ metadata.gz: 7e502aeecd9ceaeec36624190f4e9b72d075eed552f2e6204e2e842db1a77758f5fd11336f01f400af45bb36b27f13885a27847b17b84595aeef90df6b0db63b
7
+ data.tar.gz: e7ecf12bfc331ef99870f03e034a5154765ceb93c159fdde0fdf8802609c81fa3459250eb3bf6aa7ee140d5c80958783614f5da81585ba75ad9e252afdb8fc50
data/README.md CHANGED
@@ -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.0', require: false
52
+ gem 'rubocop', '~> 0.90.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
@@ -210,9 +210,10 @@ Gemspec/OrderedDependencies:
210
210
  - '**/*.gemspec'
211
211
 
212
212
  Gemspec/RequiredRubyVersion:
213
- Description: 'Checks that `required_ruby_version` of gemspec and `TargetRubyVersion` of .rubocop.yml are equal.'
213
+ Description: 'Checks that `required_ruby_version` of gemspec is specified and equal to `TargetRubyVersion` of .rubocop.yml.'
214
214
  Enabled: true
215
215
  VersionAdded: '0.52'
216
+ VersionChanged: '0.89'
216
217
  Include:
217
218
  - '**/*.gemspec'
218
219
 
@@ -398,7 +399,6 @@ Layout/DefEndAlignment:
398
399
  SupportedStylesAlignWith:
399
400
  - start_of_line
400
401
  - def
401
- AutoCorrect: false
402
402
  Severity: warning
403
403
 
404
404
  Layout/DotPosition:
@@ -435,6 +435,14 @@ Layout/EmptyLineAfterMagicComment:
435
435
  Enabled: true
436
436
  VersionAdded: '0.49'
437
437
 
438
+ Layout/EmptyLineAfterMultilineCondition:
439
+ Description: 'Enforces empty line after multiline condition.'
440
+ # This is disabled, because this style is not very common in practice.
441
+ Enabled: false
442
+ VersionAdded: '0.90'
443
+ Reference:
444
+ - https://github.com/airbnb/ruby#multiline-if-newline
445
+
438
446
  Layout/EmptyLineBetweenDefs:
439
447
  Description: 'Use empty lines between defs.'
440
448
  StyleGuide: '#empty-lines-between-methods'
@@ -554,7 +562,6 @@ Layout/EndAlignment:
554
562
  - keyword
555
563
  - variable
556
564
  - start_of_line
557
- AutoCorrect: false
558
565
  Severity: warning
559
566
 
560
567
  Layout/EndOfLine:
@@ -1234,7 +1241,7 @@ Layout/SpaceInsideBlockBraces:
1234
1241
 
1235
1242
  Layout/SpaceInsideHashLiteralBraces:
1236
1243
  Description: "Use spaces inside hash literal braces - or don't."
1237
- StyleGuide: '#spaces-operators'
1244
+ StyleGuide: '#spaces-braces'
1238
1245
  Enabled: true
1239
1246
  VersionAdded: '0.49'
1240
1247
  EnforcedStyle: space
@@ -1355,6 +1362,12 @@ Lint/BigDecimalNew:
1355
1362
  Enabled: true
1356
1363
  VersionAdded: '0.53'
1357
1364
 
1365
+ Lint/BinaryOperatorWithIdenticalOperands:
1366
+ Description: 'This cop checks for places where binary operator has identical operands.'
1367
+ Enabled: pending
1368
+ Safe: false
1369
+ VersionAdded: '0.89'
1370
+
1358
1371
  Lint/BooleanSymbol:
1359
1372
  Description: 'Check for `:true` and `:false` symbols.'
1360
1373
  Enabled: true
@@ -1397,12 +1410,18 @@ Lint/DisjunctiveAssignmentInConstructor:
1397
1410
  Enabled: true
1398
1411
  Safe: false
1399
1412
  VersionAdded: '0.62'
1413
+ VersionChanged: '0.88'
1400
1414
 
1401
1415
  Lint/DuplicateCaseCondition:
1402
1416
  Description: 'Do not repeat values in case conditionals.'
1403
1417
  Enabled: true
1404
1418
  VersionAdded: '0.45'
1405
1419
 
1420
+ Lint/DuplicateElsifCondition:
1421
+ Description: 'Do not repeat conditions used in if `elsif`.'
1422
+ Enabled: 'pending'
1423
+ VersionAdded: '0.88'
1424
+
1406
1425
  Lint/DuplicateHashKey:
1407
1426
  Description: 'Check for duplicate keys in hash literals.'
1408
1427
  Enabled: true
@@ -1414,6 +1433,16 @@ Lint/DuplicateMethods:
1414
1433
  Enabled: true
1415
1434
  VersionAdded: '0.29'
1416
1435
 
1436
+ Lint/DuplicateRequire:
1437
+ Description: 'Check for duplicate `require`s and `require_relative`s.'
1438
+ Enabled: pending
1439
+ VersionAdded: '0.90'
1440
+
1441
+ Lint/DuplicateRescueException:
1442
+ Description: 'Checks that there are no repeated exceptions used in `rescue` expressions.'
1443
+ Enabled: pending
1444
+ VersionAdded: '0.89'
1445
+
1417
1446
  Lint/EachWithObjectArgument:
1418
1447
  Description: 'Check for immutable argument given to each_with_object.'
1419
1448
  Enabled: true
@@ -1424,18 +1453,29 @@ Lint/ElseLayout:
1424
1453
  Enabled: true
1425
1454
  VersionAdded: '0.17'
1426
1455
 
1456
+ Lint/EmptyConditionalBody:
1457
+ Description: 'This cop checks for the presence of `if`, `elsif` and `unless` branches without a body.'
1458
+ Enabled: 'pending'
1459
+ AllowComments: true
1460
+ VersionAdded: '0.89'
1461
+
1427
1462
  Lint/EmptyEnsure:
1428
1463
  Description: 'Checks for empty ensure block.'
1429
1464
  Enabled: true
1430
1465
  VersionAdded: '0.10'
1431
1466
  VersionChanged: '0.48'
1432
- AutoCorrect: false
1433
1467
 
1434
1468
  Lint/EmptyExpression:
1435
1469
  Description: 'Checks for empty expressions.'
1436
1470
  Enabled: true
1437
1471
  VersionAdded: '0.45'
1438
1472
 
1473
+ Lint/EmptyFile:
1474
+ Description: 'Enforces that Ruby source files are not empty.'
1475
+ Enabled: pending
1476
+ AllowComments: true
1477
+ VersionAdded: '0.90'
1478
+
1439
1479
  Lint/EmptyInterpolation:
1440
1480
  Description: 'Checks for empty string interpolation.'
1441
1481
  Enabled: true
@@ -1467,6 +1507,12 @@ Lint/FlipFlop:
1467
1507
  Enabled: true
1468
1508
  VersionAdded: '0.16'
1469
1509
 
1510
+ Lint/FloatComparison:
1511
+ Description: 'Checks for the presence of precise comparison of floating point numbers.'
1512
+ StyleGuide: '#float-comparison'
1513
+ Enabled: pending
1514
+ VersionAdded: '0.89'
1515
+
1470
1516
  Lint/FloatOutOfRange:
1471
1517
  Description: >-
1472
1518
  Catches floating-point literals too large or small for Ruby to
@@ -1514,7 +1560,7 @@ Lint/InheritException:
1514
1560
  Lint/InterpolationCheck:
1515
1561
  Description: 'Raise warning for interpolation in single q strs.'
1516
1562
  Enabled: true
1517
- SafeAutoCorrect: false
1563
+ Safe: false
1518
1564
  VersionAdded: '0.50'
1519
1565
  VersionChanged: '0.87'
1520
1566
 
@@ -1536,6 +1582,7 @@ Lint/Loop:
1536
1582
  StyleGuide: '#loop-with-break'
1537
1583
  Enabled: true
1538
1584
  VersionAdded: '0.9'
1585
+ VersionChanged: '0.89'
1539
1586
 
1540
1587
  Lint/MissingCopEnableDirective:
1541
1588
  Description: 'Checks for a `# rubocop:enable` after `# rubocop:disable`.'
@@ -1550,6 +1597,13 @@ Lint/MissingCopEnableDirective:
1550
1597
  # .inf for any size
1551
1598
  MaximumRangeSize: .inf
1552
1599
 
1600
+ Lint/MissingSuper:
1601
+ Description: >-
1602
+ This cop checks for the presence of constructors and lifecycle callbacks
1603
+ without calls to `super`'.
1604
+ Enabled: pending
1605
+ VersionAdded: '0.89'
1606
+
1553
1607
  Lint/MixedRegexpCaptureTypes:
1554
1608
  Description: 'Do not mix named captures and numbered captures in a Regexp literal.'
1555
1609
  Enabled: pending
@@ -1602,6 +1656,12 @@ Lint/OrderedMagicComments:
1602
1656
  Enabled: true
1603
1657
  VersionAdded: '0.53'
1604
1658
 
1659
+ Lint/OutOfRangeRegexpRef:
1660
+ Description: 'Checks for out of range reference for Regexp because it always returns nil.'
1661
+ Enabled: pending
1662
+ Safe: false
1663
+ VersionAdded: '0.89'
1664
+
1605
1665
  Lint/ParenthesesAsGroupedExpression:
1606
1666
  Description: >-
1607
1667
  Checks for method calls with a space before the opening
@@ -1752,6 +1812,11 @@ Lint/ScriptPermission:
1752
1812
  VersionAdded: '0.49'
1753
1813
  VersionChanged: '0.50'
1754
1814
 
1815
+ Lint/SelfAssignment:
1816
+ Description: 'Checks for self-assignments.'
1817
+ Enabled: pending
1818
+ VersionAdded: '0.89'
1819
+
1755
1820
  Lint/SendWithMixinArgument:
1756
1821
  Description: 'Checks for `send` method when using mixin.'
1757
1822
  Enabled: true
@@ -1802,6 +1867,16 @@ Lint/ToJSON:
1802
1867
  Enabled: true
1803
1868
  VersionAdded: '0.66'
1804
1869
 
1870
+ Lint/TopLevelReturnWithArgument:
1871
+ Description: 'This cop detects top level return statements with argument.'
1872
+ Enabled: 'pending'
1873
+ VersionAdded: '0.89'
1874
+
1875
+ Lint/TrailingCommaInAttributeDeclaration:
1876
+ Description: 'This cop checks for trailing commas in attribute declarations.'
1877
+ Enabled: pending
1878
+ VersionAdded: '0.90'
1879
+
1805
1880
  Lint/UnderscorePrefixedVariableName:
1806
1881
  Description: 'Do not use prefix `_` for a variable that is used.'
1807
1882
  Enabled: true
@@ -1818,6 +1893,11 @@ Lint/UnreachableCode:
1818
1893
  Enabled: true
1819
1894
  VersionAdded: '0.9'
1820
1895
 
1896
+ Lint/UnreachableLoop:
1897
+ Description: 'This cop checks for loops that will have at most one iteration.'
1898
+ Enabled: pending
1899
+ VersionAdded: '0.89'
1900
+
1821
1901
  Lint/UnusedBlockArgument:
1822
1902
  Description: 'Checks for unused block arguments.'
1823
1903
  StyleGuide: '#underscore-unused-vars'
@@ -1867,16 +1947,18 @@ Lint/UselessAssignment:
1867
1947
  Enabled: true
1868
1948
  VersionAdded: '0.11'
1869
1949
 
1870
- Lint/UselessComparison:
1871
- Description: 'Checks for comparison of something with itself.'
1872
- Enabled: true
1873
- VersionAdded: '0.11'
1874
-
1875
1950
  Lint/UselessElseWithoutRescue:
1876
1951
  Description: 'Checks for useless `else` in `begin..end` without `rescue`.'
1877
1952
  Enabled: true
1878
1953
  VersionAdded: '0.17'
1879
1954
 
1955
+ Lint/UselessMethodDefinition:
1956
+ Description: 'Checks for useless method definitions.'
1957
+ Enabled: pending
1958
+ VersionAdded: '0.90'
1959
+ Safe: false
1960
+ AllowComments: true
1961
+
1880
1962
  Lint/UselessSetterCall:
1881
1963
  Description: 'Checks for useless setter call to a local variable.'
1882
1964
  Enabled: true
@@ -1905,7 +1987,7 @@ Metrics/AbcSize:
1905
1987
  # The ABC size is a calculated magnitude, so this number can be an Integer or
1906
1988
  # a Float.
1907
1989
  IgnoredMethods: []
1908
- Max: 15
1990
+ Max: 17
1909
1991
 
1910
1992
  Metrics/BlockLength:
1911
1993
  Description: 'Avoid long blocks with many lines.'
@@ -1987,7 +2069,7 @@ Metrics/PerceivedComplexity:
1987
2069
  VersionAdded: '0.25'
1988
2070
  VersionChanged: '0.81'
1989
2071
  IgnoredMethods: []
1990
- Max: 7
2072
+ Max: 8
1991
2073
 
1992
2074
  ################## Migration #############################
1993
2075
 
@@ -2179,17 +2261,18 @@ Naming/MethodParameterName:
2179
2261
  AllowNamesEndingInNumbers: true
2180
2262
  # Allowed names that will not register an offense
2181
2263
  AllowedNames:
2182
- - io
2183
- - id
2184
- - to
2264
+ - at
2185
2265
  - by
2186
- - 'on'
2266
+ - db
2267
+ - id
2187
2268
  - in
2188
- - at
2269
+ - io
2189
2270
  - ip
2190
- - db
2271
+ - of
2272
+ - 'on'
2191
2273
  - os
2192
2274
  - pp
2275
+ - to
2193
2276
  # Forbidden names that will register an offense
2194
2277
  ForbiddenNames: []
2195
2278
 
@@ -2340,6 +2423,15 @@ Style/AndOr:
2340
2423
  - always
2341
2424
  - conditionals
2342
2425
 
2426
+ Style/ArrayCoercion:
2427
+ Description: >-
2428
+ Use Array() instead of explicit Array check or [*var], when dealing
2429
+ with a variable you want to treat as an Array, but you're not certain it's an array.
2430
+ StyleGuide: '#array-coercion'
2431
+ Safe: false
2432
+ Enabled: 'pending'
2433
+ VersionAdded: '0.88'
2434
+
2343
2435
  Style/ArrayJoin:
2344
2436
  Description: 'Use Array#join instead of Array#*.'
2345
2437
  StyleGuide: '#array-join'
@@ -2512,6 +2604,7 @@ Style/CaseEquality:
2512
2604
  StyleGuide: '#no-case-equality'
2513
2605
  Enabled: true
2514
2606
  VersionAdded: '0.9'
2607
+ VersionChanged: '0.89'
2515
2608
  # If AllowOnConstant is enabled, the cop will ignore violations when the receiver of
2516
2609
  # the case equality operator is a constant.
2517
2610
  #
@@ -2522,6 +2615,13 @@ Style/CaseEquality:
2522
2615
  # String === "string"
2523
2616
  AllowOnConstant: false
2524
2617
 
2618
+ Style/CaseLikeIf:
2619
+ Description: 'This cop identifies places where `if-elsif` constructions can be replaced with `case-when`.'
2620
+ StyleGuide: '#case-vs-if-else'
2621
+ Enabled: 'pending'
2622
+ Safe: false
2623
+ VersionAdded: '0.88'
2624
+
2525
2625
  Style/CharacterLiteral:
2526
2626
  Description: 'Checks for uses of character literals.'
2527
2627
  StyleGuide: '#no-character-literals'
@@ -2537,7 +2637,6 @@ Style/ClassAndModuleChildren:
2537
2637
  # have the knowledge to perform either operation safely and thus requires
2538
2638
  # manual oversight.
2539
2639
  SafeAutoCorrect: false
2540
- AutoCorrect: false
2541
2640
  Enabled: true
2542
2641
  VersionAdded: '0.19'
2543
2642
  #
@@ -2576,6 +2675,16 @@ Style/ClassMethods:
2576
2675
  VersionAdded: '0.9'
2577
2676
  VersionChanged: '0.20'
2578
2677
 
2678
+ Style/ClassMethodsDefinitions:
2679
+ Description: 'Enforces using `def self.method_name` or `class << self` to define class methods.'
2680
+ StyleGuide: '#def-self-class-methods'
2681
+ Enabled: false
2682
+ VersionAdded: '0.89'
2683
+ EnforcedStyle: def_self
2684
+ SupportedStyles:
2685
+ - def_self
2686
+ - self_class
2687
+
2579
2688
  Style/ClassVars:
2580
2689
  Description: 'Avoid the use of class variables.'
2581
2690
  StyleGuide: '#no-class-vars'
@@ -2616,6 +2725,14 @@ Style/ColonMethodDefinition:
2616
2725
  Enabled: true
2617
2726
  VersionAdded: '0.52'
2618
2727
 
2728
+ Style/CombinableLoops:
2729
+ Description: >-
2730
+ Checks for places where multiple consecutive loops over the same data
2731
+ can be combined into a single loop.
2732
+ Enabled: pending
2733
+ Safe: false
2734
+ VersionAdded: '0.90'
2735
+
2619
2736
  Style/CommandLiteral:
2620
2737
  Description: 'Use `` or %x around command literals.'
2621
2738
  StyleGuide: '#percent-x'
@@ -2859,6 +2976,16 @@ Style/ExpandPathArguments:
2859
2976
  Enabled: true
2860
2977
  VersionAdded: '0.53'
2861
2978
 
2979
+ Style/ExplicitBlockArgument:
2980
+ Description: >-
2981
+ Consider using explicit block argument to avoid writing block literal
2982
+ that just passes its arguments to another block.
2983
+ StyleGuide: '#block-argument'
2984
+ Enabled: pending
2985
+ # May change the yielding arity.
2986
+ Safe: false
2987
+ VersionAdded: '0.89'
2988
+
2862
2989
  Style/ExponentialNotation:
2863
2990
  Description: 'When using exponential notation, favor a mantissa between 1 (inclusive) and 10 (exclusive).'
2864
2991
  StyleGuide: '#exponential-notation'
@@ -2940,7 +3067,13 @@ Style/FrozenStringLiteralComment:
2940
3067
  # `never` will enforce that the frozen string literal comment does not
2941
3068
  # exist in a file.
2942
3069
  - never
2943
- Safe: false
3070
+ SafeAutoCorrect: false
3071
+
3072
+ Style/GlobalStdStream:
3073
+ Description: 'Enforces the use of `$stdout/$stderr/$stdin` instead of `STDOUT/STDERR/STDIN`.'
3074
+ StyleGuide: '#global-stdout'
3075
+ Enabled: pending
3076
+ VersionAdded: '0.89'
2944
3077
 
2945
3078
  Style/GlobalVars:
2946
3079
  Description: 'Do not introduce global variables.'
@@ -2961,6 +3094,18 @@ Style/GuardClause:
2961
3094
  # needs to have to trigger this cop
2962
3095
  MinBodyLength: 1
2963
3096
 
3097
+ Style/HashAsLastArrayItem:
3098
+ Description: >-
3099
+ Checks for presence or absence of braces around hash literal as a last
3100
+ array item depending on configuration.
3101
+ StyleGuide: '#hash-literal-as-last-array-item'
3102
+ Enabled: 'pending'
3103
+ VersionAdded: '0.88'
3104
+ EnforcedStyle: braces
3105
+ SupportedStyles:
3106
+ - braces
3107
+ - no_braces
3108
+
2964
3109
  Style/HashEachMethods:
2965
3110
  Description: 'Use Hash#each_key and Hash#each_value.'
2966
3111
  StyleGuide: '#hash-each'
@@ -2968,6 +3113,16 @@ Style/HashEachMethods:
2968
3113
  VersionAdded: '0.80'
2969
3114
  Safe: false
2970
3115
 
3116
+ Style/HashLikeCase:
3117
+ Description: >-
3118
+ Checks for places where `case-when` represents a simple 1:1
3119
+ mapping and can be replaced with a hash lookup.
3120
+ Enabled: 'pending'
3121
+ VersionAdded: '0.88'
3122
+ # `MinBranchesCount` defines the number of branches `case` needs to have
3123
+ # to trigger this cop
3124
+ MinBranchesCount: 3
3125
+
2971
3126
  Style/HashSyntax:
2972
3127
  Description: >-
2973
3128
  Prefer Ruby 1.9 hash syntax { a: 1, b: 2 } over 1.8 syntax
@@ -2992,15 +3147,17 @@ Style/HashSyntax:
2992
3147
  PreferHashRocketsForNonAlnumEndingSymbols: false
2993
3148
 
2994
3149
  Style/HashTransformKeys:
2995
- Description: 'Prefer `transform_keys` over `each_with_object` and `map`.'
3150
+ Description: 'Prefer `transform_keys` over `each_with_object`, `map`, or `to_h`.'
2996
3151
  Enabled: 'pending'
2997
3152
  VersionAdded: '0.80'
3153
+ VersionChanged: '0.90'
2998
3154
  Safe: false
2999
3155
 
3000
3156
  Style/HashTransformValues:
3001
- Description: 'Prefer `transform_values` over `each_with_object` and `map`.'
3157
+ Description: 'Prefer `transform_values` over `each_with_object`, `map`, or `to_h`.'
3002
3158
  Enabled: 'pending'
3003
3159
  VersionAdded: '0.80'
3160
+ VersionChanged: '0.90'
3004
3161
  Safe: false
3005
3162
 
3006
3163
  Style/IdenticalConditionalBranches:
@@ -3097,6 +3254,12 @@ Style/IpAddresses:
3097
3254
  - "::"
3098
3255
  # :: is a valid IPv6 address, but could potentially be legitimately in code
3099
3256
 
3257
+ Style/KeywordParametersOrder:
3258
+ Description: 'Enforces that optional keyword parameters are placed at the end of the parameters list.'
3259
+ StyleGuide: '#keyword-parameters-order'
3260
+ Enabled: pending
3261
+ VersionAdded: '0.90'
3262
+
3100
3263
  Style/Lambda:
3101
3264
  Description: 'Use the new lambda literal syntax for single-line blocks.'
3102
3265
  StyleGuide: '#lambda-multi-line'
@@ -3175,12 +3338,6 @@ Style/MethodDefParentheses:
3175
3338
  - require_no_parentheses
3176
3339
  - require_no_parentheses_except_multiline
3177
3340
 
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
3341
  Style/MinMax:
3185
3342
  Description: >-
3186
3343
  Use `Enumerable#minmax` instead of `Enumerable#min`
@@ -3476,7 +3633,6 @@ Style/NumericPredicate:
3476
3633
  # object. Switching these methods has to be done with knowledge of the types
3477
3634
  # of the variables which rubocop doesn't have.
3478
3635
  SafeAutoCorrect: false
3479
- AutoCorrect: false
3480
3636
  Enabled: true
3481
3637
  VersionAdded: '0.42'
3482
3638
  VersionChanged: '0.59'
@@ -3492,12 +3648,13 @@ Style/NumericPredicate:
3492
3648
 
3493
3649
  Style/OneLineConditional:
3494
3650
  Description: >-
3495
- Favor the ternary operator(?:) over
3496
- if/then/else/end constructs.
3651
+ Favor the ternary operator (?:) or multi-line constructs over
3652
+ single-line if/then/else/end constructs.
3497
3653
  StyleGuide: '#ternary-operator'
3498
3654
  Enabled: true
3655
+ AlwaysCorrectToMultiline: false
3499
3656
  VersionAdded: '0.9'
3500
- VersionChanged: '0.38'
3657
+ VersionChanged: '0.90'
3501
3658
 
3502
3659
  Style/OptionHash:
3503
3660
  Description: "Don't use option hashes when you can use keyword arguments."
@@ -3522,6 +3679,13 @@ Style/OptionalArguments:
3522
3679
  VersionAdded: '0.33'
3523
3680
  VersionChanged: '0.83'
3524
3681
 
3682
+ Style/OptionalBooleanParameter:
3683
+ Description: 'Use keyword arguments when defining method with boolean argument.'
3684
+ StyleGuide: '#boolean-keyword-arguments'
3685
+ Enabled: pending
3686
+ Safe: false
3687
+ VersionAdded: '0.89'
3688
+
3525
3689
  Style/OrAssignment:
3526
3690
  Description: 'Recommend usage of double pipe equals (||=) where applicable.'
3527
3691
  StyleGuide: '#double-pipe-for-uninit'
@@ -3665,6 +3829,14 @@ Style/RedundantFetchBlock:
3665
3829
  SafeForConstants: false
3666
3830
  VersionAdded: '0.86'
3667
3831
 
3832
+ Style/RedundantFileExtensionInRequire:
3833
+ Description: >-
3834
+ Checks for the presence of superfluous `.rb` extension in
3835
+ the filename provided to `require` and `require_relative`.
3836
+ StyleGuide: '#no-explicit-rb-to-require'
3837
+ Enabled: 'pending'
3838
+ VersionAdded: '0.88'
3839
+
3668
3840
  Style/RedundantFreeze:
3669
3841
  Description: "Checks usages of Object#freeze on immutable objects."
3670
3842
  Enabled: true
@@ -3713,6 +3885,12 @@ Style/RedundantSelf:
3713
3885
  VersionAdded: '0.10'
3714
3886
  VersionChanged: '0.13'
3715
3887
 
3888
+ Style/RedundantSelfAssignment:
3889
+ Description: 'Checks for places where redundant assignments are made for in place modification methods.'
3890
+ Enabled: pending
3891
+ Safe: false
3892
+ VersionAdded: '0.90'
3893
+
3716
3894
  Style/RedundantSort:
3717
3895
  Description: >-
3718
3896
  Use `min` instead of `sort.first`,
@@ -3832,6 +4010,12 @@ Style/SignalException:
3832
4010
  - only_fail
3833
4011
  - semantic
3834
4012
 
4013
+ Style/SingleArgumentDig:
4014
+ Description: 'Avoid using single argument dig method.'
4015
+ Enabled: pending
4016
+ VersionAdded: '0.89'
4017
+ Safe: false
4018
+
3835
4019
  Style/SingleLineBlockParams:
3836
4020
  Description: 'Enforces the names of some block params.'
3837
4021
  Enabled: false
@@ -3859,6 +4043,14 @@ Style/SlicingWithRange:
3859
4043
  VersionAdded: '0.83'
3860
4044
  Safe: false
3861
4045
 
4046
+ Style/SoleNestedConditional:
4047
+ Description: >-
4048
+ Finds sole nested conditional nodes
4049
+ which can be merged into outer conditional node.
4050
+ Enabled: pending
4051
+ VersionAdded: '0.89'
4052
+ AllowModifier: false
4053
+
3862
4054
  Style/SpecialGlobalVars:
3863
4055
  Description: 'Avoid Perl-style global variables.'
3864
4056
  StyleGuide: '#no-cryptic-perlisms'
@@ -3887,6 +4079,13 @@ Style/StderrPuts:
3887
4079
  Enabled: true
3888
4080
  VersionAdded: '0.51'
3889
4081
 
4082
+ Style/StringConcatenation:
4083
+ Description: 'Checks for places where string concatenation can be replaced with string interpolation.'
4084
+ StyleGuide: '#string-interpolation'
4085
+ Enabled: pending
4086
+ Safe: false
4087
+ VersionAdded: '0.89'
4088
+
3890
4089
  Style/StringHashKeys:
3891
4090
  Description: 'Prefer symbols instead of strings as hash keys.'
3892
4091
  StyleGuide: '#symbols-as-keys'