rubocop 0.89.0 → 0.92.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (416) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -2
  3. data/config/default.yml +128 -14
  4. data/lib/rubocop.rb +30 -4
  5. data/lib/rubocop/cached_data.rb +1 -0
  6. data/lib/rubocop/cli/command.rb +1 -0
  7. data/lib/rubocop/cli/command/auto_genenerate_config.rb +1 -0
  8. data/lib/rubocop/cli/command/base.rb +1 -0
  9. data/lib/rubocop/cli/command/execute_runner.rb +9 -0
  10. data/lib/rubocop/cli/command/init_dotfile.rb +1 -0
  11. data/lib/rubocop/cli/command/show_cops.rb +2 -1
  12. data/lib/rubocop/cli/command/version.rb +1 -0
  13. data/lib/rubocop/cli/environment.rb +1 -0
  14. data/lib/rubocop/comment_config.rb +17 -10
  15. data/lib/rubocop/config.rb +1 -1
  16. data/lib/rubocop/config_loader.rb +21 -10
  17. data/lib/rubocop/config_loader_resolver.rb +1 -0
  18. data/lib/rubocop/config_obsoletion.rb +1 -0
  19. data/lib/rubocop/config_regeneration.rb +33 -0
  20. data/lib/rubocop/config_store.rb +3 -3
  21. data/lib/rubocop/config_validator.rb +4 -1
  22. data/lib/rubocop/cop/base.rb +23 -0
  23. data/lib/rubocop/cop/bundler/duplicated_gem.rb +5 -1
  24. data/lib/rubocop/cop/bundler/gem_comment.rb +8 -3
  25. data/lib/rubocop/cop/bundler/insecure_protocol_source.rb +2 -0
  26. data/lib/rubocop/cop/commissioner.rb +47 -7
  27. data/lib/rubocop/cop/correctors/alignment_corrector.rb +4 -4
  28. data/lib/rubocop/cop/correctors/condition_corrector.rb +3 -5
  29. data/lib/rubocop/cop/correctors/empty_line_corrector.rb +9 -10
  30. data/lib/rubocop/cop/correctors/line_break_corrector.rb +4 -4
  31. data/lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb +8 -3
  32. data/lib/rubocop/cop/correctors/parentheses_corrector.rb +5 -8
  33. data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +5 -10
  34. data/lib/rubocop/cop/correctors/punctuation_corrector.rb +8 -10
  35. data/lib/rubocop/cop/documentation.rb +22 -0
  36. data/lib/rubocop/cop/generator.rb +2 -1
  37. data/lib/rubocop/cop/internal_affairs/method_name_equal.rb +1 -0
  38. data/lib/rubocop/cop/internal_affairs/node_type_predicate.rb +1 -0
  39. data/lib/rubocop/cop/internal_affairs/offense_location_keyword.rb +1 -0
  40. data/lib/rubocop/cop/internal_affairs/redundant_location_argument.rb +1 -0
  41. data/lib/rubocop/cop/internal_affairs/redundant_message_argument.rb +1 -0
  42. data/lib/rubocop/cop/layout/array_alignment.rb +1 -0
  43. data/lib/rubocop/cop/layout/begin_end_alignment.rb +77 -0
  44. data/lib/rubocop/cop/layout/block_alignment.rb +23 -19
  45. data/lib/rubocop/cop/layout/case_indentation.rb +4 -7
  46. data/lib/rubocop/cop/layout/class_structure.rb +14 -17
  47. data/lib/rubocop/cop/layout/closing_heredoc_indentation.rb +4 -6
  48. data/lib/rubocop/cop/layout/comment_indentation.rb +1 -1
  49. data/lib/rubocop/cop/layout/condition_position.rb +13 -15
  50. data/lib/rubocop/cop/layout/def_end_alignment.rb +8 -5
  51. data/lib/rubocop/cop/layout/dot_position.rb +21 -17
  52. data/lib/rubocop/cop/layout/empty_comment.rb +30 -23
  53. data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +21 -18
  54. data/lib/rubocop/cop/layout/empty_line_after_magic_comment.rb +13 -13
  55. data/lib/rubocop/cop/layout/empty_line_after_multiline_condition.rb +136 -0
  56. data/lib/rubocop/cop/layout/empty_line_between_defs.rb +21 -23
  57. data/lib/rubocop/cop/layout/empty_lines.rb +6 -7
  58. data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +18 -14
  59. data/lib/rubocop/cop/layout/empty_lines_around_arguments.rb +7 -8
  60. data/lib/rubocop/cop/layout/empty_lines_around_attribute_accessor.rb +4 -7
  61. data/lib/rubocop/cop/layout/empty_lines_around_begin_body.rb +2 -5
  62. data/lib/rubocop/cop/layout/empty_lines_around_block_body.rb +2 -5
  63. data/lib/rubocop/cop/layout/empty_lines_around_class_body.rb +2 -5
  64. data/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +3 -7
  65. data/lib/rubocop/cop/layout/empty_lines_around_method_body.rb +2 -5
  66. data/lib/rubocop/cop/layout/empty_lines_around_module_body.rb +2 -5
  67. data/lib/rubocop/cop/layout/end_alignment.rb +11 -17
  68. data/lib/rubocop/cop/layout/extra_spacing.rb +14 -21
  69. data/lib/rubocop/cop/layout/first_array_element_line_break.rb +2 -5
  70. data/lib/rubocop/cop/layout/first_hash_element_line_break.rb +2 -5
  71. data/lib/rubocop/cop/layout/first_method_argument_line_break.rb +4 -8
  72. data/lib/rubocop/cop/layout/first_method_parameter_line_break.rb +2 -5
  73. data/lib/rubocop/cop/layout/hash_alignment.rb +17 -20
  74. data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +15 -14
  75. data/lib/rubocop/cop/layout/heredoc_indentation.rb +14 -11
  76. data/lib/rubocop/cop/layout/initial_indentation.rb +6 -7
  77. data/lib/rubocop/cop/layout/leading_comment_space.rb +12 -10
  78. data/lib/rubocop/cop/layout/leading_empty_lines.rb +6 -11
  79. data/lib/rubocop/cop/layout/multiline_array_brace_layout.rb +2 -5
  80. data/lib/rubocop/cop/layout/multiline_array_line_breaks.rb +2 -5
  81. data/lib/rubocop/cop/layout/multiline_assignment_layout.rb +10 -14
  82. data/lib/rubocop/cop/layout/multiline_block_layout.rb +21 -19
  83. data/lib/rubocop/cop/layout/multiline_hash_brace_layout.rb +2 -5
  84. data/lib/rubocop/cop/layout/multiline_hash_key_line_breaks.rb +2 -5
  85. data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +5 -9
  86. data/lib/rubocop/cop/layout/multiline_method_call_brace_layout.rb +2 -5
  87. data/lib/rubocop/cop/layout/multiline_method_definition_brace_layout.rb +2 -5
  88. data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +41 -22
  89. data/lib/rubocop/cop/layout/space_after_colon.rb +11 -7
  90. data/lib/rubocop/cop/layout/space_after_comma.rb +2 -5
  91. data/lib/rubocop/cop/layout/space_after_method_name.rb +5 -6
  92. data/lib/rubocop/cop/layout/space_after_not.rb +9 -11
  93. data/lib/rubocop/cop/layout/space_after_semicolon.rb +2 -5
  94. data/lib/rubocop/cop/layout/space_around_equals_in_parameter_default.rb +22 -17
  95. data/lib/rubocop/cop/layout/space_around_keyword.rb +17 -18
  96. data/lib/rubocop/cop/layout/space_around_operators.rb +17 -16
  97. data/lib/rubocop/cop/layout/space_before_block_braces.rb +23 -22
  98. data/lib/rubocop/cop/layout/space_before_comma.rb +3 -5
  99. data/lib/rubocop/cop/layout/space_before_comment.rb +10 -7
  100. data/lib/rubocop/cop/layout/space_before_first_arg.rb +7 -7
  101. data/lib/rubocop/cop/layout/space_before_semicolon.rb +2 -5
  102. data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +9 -17
  103. data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +20 -23
  104. data/lib/rubocop/cop/layout/space_inside_array_percent_literal.rb +3 -8
  105. data/lib/rubocop/cop/layout/space_inside_block_braces.rb +17 -16
  106. data/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +19 -37
  107. data/lib/rubocop/cop/layout/space_inside_parens.rb +9 -14
  108. data/lib/rubocop/cop/layout/space_inside_percent_literal_delimiters.rb +5 -10
  109. data/lib/rubocop/cop/layout/space_inside_range_literal.rb +8 -17
  110. data/lib/rubocop/cop/layout/space_inside_reference_brackets.rb +16 -24
  111. data/lib/rubocop/cop/layout/space_inside_string_interpolation.rb +12 -13
  112. data/lib/rubocop/cop/layout/trailing_empty_lines.rb +10 -15
  113. data/lib/rubocop/cop/layout/trailing_whitespace.rb +11 -11
  114. data/lib/rubocop/cop/lint/ambiguous_operator.rb +2 -0
  115. data/lib/rubocop/cop/lint/big_decimal_new.rb +1 -2
  116. data/lib/rubocop/cop/lint/binary_operator_with_identical_operands.rb +2 -1
  117. data/lib/rubocop/cop/lint/constant_definition_in_block.rb +74 -0
  118. data/lib/rubocop/cop/lint/constant_resolution.rb +1 -1
  119. data/lib/rubocop/cop/lint/debugger.rb +2 -3
  120. data/lib/rubocop/cop/lint/deprecated_class_methods.rb +1 -3
  121. data/lib/rubocop/cop/lint/duplicate_methods.rb +2 -4
  122. data/lib/rubocop/cop/lint/duplicate_require.rb +46 -0
  123. data/lib/rubocop/cop/lint/duplicate_rescue_exception.rb +2 -15
  124. data/lib/rubocop/cop/lint/each_with_object_argument.rb +1 -0
  125. data/lib/rubocop/cop/lint/empty_file.rb +50 -0
  126. data/lib/rubocop/cop/lint/erb_new_arguments.rb +2 -0
  127. data/lib/rubocop/cop/lint/float_comparison.rb +2 -2
  128. data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +2 -2
  129. data/lib/rubocop/cop/lint/identity_comparison.rb +51 -0
  130. data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +2 -5
  131. data/lib/rubocop/cop/lint/inherit_exception.rb +2 -2
  132. data/lib/rubocop/cop/lint/missing_super.rb +11 -11
  133. data/lib/rubocop/cop/lint/mixed_regexp_capture_types.rb +2 -35
  134. data/lib/rubocop/cop/lint/multiple_comparison.rb +3 -1
  135. data/lib/rubocop/cop/lint/number_conversion.rb +1 -0
  136. data/lib/rubocop/cop/lint/out_of_range_regexp_ref.rb +33 -15
  137. data/lib/rubocop/cop/lint/percent_string_array.rb +8 -12
  138. data/lib/rubocop/cop/lint/raise_exception.rb +1 -0
  139. data/lib/rubocop/cop/lint/rand_one.rb +2 -1
  140. data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +36 -29
  141. data/lib/rubocop/cop/lint/redundant_cop_enable_directive.rb +14 -4
  142. data/lib/rubocop/cop/lint/redundant_require_statement.rb +1 -0
  143. data/lib/rubocop/cop/lint/rescue_type.rb +0 -1
  144. data/lib/rubocop/cop/lint/send_with_mixin_argument.rb +3 -1
  145. data/lib/rubocop/cop/lint/shadowed_exception.rb +6 -6
  146. data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +4 -4
  147. data/lib/rubocop/cop/lint/struct_new_override.rb +1 -0
  148. data/lib/rubocop/cop/lint/to_json.rb +16 -5
  149. data/lib/rubocop/cop/lint/top_level_return_with_argument.rb +1 -1
  150. data/lib/rubocop/cop/lint/trailing_comma_in_attribute_declaration.rb +57 -0
  151. data/lib/rubocop/cop/lint/unreachable_loop.rb +3 -6
  152. data/lib/rubocop/cop/lint/uri_escape_unescape.rb +3 -1
  153. data/lib/rubocop/cop/lint/uri_regexp.rb +10 -25
  154. data/lib/rubocop/cop/lint/useless_access_modifier.rb +3 -9
  155. data/lib/rubocop/cop/lint/useless_method_definition.rb +70 -0
  156. data/lib/rubocop/cop/lint/useless_times.rb +106 -0
  157. data/lib/rubocop/cop/metrics/utils/abc_size_calculator.rb +27 -16
  158. data/lib/rubocop/cop/metrics/utils/code_length_calculator.rb +1 -0
  159. data/lib/rubocop/cop/migration/department_name.rb +2 -2
  160. data/lib/rubocop/cop/mixin/alignment.rb +5 -1
  161. data/lib/rubocop/cop/mixin/allowed_methods.rb +2 -0
  162. data/lib/rubocop/cop/mixin/annotation_comment.rb +5 -0
  163. data/lib/rubocop/cop/mixin/check_line_breakable.rb +17 -8
  164. data/lib/rubocop/cop/mixin/comments_help.rb +48 -0
  165. data/lib/rubocop/cop/mixin/configurable_naming.rb +2 -2
  166. data/lib/rubocop/cop/mixin/configurable_numbering.rb +3 -3
  167. data/lib/rubocop/cop/mixin/empty_lines_around_body.rb +8 -7
  168. data/lib/rubocop/cop/mixin/empty_parameter.rb +3 -1
  169. data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +12 -1
  170. data/lib/rubocop/cop/mixin/enforce_superclass.rb +0 -2
  171. data/lib/rubocop/cop/mixin/first_element_line_break.rb +3 -1
  172. data/lib/rubocop/cop/mixin/hash_transform_method.rb +31 -12
  173. data/lib/rubocop/cop/mixin/line_length_help.rb +1 -3
  174. data/lib/rubocop/cop/mixin/multiline_element_line_breaks.rb +3 -1
  175. data/lib/rubocop/cop/mixin/multiline_literal_brace_layout.rb +13 -12
  176. data/lib/rubocop/cop/mixin/negative_conditional.rb +2 -2
  177. data/lib/rubocop/cop/mixin/percent_array.rb +16 -9
  178. data/lib/rubocop/cop/mixin/range_help.rb +18 -4
  179. data/lib/rubocop/cop/mixin/regexp_literal_help.rb +1 -1
  180. data/lib/rubocop/cop/mixin/rescue_node.rb +11 -1
  181. data/lib/rubocop/cop/mixin/space_after_punctuation.rb +4 -3
  182. data/lib/rubocop/cop/mixin/space_before_punctuation.rb +4 -3
  183. data/lib/rubocop/cop/mixin/statement_modifier.rb +12 -6
  184. data/lib/rubocop/cop/mixin/surrounding_space.rb +8 -4
  185. data/lib/rubocop/cop/mixin/trailing_comma.rb +9 -11
  186. data/lib/rubocop/cop/mixin/visibility_help.rb +4 -16
  187. data/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +1 -1
  188. data/lib/rubocop/cop/naming/file_name.rb +1 -1
  189. data/lib/rubocop/cop/offense.rb +1 -0
  190. data/lib/rubocop/cop/security/eval.rb +1 -0
  191. data/lib/rubocop/cop/security/json_load.rb +1 -0
  192. data/lib/rubocop/cop/security/marshal_load.rb +1 -0
  193. data/lib/rubocop/cop/security/open.rb +1 -0
  194. data/lib/rubocop/cop/security/yaml_load.rb +1 -0
  195. data/lib/rubocop/cop/severity.rb +0 -8
  196. data/lib/rubocop/cop/style/access_modifier_declarations.rb +8 -19
  197. data/lib/rubocop/cop/style/accessor_grouping.rb +20 -20
  198. data/lib/rubocop/cop/style/alias.rb +36 -33
  199. data/lib/rubocop/cop/style/and_or.rb +9 -11
  200. data/lib/rubocop/cop/style/array_coercion.rb +4 -0
  201. data/lib/rubocop/cop/style/array_join.rb +7 -8
  202. data/lib/rubocop/cop/style/ascii_comments.rb +4 -4
  203. data/lib/rubocop/cop/style/attr.rb +12 -9
  204. data/lib/rubocop/cop/style/auto_resource_cleanup.rb +4 -5
  205. data/lib/rubocop/cop/style/bare_percent_literals.rb +10 -12
  206. data/lib/rubocop/cop/style/begin_block.rb +2 -2
  207. data/lib/rubocop/cop/style/bisected_attr_accessor.rb +9 -12
  208. data/lib/rubocop/cop/style/block_comments.rb +14 -18
  209. data/lib/rubocop/cop/style/block_delimiters.rb +23 -23
  210. data/lib/rubocop/cop/style/case_equality.rb +11 -3
  211. data/lib/rubocop/cop/style/case_like_if.rb +37 -18
  212. data/lib/rubocop/cop/style/class_and_module_children.rb +16 -11
  213. data/lib/rubocop/cop/style/class_check.rb +6 -11
  214. data/lib/rubocop/cop/style/class_methods.rb +7 -11
  215. data/lib/rubocop/cop/style/class_methods_definitions.rb +157 -0
  216. data/lib/rubocop/cop/style/class_vars.rb +7 -12
  217. data/lib/rubocop/cop/style/collection_methods.rb +11 -17
  218. data/lib/rubocop/cop/style/colon_method_call.rb +6 -7
  219. data/lib/rubocop/cop/style/colon_method_definition.rb +6 -6
  220. data/lib/rubocop/cop/style/combinable_loops.rb +84 -0
  221. data/lib/rubocop/cop/style/command_literal.rb +23 -24
  222. data/lib/rubocop/cop/style/comment_annotation.rb +15 -15
  223. data/lib/rubocop/cop/style/commented_keyword.rb +8 -9
  224. data/lib/rubocop/cop/style/conditional_assignment.rb +50 -61
  225. data/lib/rubocop/cop/style/constant_visibility.rb +3 -2
  226. data/lib/rubocop/cop/style/copyright.rb +12 -12
  227. data/lib/rubocop/cop/style/date_time.rb +13 -2
  228. data/lib/rubocop/cop/style/def_with_parentheses.rb +8 -10
  229. data/lib/rubocop/cop/style/dir.rb +8 -10
  230. data/lib/rubocop/cop/style/disable_cops_within_source_code_directive.rb +7 -9
  231. data/lib/rubocop/cop/style/documentation.rb +2 -4
  232. data/lib/rubocop/cop/style/documentation_method.rb +1 -1
  233. data/lib/rubocop/cop/style/double_cop_disable_directive.rb +12 -15
  234. data/lib/rubocop/cop/style/double_negation.rb +3 -2
  235. data/lib/rubocop/cop/style/each_for_simple_loop.rb +5 -8
  236. data/lib/rubocop/cop/style/each_with_object.rb +16 -17
  237. data/lib/rubocop/cop/style/empty_block_parameter.rb +9 -10
  238. data/lib/rubocop/cop/style/empty_case_condition.rb +19 -20
  239. data/lib/rubocop/cop/style/empty_else.rb +17 -19
  240. data/lib/rubocop/cop/style/empty_lambda_parameter.rb +9 -10
  241. data/lib/rubocop/cop/style/empty_literal.rb +18 -17
  242. data/lib/rubocop/cop/style/empty_method.rb +5 -8
  243. data/lib/rubocop/cop/style/encoding.rb +5 -9
  244. data/lib/rubocop/cop/style/end_block.rb +4 -6
  245. data/lib/rubocop/cop/style/eval_with_location.rb +6 -10
  246. data/lib/rubocop/cop/style/even_odd.rb +8 -11
  247. data/lib/rubocop/cop/style/expand_path_arguments.rb +23 -26
  248. data/lib/rubocop/cop/style/explicit_block_argument.rb +1 -1
  249. data/lib/rubocop/cop/style/exponential_notation.rb +1 -1
  250. data/lib/rubocop/cop/style/float_division.rb +3 -1
  251. data/lib/rubocop/cop/style/for.rb +11 -15
  252. data/lib/rubocop/cop/style/format_string.rb +18 -23
  253. data/lib/rubocop/cop/style/format_string_token.rb +4 -7
  254. data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +19 -41
  255. data/lib/rubocop/cop/style/global_vars.rb +2 -2
  256. data/lib/rubocop/cop/style/guard_clause.rb +4 -4
  257. data/lib/rubocop/cop/style/hash_as_last_array_item.rb +24 -5
  258. data/lib/rubocop/cop/style/hash_each_methods.rb +5 -8
  259. data/lib/rubocop/cop/style/hash_syntax.rb +6 -7
  260. data/lib/rubocop/cop/style/hash_transform_keys.rb +19 -11
  261. data/lib/rubocop/cop/style/hash_transform_values.rb +18 -10
  262. data/lib/rubocop/cop/style/identical_conditional_branches.rb +1 -1
  263. data/lib/rubocop/cop/style/if_inside_else.rb +2 -2
  264. data/lib/rubocop/cop/style/if_unless_modifier.rb +11 -17
  265. data/lib/rubocop/cop/style/if_unless_modifier_of_if_unless.rb +3 -7
  266. data/lib/rubocop/cop/style/if_with_semicolon.rb +3 -6
  267. data/lib/rubocop/cop/style/implicit_runtime_error.rb +2 -1
  268. data/lib/rubocop/cop/style/infinite_loop.rb +23 -23
  269. data/lib/rubocop/cop/style/inline_comment.rb +3 -3
  270. data/lib/rubocop/cop/style/inverse_methods.rb +20 -29
  271. data/lib/rubocop/cop/style/keyword_parameters_order.rb +53 -0
  272. data/lib/rubocop/cop/style/lambda.rb +7 -12
  273. data/lib/rubocop/cop/style/lambda_call.rb +17 -14
  274. data/lib/rubocop/cop/style/line_end_concatenation.rb +19 -16
  275. data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +2 -1
  276. data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +11 -11
  277. data/lib/rubocop/cop/style/method_call_with_args_parentheses/require_parentheses.rb +4 -8
  278. data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +7 -6
  279. data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +12 -3
  280. data/lib/rubocop/cop/style/method_def_parentheses.rb +11 -16
  281. data/lib/rubocop/cop/style/min_max.rb +8 -12
  282. data/lib/rubocop/cop/style/missing_else.rb +13 -13
  283. data/lib/rubocop/cop/style/missing_respond_to_missing.rb +1 -1
  284. data/lib/rubocop/cop/style/mixin_grouping.rb +24 -27
  285. data/lib/rubocop/cop/style/mixin_usage.rb +9 -28
  286. data/lib/rubocop/cop/style/module_function.rb +10 -13
  287. data/lib/rubocop/cop/style/multiline_block_chain.rb +2 -2
  288. data/lib/rubocop/cop/style/multiline_if_modifier.rb +3 -10
  289. data/lib/rubocop/cop/style/multiline_if_then.rb +4 -10
  290. data/lib/rubocop/cop/style/multiline_memoization.rb +12 -10
  291. data/lib/rubocop/cop/style/multiline_method_signature.rb +1 -1
  292. data/lib/rubocop/cop/style/multiline_ternary_operator.rb +17 -6
  293. data/lib/rubocop/cop/style/multiline_when_then.rb +10 -11
  294. data/lib/rubocop/cop/style/multiple_comparison.rb +1 -1
  295. data/lib/rubocop/cop/style/mutable_constant.rb +23 -20
  296. data/lib/rubocop/cop/style/negated_if.rb +6 -6
  297. data/lib/rubocop/cop/style/negated_unless.rb +6 -6
  298. data/lib/rubocop/cop/style/negated_while.rb +7 -15
  299. data/lib/rubocop/cop/style/nested_modifier.rb +10 -13
  300. data/lib/rubocop/cop/style/nested_parenthesized_calls.rb +14 -12
  301. data/lib/rubocop/cop/style/nested_ternary_operator.rb +14 -16
  302. data/lib/rubocop/cop/style/next.rb +10 -14
  303. data/lib/rubocop/cop/style/nil_comparison.rb +13 -11
  304. data/lib/rubocop/cop/style/non_nil_check.rb +34 -26
  305. data/lib/rubocop/cop/style/not.rb +20 -26
  306. data/lib/rubocop/cop/style/numeric_literal_prefix.rb +4 -9
  307. data/lib/rubocop/cop/style/numeric_predicate.rb +5 -14
  308. data/lib/rubocop/cop/style/one_line_conditional.rb +73 -23
  309. data/lib/rubocop/cop/style/option_hash.rb +1 -1
  310. data/lib/rubocop/cop/style/optional_arguments.rb +1 -1
  311. data/lib/rubocop/cop/style/optional_boolean_parameter.rb +12 -1
  312. data/lib/rubocop/cop/style/or_assignment.rb +13 -10
  313. data/lib/rubocop/cop/style/parallel_assignment.rb +14 -14
  314. data/lib/rubocop/cop/style/parentheses_around_condition.rb +6 -6
  315. data/lib/rubocop/cop/style/percent_literal_delimiters.rb +13 -19
  316. data/lib/rubocop/cop/style/percent_q_literals.rb +8 -10
  317. data/lib/rubocop/cop/style/perl_backrefs.rb +8 -10
  318. data/lib/rubocop/cop/style/preferred_hash_methods.rb +11 -14
  319. data/lib/rubocop/cop/style/proc.rb +6 -6
  320. data/lib/rubocop/cop/style/raise_args.rb +15 -24
  321. data/lib/rubocop/cop/style/random_with_offset.rb +19 -19
  322. data/lib/rubocop/cop/style/redundant_assignment.rb +8 -18
  323. data/lib/rubocop/cop/style/redundant_begin.rb +7 -9
  324. data/lib/rubocop/cop/style/redundant_capital_w.rb +6 -9
  325. data/lib/rubocop/cop/style/redundant_condition.rb +5 -6
  326. data/lib/rubocop/cop/style/redundant_conditional.rb +4 -5
  327. data/lib/rubocop/cop/style/redundant_exception.rb +1 -3
  328. data/lib/rubocop/cop/style/redundant_fetch_block.rb +3 -12
  329. data/lib/rubocop/cop/style/redundant_file_extension_in_require.rb +9 -8
  330. data/lib/rubocop/cop/style/redundant_freeze.rb +5 -7
  331. data/lib/rubocop/cop/style/redundant_interpolation.rb +25 -24
  332. data/lib/rubocop/cop/style/redundant_parentheses.rb +21 -15
  333. data/lib/rubocop/cop/style/redundant_percent_q.rb +9 -11
  334. data/lib/rubocop/cop/style/redundant_regexp_character_class.rb +6 -13
  335. data/lib/rubocop/cop/style/redundant_regexp_escape.rb +5 -14
  336. data/lib/rubocop/cop/style/redundant_return.rb +17 -17
  337. data/lib/rubocop/cop/style/redundant_self.rb +9 -11
  338. data/lib/rubocop/cop/style/redundant_self_assignment.rb +116 -0
  339. data/lib/rubocop/cop/style/redundant_sort.rb +12 -31
  340. data/lib/rubocop/cop/style/redundant_sort_by.rb +5 -9
  341. data/lib/rubocop/cop/style/regexp_literal.rb +10 -21
  342. data/lib/rubocop/cop/style/rescue_modifier.rb +29 -9
  343. data/lib/rubocop/cop/style/rescue_standard_error.rb +20 -16
  344. data/lib/rubocop/cop/style/return_nil.rb +5 -5
  345. data/lib/rubocop/cop/style/safe_navigation.rb +22 -16
  346. data/lib/rubocop/cop/style/sample.rb +12 -14
  347. data/lib/rubocop/cop/style/self_assignment.rb +26 -22
  348. data/lib/rubocop/cop/style/semicolon.rb +6 -9
  349. data/lib/rubocop/cop/style/send.rb +4 -5
  350. data/lib/rubocop/cop/style/signal_exception.rb +23 -19
  351. data/lib/rubocop/cop/style/single_argument_dig.rb +1 -0
  352. data/lib/rubocop/cop/style/single_line_block_params.rb +4 -2
  353. data/lib/rubocop/cop/style/single_line_methods.rb +18 -17
  354. data/lib/rubocop/cop/style/slicing_with_range.rb +6 -8
  355. data/lib/rubocop/cop/style/sole_nested_conditional.rb +66 -0
  356. data/lib/rubocop/cop/style/special_global_vars.rb +10 -15
  357. data/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +17 -21
  358. data/lib/rubocop/cop/style/stderr_puts.rb +5 -6
  359. data/lib/rubocop/cop/style/string_concatenation.rb +16 -2
  360. data/lib/rubocop/cop/style/string_hash_keys.rb +6 -7
  361. data/lib/rubocop/cop/style/string_methods.rb +7 -17
  362. data/lib/rubocop/cop/style/strip.rb +9 -14
  363. data/lib/rubocop/cop/style/struct_inheritance.rb +3 -6
  364. data/lib/rubocop/cop/style/symbol_array.rb +5 -16
  365. data/lib/rubocop/cop/style/symbol_literal.rb +4 -6
  366. data/lib/rubocop/cop/style/symbol_proc.rb +14 -18
  367. data/lib/rubocop/cop/style/ternary_parentheses.rb +22 -22
  368. data/lib/rubocop/cop/style/trailing_body_on_class.rb +3 -6
  369. data/lib/rubocop/cop/style/trailing_body_on_method_definition.rb +4 -7
  370. data/lib/rubocop/cop/style/trailing_body_on_module.rb +3 -6
  371. data/lib/rubocop/cop/style/trailing_comma_in_arguments.rb +2 -5
  372. data/lib/rubocop/cop/style/trailing_comma_in_array_literal.rb +2 -5
  373. data/lib/rubocop/cop/style/trailing_comma_in_block_args.rb +11 -9
  374. data/lib/rubocop/cop/style/trailing_comma_in_hash_literal.rb +2 -5
  375. data/lib/rubocop/cop/style/trailing_underscore_variable.rb +8 -17
  376. data/lib/rubocop/cop/style/trivial_accessors.rb +26 -30
  377. data/lib/rubocop/cop/style/unless_else.rb +5 -8
  378. data/lib/rubocop/cop/style/unpack_first.rb +5 -8
  379. data/lib/rubocop/cop/style/variable_interpolation.rb +7 -10
  380. data/lib/rubocop/cop/style/when_then.rb +4 -6
  381. data/lib/rubocop/cop/style/while_until_do.rb +6 -16
  382. data/lib/rubocop/cop/style/while_until_modifier.rb +6 -20
  383. data/lib/rubocop/cop/style/word_array.rb +5 -23
  384. data/lib/rubocop/cop/style/yoda_condition.rb +4 -15
  385. data/lib/rubocop/cop/style/zero_length_predicate.rb +12 -18
  386. data/lib/rubocop/cop/team.rb +1 -0
  387. data/lib/rubocop/cop/util.rb +2 -1
  388. data/lib/rubocop/cop/utils/format_string.rb +3 -5
  389. data/lib/rubocop/cop/variable_force.rb +2 -0
  390. data/lib/rubocop/cops_documentation_generator.rb +5 -3
  391. data/lib/rubocop/core_ext/string.rb +2 -2
  392. data/lib/rubocop/directive_comment.rb +32 -0
  393. data/lib/rubocop/ext/regexp_node.rb +46 -0
  394. data/lib/rubocop/file_finder.rb +1 -0
  395. data/lib/rubocop/formatter/auto_gen_config_formatter.rb +2 -1
  396. data/lib/rubocop/formatter/disabled_config_formatter.rb +13 -6
  397. data/lib/rubocop/formatter/html_formatter.rb +2 -0
  398. data/lib/rubocop/formatter/junit_formatter.rb +1 -1
  399. data/lib/rubocop/formatter/progress_formatter.rb +2 -1
  400. data/lib/rubocop/formatter/quiet_formatter.rb +1 -1
  401. data/lib/rubocop/formatter/simple_text_formatter.rb +36 -6
  402. data/lib/rubocop/name_similarity.rb +1 -0
  403. data/lib/rubocop/options.rb +43 -20
  404. data/lib/rubocop/remote_config.rb +1 -0
  405. data/lib/rubocop/result_cache.rb +31 -13
  406. data/lib/rubocop/rspec/cop_helper.rb +4 -1
  407. data/lib/rubocop/rspec/expect_offense.rb +14 -9
  408. data/lib/rubocop/rspec/shared_contexts.rb +13 -5
  409. data/lib/rubocop/runner.rb +35 -15
  410. data/lib/rubocop/string_interpreter.rb +3 -0
  411. data/lib/rubocop/target_finder.rb +5 -1
  412. data/lib/rubocop/target_ruby.rb +7 -1
  413. data/lib/rubocop/version.rb +7 -1
  414. data/lib/rubocop/yaml_duplication_checker.rb +1 -0
  415. metadata +26 -14
  416. data/lib/rubocop/cop/tokens_util.rb +0 -84
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 220e683b0838a3b02076023d5a65ff57267b1eff2c250bb8fa65d03db9ff09ec
4
- data.tar.gz: 8fd50157ec4a8a007ab30cfb5ea34dd9b30bf4d6fa8c3d475268f73e2937bd99
3
+ metadata.gz: 682e17739f5c067f13eb30a3e84b365533bb0e075da92a40529c943e5a67e3b0
4
+ data.tar.gz: 2c7e59ef470ad45515bed37249c97419181add1f451379d00b31ff45b21ddd36
5
5
  SHA512:
6
- metadata.gz: fb33582bad5b4b07308a11670c8fc173db0261e384160727057e8714f2dfb24d552663e0e14a5be1ad537bc269919e0182b2a1ca63f6ee13f471a422cae98fff
7
- data.tar.gz: 214a09139a2a0c85438e2724d289e3fb5e8e1b4d81e6a42231143803842423795867c9da4e0347df1b26e5dfaeaf108d347a1e4758a8604484e370a3e1343a74
6
+ metadata.gz: 0bc3d0c3238795b8563b974c99c20d3cfb34dff97bc33f5231d6ef7497f53ce6f4753923bce17954fe30e69b0a8d4146a3b1377d0489e7f10bc97a0b3c69ae7b
7
+ data.tar.gz: 4131b9c8a874e09d8c0581a04e91b44acc76855afa565cd52a324055a0bd7e1a40d37bc532b8b3781c9af9847335c6596ca8ed17fe9bff03d13283171d77c168
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.89.0', require: false
52
+ gem 'rubocop', '~> 0.92.0', require: false
53
53
  ```
54
54
 
55
55
  ## Quickstart
@@ -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
@@ -309,6 +311,19 @@ Layout/AssignmentIndentation:
309
311
  # But it can be overridden by setting this parameter
310
312
  IndentationWidth: ~
311
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
+
312
327
  Layout/BlockAlignment:
313
328
  Description: 'Align block ends correctly.'
314
329
  Enabled: true
@@ -399,7 +414,6 @@ Layout/DefEndAlignment:
399
414
  SupportedStylesAlignWith:
400
415
  - start_of_line
401
416
  - def
402
- AutoCorrect: false
403
417
  Severity: warning
404
418
 
405
419
  Layout/DotPosition:
@@ -436,6 +450,14 @@ Layout/EmptyLineAfterMagicComment:
436
450
  Enabled: true
437
451
  VersionAdded: '0.49'
438
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
+
439
461
  Layout/EmptyLineBetweenDefs:
440
462
  Description: 'Use empty lines between defs.'
441
463
  StyleGuide: '#empty-lines-between-methods'
@@ -555,7 +577,6 @@ Layout/EndAlignment:
555
577
  - keyword
556
578
  - variable
557
579
  - start_of_line
558
- AutoCorrect: false
559
580
  Severity: warning
560
581
 
561
582
  Layout/EndOfLine:
@@ -1374,6 +1395,12 @@ Lint/CircularArgumentReference:
1374
1395
  Enabled: true
1375
1396
  VersionAdded: '0.33'
1376
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
+
1377
1404
  Lint/ConstantResolution:
1378
1405
  Description: 'Check that constants are fully qualified with `::`.'
1379
1406
  Enabled: false
@@ -1427,6 +1454,11 @@ Lint/DuplicateMethods:
1427
1454
  Enabled: true
1428
1455
  VersionAdded: '0.29'
1429
1456
 
1457
+ Lint/DuplicateRequire:
1458
+ Description: 'Check for duplicate `require`s and `require_relative`s.'
1459
+ Enabled: pending
1460
+ VersionAdded: '0.90'
1461
+
1430
1462
  Lint/DuplicateRescueException:
1431
1463
  Description: 'Checks that there are no repeated exceptions used in `rescue` expressions.'
1432
1464
  Enabled: pending
@@ -1453,13 +1485,18 @@ Lint/EmptyEnsure:
1453
1485
  Enabled: true
1454
1486
  VersionAdded: '0.10'
1455
1487
  VersionChanged: '0.48'
1456
- AutoCorrect: false
1457
1488
 
1458
1489
  Lint/EmptyExpression:
1459
1490
  Description: 'Checks for empty expressions.'
1460
1491
  Enabled: true
1461
1492
  VersionAdded: '0.45'
1462
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
+
1463
1500
  Lint/EmptyInterpolation:
1464
1501
  Description: 'Checks for empty string interpolation.'
1465
1502
  Enabled: true
@@ -1517,6 +1554,12 @@ Lint/HeredocMethodCallPosition:
1517
1554
  StyleGuide: '#heredoc-method-calls'
1518
1555
  VersionAdded: '0.68'
1519
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
+
1520
1563
  Lint/ImplicitStringConcatenation:
1521
1564
  Description: >-
1522
1565
  Checks for adjacent string literals on the same line, which
@@ -1768,6 +1811,7 @@ Lint/SafeNavigationChain:
1768
1811
  - presence
1769
1812
  - try
1770
1813
  - try!
1814
+ - in?
1771
1815
 
1772
1816
  Lint/SafeNavigationConsistency:
1773
1817
  Description: >-
@@ -1856,6 +1900,11 @@ Lint/TopLevelReturnWithArgument:
1856
1900
  Enabled: 'pending'
1857
1901
  VersionAdded: '0.89'
1858
1902
 
1903
+ Lint/TrailingCommaInAttributeDeclaration:
1904
+ Description: 'This cop checks for trailing commas in attribute declarations.'
1905
+ Enabled: pending
1906
+ VersionAdded: '0.90'
1907
+
1859
1908
  Lint/UnderscorePrefixedVariableName:
1860
1909
  Description: 'Do not use prefix `_` for a variable that is used.'
1861
1910
  Enabled: true
@@ -1931,6 +1980,13 @@ Lint/UselessElseWithoutRescue:
1931
1980
  Enabled: true
1932
1981
  VersionAdded: '0.17'
1933
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
+
1934
1990
  Lint/UselessSetterCall:
1935
1991
  Description: 'Checks for useless setter call to a local variable.'
1936
1992
  Enabled: true
@@ -1938,6 +1994,12 @@ Lint/UselessSetterCall:
1938
1994
  VersionChanged: '0.80'
1939
1995
  Safe: false
1940
1996
 
1997
+ Lint/UselessTimes:
1998
+ Description: 'Checks for useless `Integer#times` calls.'
1999
+ Enabled: pending
2000
+ VersionAdded: '0.91'
2001
+ Safe: false
2002
+
1941
2003
  Lint/Void:
1942
2004
  Description: 'Possible use of operator/literal/variable in void context.'
1943
2005
  Enabled: true
@@ -2401,7 +2463,7 @@ Style/ArrayCoercion:
2401
2463
  with a variable you want to treat as an Array, but you're not certain it's an array.
2402
2464
  StyleGuide: '#array-coercion'
2403
2465
  Safe: false
2404
- Enabled: 'pending'
2466
+ Enabled: false
2405
2467
  VersionAdded: '0.88'
2406
2468
 
2407
2469
  Style/ArrayJoin:
@@ -2591,6 +2653,7 @@ Style/CaseLikeIf:
2591
2653
  Description: 'This cop identifies places where `if-elsif` constructions can be replaced with `case-when`.'
2592
2654
  StyleGuide: '#case-vs-if-else'
2593
2655
  Enabled: 'pending'
2656
+ Safe: false
2594
2657
  VersionAdded: '0.88'
2595
2658
 
2596
2659
  Style/CharacterLiteral:
@@ -2608,7 +2671,6 @@ Style/ClassAndModuleChildren:
2608
2671
  # have the knowledge to perform either operation safely and thus requires
2609
2672
  # manual oversight.
2610
2673
  SafeAutoCorrect: false
2611
- AutoCorrect: false
2612
2674
  Enabled: true
2613
2675
  VersionAdded: '0.19'
2614
2676
  #
@@ -2647,6 +2709,16 @@ Style/ClassMethods:
2647
2709
  VersionAdded: '0.9'
2648
2710
  VersionChanged: '0.20'
2649
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
+
2650
2722
  Style/ClassVars:
2651
2723
  Description: 'Avoid the use of class variables.'
2652
2724
  StyleGuide: '#no-class-vars'
@@ -2687,6 +2759,14 @@ Style/ColonMethodDefinition:
2687
2759
  Enabled: true
2688
2760
  VersionAdded: '0.52'
2689
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
+
2690
2770
  Style/CommandLiteral:
2691
2771
  Description: 'Use `` or %x around command literals.'
2692
2772
  StyleGuide: '#percent-x'
@@ -2783,7 +2863,8 @@ Style/DateTime:
2783
2863
  StyleGuide: '#date--time'
2784
2864
  Enabled: false
2785
2865
  VersionAdded: '0.51'
2786
- VersionChanged: '0.59'
2866
+ VersionChanged: '0.92'
2867
+ SafeAutoCorrect: false
2787
2868
  AllowCoercion: false
2788
2869
 
2789
2870
  Style/DefWithParentheses:
@@ -3021,13 +3102,14 @@ Style/FrozenStringLiteralComment:
3021
3102
  # `never` will enforce that the frozen string literal comment does not
3022
3103
  # exist in a file.
3023
3104
  - never
3024
- Safe: false
3105
+ SafeAutoCorrect: false
3025
3106
 
3026
3107
  Style/GlobalStdStream:
3027
3108
  Description: 'Enforces the use of `$stdout/$stderr/$stdin` instead of `STDOUT/STDERR/STDIN`.'
3028
3109
  StyleGuide: '#global-stdout'
3029
3110
  Enabled: pending
3030
3111
  VersionAdded: '0.89'
3112
+ SafeAutoCorrect: false
3031
3113
 
3032
3114
  Style/GlobalVars:
3033
3115
  Description: 'Do not introduce global variables.'
@@ -3101,15 +3183,17 @@ Style/HashSyntax:
3101
3183
  PreferHashRocketsForNonAlnumEndingSymbols: false
3102
3184
 
3103
3185
  Style/HashTransformKeys:
3104
- Description: 'Prefer `transform_keys` over `each_with_object` and `map`.'
3186
+ Description: 'Prefer `transform_keys` over `each_with_object`, `map`, or `to_h`.'
3105
3187
  Enabled: 'pending'
3106
3188
  VersionAdded: '0.80'
3189
+ VersionChanged: '0.90'
3107
3190
  Safe: false
3108
3191
 
3109
3192
  Style/HashTransformValues:
3110
- Description: 'Prefer `transform_values` over `each_with_object` and `map`.'
3193
+ Description: 'Prefer `transform_values` over `each_with_object`, `map`, or `to_h`.'
3111
3194
  Enabled: 'pending'
3112
3195
  VersionAdded: '0.80'
3196
+ VersionChanged: '0.90'
3113
3197
  Safe: false
3114
3198
 
3115
3199
  Style/IdenticalConditionalBranches:
@@ -3200,11 +3284,22 @@ Style/IpAddresses:
3200
3284
  Description: "Don't include literal IP addresses in code."
3201
3285
  Enabled: false
3202
3286
  VersionAdded: '0.58'
3203
- VersionChanged: '0.77'
3287
+ VersionChanged: '0.91'
3204
3288
  # Allow addresses to be permitted
3205
3289
  AllowedAddresses:
3206
3290
  - "::"
3207
3291
  # :: is a valid IPv6 address, but could potentially be legitimately in code
3292
+ Exclude:
3293
+ - '**/*.gemfile'
3294
+ - '**/Gemfile'
3295
+ - '**/gems.rb'
3296
+ - '**/*.gemspec'
3297
+
3298
+ Style/KeywordParametersOrder:
3299
+ Description: 'Enforces that optional keyword parameters are placed at the end of the parameters list.'
3300
+ StyleGuide: '#keyword-parameters-order'
3301
+ Enabled: pending
3302
+ VersionAdded: '0.90'
3208
3303
 
3209
3304
  Style/Lambda:
3210
3305
  Description: 'Use the new lambda literal syntax for single-line blocks.'
@@ -3579,7 +3674,6 @@ Style/NumericPredicate:
3579
3674
  # object. Switching these methods has to be done with knowledge of the types
3580
3675
  # of the variables which rubocop doesn't have.
3581
3676
  SafeAutoCorrect: false
3582
- AutoCorrect: false
3583
3677
  Enabled: true
3584
3678
  VersionAdded: '0.42'
3585
3679
  VersionChanged: '0.59'
@@ -3595,12 +3689,13 @@ Style/NumericPredicate:
3595
3689
 
3596
3690
  Style/OneLineConditional:
3597
3691
  Description: >-
3598
- Favor the ternary operator(?:) over
3599
- if/then/else/end constructs.
3692
+ Favor the ternary operator (?:) or multi-line constructs over
3693
+ single-line if/then/else/end constructs.
3600
3694
  StyleGuide: '#ternary-operator'
3601
3695
  Enabled: true
3696
+ AlwaysCorrectToMultiline: false
3602
3697
  VersionAdded: '0.9'
3603
- VersionChanged: '0.38'
3698
+ VersionChanged: '0.90'
3604
3699
 
3605
3700
  Style/OptionHash:
3606
3701
  Description: "Don't use option hashes when you can use keyword arguments."
@@ -3631,6 +3726,8 @@ Style/OptionalBooleanParameter:
3631
3726
  Enabled: pending
3632
3727
  Safe: false
3633
3728
  VersionAdded: '0.89'
3729
+ AllowedMethods:
3730
+ - respond_to_missing?
3634
3731
 
3635
3732
  Style/OrAssignment:
3636
3733
  Description: 'Recommend usage of double pipe equals (||=) where applicable.'
@@ -3831,6 +3928,12 @@ Style/RedundantSelf:
3831
3928
  VersionAdded: '0.10'
3832
3929
  VersionChanged: '0.13'
3833
3930
 
3931
+ Style/RedundantSelfAssignment:
3932
+ Description: 'Checks for places where redundant assignments are made for in place modification methods.'
3933
+ Enabled: pending
3934
+ Safe: false
3935
+ VersionAdded: '0.90'
3936
+
3834
3937
  Style/RedundantSort:
3835
3938
  Description: >-
3836
3939
  Use `min` instead of `sort.first`,
@@ -3893,6 +3996,8 @@ Style/SafeNavigation:
3893
3996
  This cop transforms usages of a method call safeguarded by
3894
3997
  a check for the existence of the object to
3895
3998
  safe navigation (`&.`).
3999
+ Auto-correction is unsafe as it assumes the object will
4000
+ be `nil` or truthy, but never `false`.
3896
4001
  Enabled: true
3897
4002
  VersionAdded: '0.43'
3898
4003
  VersionChanged: '0.77'
@@ -3905,6 +4010,7 @@ Style/SafeNavigation:
3905
4010
  - presence
3906
4011
  - try
3907
4012
  - try!
4013
+ SafeAutoCorrect: false
3908
4014
 
3909
4015
  Style/Sample:
3910
4016
  Description: >-
@@ -3983,6 +4089,14 @@ Style/SlicingWithRange:
3983
4089
  VersionAdded: '0.83'
3984
4090
  Safe: false
3985
4091
 
4092
+ Style/SoleNestedConditional:
4093
+ Description: >-
4094
+ Finds sole nested conditional nodes
4095
+ which can be merged into outer conditional node.
4096
+ Enabled: pending
4097
+ VersionAdded: '0.89'
4098
+ AllowModifier: false
4099
+
3986
4100
  Style/SpecialGlobalVars:
3987
4101
  Description: 'Avoid Perl-style global variables.'
3988
4102
  StyleGuide: '#no-cryptic-perlisms'
@@ -1,16 +1,20 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'English'
4
+ before_us = $LOADED_FEATURES.dup
3
5
  require 'rainbow'
4
6
 
5
- require 'English'
6
7
  require 'set'
7
8
  require 'forwardable'
8
9
  require 'regexp_parser'
9
10
  require 'unicode/display_width/no_string_ext'
10
- require 'rubocop-ast'
11
- require_relative 'rubocop/ast_aliases'
12
11
 
12
+ # we have to require RuboCop's version, before rubocop-ast's
13
13
  require_relative 'rubocop/version'
14
+ require 'rubocop-ast'
15
+
16
+ require_relative 'rubocop/ast_aliases'
17
+ require_relative 'rubocop/ext/regexp_node'
14
18
 
15
19
  require_relative 'rubocop/core_ext/string'
16
20
  require_relative 'rubocop/ext/processed_source'
@@ -23,7 +27,6 @@ require_relative 'rubocop/string_interpreter'
23
27
  require_relative 'rubocop/error'
24
28
  require_relative 'rubocop/warning'
25
29
 
26
- require_relative 'rubocop/cop/tokens_util'
27
30
  require_relative 'rubocop/cop/util'
28
31
  require_relative 'rubocop/cop/offense'
29
32
  require_relative 'rubocop/cop/message_annotator'
@@ -34,6 +37,7 @@ require_relative 'rubocop/cop/registry'
34
37
  require_relative 'rubocop/cop/base'
35
38
  require_relative 'rubocop/cop/cop'
36
39
  require_relative 'rubocop/cop/commissioner'
40
+ require_relative 'rubocop/cop/documentation'
37
41
  require_relative 'rubocop/cop/corrector'
38
42
  require_relative 'rubocop/cop/force'
39
43
  require_relative 'rubocop/cop/severity'
@@ -116,6 +120,7 @@ require_relative 'rubocop/cop/mixin/trailing_comma'
116
120
  require_relative 'rubocop/cop/mixin/uncommunicative_name'
117
121
  require_relative 'rubocop/cop/mixin/unused_argument'
118
122
  require_relative 'rubocop/cop/mixin/visibility_help'
123
+ require_relative 'rubocop/cop/mixin/comments_help' # relies on visibility_help
119
124
 
120
125
  require_relative 'rubocop/cop/utils/format_string'
121
126
 
@@ -151,6 +156,7 @@ require_relative 'rubocop/cop/layout/access_modifier_indentation'
151
156
  require_relative 'rubocop/cop/layout/argument_alignment'
152
157
  require_relative 'rubocop/cop/layout/array_alignment'
153
158
  require_relative 'rubocop/cop/layout/assignment_indentation'
159
+ require_relative 'rubocop/cop/layout/begin_end_alignment'
154
160
  require_relative 'rubocop/cop/layout/block_alignment'
155
161
  require_relative 'rubocop/cop/layout/block_end_newline'
156
162
  require_relative 'rubocop/cop/layout/case_indentation'
@@ -165,6 +171,7 @@ require_relative 'rubocop/cop/layout/else_alignment'
165
171
  require_relative 'rubocop/cop/layout/empty_comment'
166
172
  require_relative 'rubocop/cop/layout/empty_line_after_guard_clause'
167
173
  require_relative 'rubocop/cop/layout/empty_line_after_magic_comment'
174
+ require_relative 'rubocop/cop/layout/empty_line_after_multiline_condition'
168
175
  require_relative 'rubocop/cop/layout/empty_line_between_defs'
169
176
  require_relative 'rubocop/cop/layout/empty_lines_around_access_modifier'
170
177
  require_relative 'rubocop/cop/layout/empty_lines_around_arguments'
@@ -246,6 +253,7 @@ require_relative 'rubocop/cop/lint/big_decimal_new'
246
253
  require_relative 'rubocop/cop/lint/binary_operator_with_identical_operands'
247
254
  require_relative 'rubocop/cop/lint/boolean_symbol'
248
255
  require_relative 'rubocop/cop/lint/circular_argument_reference'
256
+ require_relative 'rubocop/cop/lint/constant_definition_in_block'
249
257
  require_relative 'rubocop/cop/lint/constant_resolution'
250
258
  require_relative 'rubocop/cop/lint/debugger'
251
259
  require_relative 'rubocop/cop/lint/deprecated_class_methods'
@@ -255,12 +263,14 @@ require_relative 'rubocop/cop/lint/duplicate_case_condition'
255
263
  require_relative 'rubocop/cop/lint/duplicate_elsif_condition'
256
264
  require_relative 'rubocop/cop/lint/duplicate_hash_key'
257
265
  require_relative 'rubocop/cop/lint/duplicate_methods'
266
+ require_relative 'rubocop/cop/lint/duplicate_require'
258
267
  require_relative 'rubocop/cop/lint/duplicate_rescue_exception'
259
268
  require_relative 'rubocop/cop/lint/each_with_object_argument'
260
269
  require_relative 'rubocop/cop/lint/else_layout'
261
270
  require_relative 'rubocop/cop/lint/empty_conditional_body'
262
271
  require_relative 'rubocop/cop/lint/empty_ensure'
263
272
  require_relative 'rubocop/cop/lint/empty_expression'
273
+ require_relative 'rubocop/cop/lint/empty_file'
264
274
  require_relative 'rubocop/cop/lint/empty_interpolation'
265
275
  require_relative 'rubocop/cop/lint/empty_when'
266
276
  require_relative 'rubocop/cop/lint/ensure_return'
@@ -270,6 +280,7 @@ require_relative 'rubocop/cop/lint/float_comparison'
270
280
  require_relative 'rubocop/cop/lint/float_out_of_range'
271
281
  require_relative 'rubocop/cop/lint/format_parameter_mismatch'
272
282
  require_relative 'rubocop/cop/lint/heredoc_method_call_position'
283
+ require_relative 'rubocop/cop/lint/identity_comparison'
273
284
  require_relative 'rubocop/cop/lint/implicit_string_concatenation'
274
285
  require_relative 'rubocop/cop/lint/inherit_exception'
275
286
  require_relative 'rubocop/cop/lint/ineffective_access_modifier'
@@ -320,6 +331,7 @@ require_relative 'rubocop/cop/lint/suppressed_exception'
320
331
  require_relative 'rubocop/cop/lint/syntax'
321
332
  require_relative 'rubocop/cop/lint/to_json'
322
333
  require_relative 'rubocop/cop/lint/top_level_return_with_argument'
334
+ require_relative 'rubocop/cop/lint/trailing_comma_in_attribute_declaration'
323
335
  require_relative 'rubocop/cop/lint/underscore_prefixed_variable_name'
324
336
  require_relative 'rubocop/cop/lint/unified_integer'
325
337
  require_relative 'rubocop/cop/lint/unreachable_code'
@@ -331,7 +343,9 @@ require_relative 'rubocop/cop/lint/uri_regexp'
331
343
  require_relative 'rubocop/cop/lint/useless_access_modifier'
332
344
  require_relative 'rubocop/cop/lint/useless_assignment'
333
345
  require_relative 'rubocop/cop/lint/useless_else_without_rescue'
346
+ require_relative 'rubocop/cop/lint/useless_method_definition'
334
347
  require_relative 'rubocop/cop/lint/useless_setter_call'
348
+ require_relative 'rubocop/cop/lint/useless_times'
335
349
  require_relative 'rubocop/cop/lint/void'
336
350
 
337
351
  require_relative 'rubocop/cop/metrics/utils/iterating_block'
@@ -385,10 +399,12 @@ require_relative 'rubocop/cop/style/character_literal'
385
399
  require_relative 'rubocop/cop/style/class_and_module_children'
386
400
  require_relative 'rubocop/cop/style/class_check'
387
401
  require_relative 'rubocop/cop/style/class_methods'
402
+ require_relative 'rubocop/cop/style/class_methods_definitions'
388
403
  require_relative 'rubocop/cop/style/class_vars'
389
404
  require_relative 'rubocop/cop/style/collection_methods'
390
405
  require_relative 'rubocop/cop/style/colon_method_call'
391
406
  require_relative 'rubocop/cop/style/colon_method_definition'
407
+ require_relative 'rubocop/cop/style/combinable_loops'
392
408
  require_relative 'rubocop/cop/style/command_literal'
393
409
  require_relative 'rubocop/cop/style/comment_annotation'
394
410
  require_relative 'rubocop/cop/style/commented_keyword'
@@ -442,6 +458,7 @@ require_relative 'rubocop/cop/style/infinite_loop'
442
458
  require_relative 'rubocop/cop/style/inverse_methods'
443
459
  require_relative 'rubocop/cop/style/inline_comment'
444
460
  require_relative 'rubocop/cop/style/ip_addresses'
461
+ require_relative 'rubocop/cop/style/keyword_parameters_order'
445
462
  require_relative 'rubocop/cop/style/lambda'
446
463
  require_relative 'rubocop/cop/style/lambda_call'
447
464
  require_relative 'rubocop/cop/style/line_end_concatenation'
@@ -450,6 +467,8 @@ require_relative 'rubocop/cop/style/method_call_with_args_parentheses'
450
467
  require_relative 'rubocop/cop/style/redundant_assignment'
451
468
  require_relative 'rubocop/cop/style/redundant_fetch_block'
452
469
  require_relative 'rubocop/cop/style/redundant_file_extension_in_require'
470
+ require_relative 'rubocop/cop/style/redundant_self_assignment'
471
+ require_relative 'rubocop/cop/style/sole_nested_conditional'
453
472
  require_relative 'rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses'
454
473
  require_relative 'rubocop/cop/style/method_call_with_args_parentheses/require_parentheses'
455
474
  require_relative 'rubocop/cop/style/method_called_on_do_end_block'
@@ -597,6 +616,7 @@ require_relative 'rubocop/config_obsoletion'
597
616
  require_relative 'rubocop/config_store'
598
617
  require_relative 'rubocop/config_validator'
599
618
  require_relative 'rubocop/target_finder'
619
+ require_relative 'rubocop/directive_comment'
600
620
  require_relative 'rubocop/comment_config'
601
621
  require_relative 'rubocop/magic_comment'
602
622
  require_relative 'rubocop/result_cache'
@@ -610,7 +630,13 @@ require_relative 'rubocop/cli/command/execute_runner'
610
630
  require_relative 'rubocop/cli/command/init_dotfile'
611
631
  require_relative 'rubocop/cli/command/show_cops'
612
632
  require_relative 'rubocop/cli/command/version'
633
+ require_relative 'rubocop/config_regeneration'
613
634
  require_relative 'rubocop/options'
614
635
  require_relative 'rubocop/remote_config'
615
636
  require_relative 'rubocop/target_ruby'
616
637
  require_relative 'rubocop/yaml_duplication_checker'
638
+
639
+ unless File.exist?("#{__dir__}/../rubocop.gemspec") # Check if we are a gem
640
+ RuboCop::ResultCache.rubocop_required_features = $LOADED_FEATURES - before_us
641
+ end
642
+ RuboCop::AST.rubocop_loaded if RuboCop::AST.respond_to?(:rubocop_loaded)