rubocop 0.87.1 → 0.91.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 (515) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -2
  3. data/bin/rubocop-profile +32 -0
  4. data/config/default.yml +267 -33
  5. data/lib/rubocop.rb +45 -5
  6. data/lib/rubocop/cached_data.rb +1 -0
  7. data/lib/rubocop/cli.rb +2 -2
  8. data/lib/rubocop/cli/command.rb +1 -0
  9. data/lib/rubocop/cli/command/auto_genenerate_config.rb +4 -3
  10. data/lib/rubocop/cli/command/base.rb +2 -0
  11. data/lib/rubocop/cli/command/execute_runner.rb +10 -1
  12. data/lib/rubocop/cli/command/init_dotfile.rb +1 -0
  13. data/lib/rubocop/cli/command/show_cops.rb +3 -2
  14. data/lib/rubocop/cli/command/version.rb +3 -2
  15. data/lib/rubocop/cli/environment.rb +1 -0
  16. data/lib/rubocop/comment_config.rb +10 -7
  17. data/lib/rubocop/config.rb +20 -3
  18. data/lib/rubocop/config_loader.rb +42 -18
  19. data/lib/rubocop/config_loader_resolver.rb +4 -3
  20. data/lib/rubocop/config_obsoletion.rb +7 -1
  21. data/lib/rubocop/config_store.rb +7 -3
  22. data/lib/rubocop/config_validator.rb +5 -4
  23. data/lib/rubocop/cop/autocorrect_logic.rb +1 -1
  24. data/lib/rubocop/cop/badge.rb +1 -1
  25. data/lib/rubocop/cop/base.rb +37 -6
  26. data/lib/rubocop/cop/bundler/duplicated_gem.rb +5 -1
  27. data/lib/rubocop/cop/bundler/gem_comment.rb +8 -3
  28. data/lib/rubocop/cop/bundler/insecure_protocol_source.rb +2 -0
  29. data/lib/rubocop/cop/commissioner.rb +47 -8
  30. data/lib/rubocop/cop/cop.rb +1 -1
  31. data/lib/rubocop/cop/correctors/alignment_corrector.rb +4 -4
  32. data/lib/rubocop/cop/correctors/condition_corrector.rb +3 -5
  33. data/lib/rubocop/cop/correctors/empty_line_corrector.rb +9 -10
  34. data/lib/rubocop/cop/correctors/line_break_corrector.rb +6 -6
  35. data/lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb +34 -3
  36. data/lib/rubocop/cop/correctors/parentheses_corrector.rb +5 -8
  37. data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +6 -11
  38. data/lib/rubocop/cop/correctors/punctuation_corrector.rb +8 -10
  39. data/lib/rubocop/cop/correctors/unused_arg_corrector.rb +15 -18
  40. data/lib/rubocop/cop/documentation.rb +22 -0
  41. data/lib/rubocop/cop/force.rb +1 -0
  42. data/lib/rubocop/cop/gemspec/required_ruby_version.rb +38 -12
  43. data/lib/rubocop/cop/generator.rb +2 -1
  44. data/lib/rubocop/cop/generator/configuration_injector.rb +2 -2
  45. data/lib/rubocop/cop/internal_affairs/method_name_equal.rb +5 -12
  46. data/lib/rubocop/cop/internal_affairs/node_destructuring.rb +1 -1
  47. data/lib/rubocop/cop/internal_affairs/node_type_predicate.rb +1 -0
  48. data/lib/rubocop/cop/internal_affairs/offense_location_keyword.rb +9 -8
  49. data/lib/rubocop/cop/internal_affairs/redundant_location_argument.rb +11 -7
  50. data/lib/rubocop/cop/internal_affairs/redundant_message_argument.rb +8 -8
  51. data/lib/rubocop/cop/internal_affairs/useless_message_assertion.rb +2 -2
  52. data/lib/rubocop/cop/layout/begin_end_alignment.rb +77 -0
  53. data/lib/rubocop/cop/layout/block_alignment.rb +24 -20
  54. data/lib/rubocop/cop/layout/class_structure.rb +13 -16
  55. data/lib/rubocop/cop/layout/closing_heredoc_indentation.rb +4 -6
  56. data/lib/rubocop/cop/layout/comment_indentation.rb +1 -1
  57. data/lib/rubocop/cop/layout/condition_position.rb +13 -15
  58. data/lib/rubocop/cop/layout/def_end_alignment.rb +8 -5
  59. data/lib/rubocop/cop/layout/dot_position.rb +21 -17
  60. data/lib/rubocop/cop/layout/empty_comment.rb +30 -23
  61. data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +19 -16
  62. data/lib/rubocop/cop/layout/empty_line_after_magic_comment.rb +13 -13
  63. data/lib/rubocop/cop/layout/empty_line_after_multiline_condition.rb +145 -0
  64. data/lib/rubocop/cop/layout/empty_line_between_defs.rb +21 -23
  65. data/lib/rubocop/cop/layout/empty_lines.rb +6 -9
  66. data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +5 -6
  67. data/lib/rubocop/cop/layout/empty_lines_around_arguments.rb +7 -8
  68. data/lib/rubocop/cop/layout/empty_lines_around_attribute_accessor.rb +3 -6
  69. data/lib/rubocop/cop/layout/empty_lines_around_begin_body.rb +2 -5
  70. data/lib/rubocop/cop/layout/empty_lines_around_block_body.rb +2 -5
  71. data/lib/rubocop/cop/layout/empty_lines_around_class_body.rb +2 -5
  72. data/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +2 -5
  73. data/lib/rubocop/cop/layout/empty_lines_around_method_body.rb +2 -5
  74. data/lib/rubocop/cop/layout/empty_lines_around_module_body.rb +2 -5
  75. data/lib/rubocop/cop/layout/end_alignment.rb +14 -19
  76. data/lib/rubocop/cop/layout/extra_spacing.rb +22 -36
  77. data/lib/rubocop/cop/layout/first_array_element_line_break.rb +2 -5
  78. data/lib/rubocop/cop/layout/first_hash_element_line_break.rb +2 -5
  79. data/lib/rubocop/cop/layout/first_method_argument_line_break.rb +5 -9
  80. data/lib/rubocop/cop/layout/first_method_parameter_line_break.rb +2 -5
  81. data/lib/rubocop/cop/layout/hash_alignment.rb +17 -20
  82. data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +15 -14
  83. data/lib/rubocop/cop/layout/heredoc_indentation.rb +16 -13
  84. data/lib/rubocop/cop/layout/indentation_style.rb +0 -2
  85. data/lib/rubocop/cop/layout/initial_indentation.rb +6 -7
  86. data/lib/rubocop/cop/layout/leading_comment_space.rb +12 -10
  87. data/lib/rubocop/cop/layout/leading_empty_lines.rb +6 -11
  88. data/lib/rubocop/cop/layout/multiline_array_brace_layout.rb +2 -5
  89. data/lib/rubocop/cop/layout/multiline_array_line_breaks.rb +2 -5
  90. data/lib/rubocop/cop/layout/multiline_assignment_layout.rb +10 -14
  91. data/lib/rubocop/cop/layout/multiline_block_layout.rb +37 -24
  92. data/lib/rubocop/cop/layout/multiline_hash_brace_layout.rb +2 -5
  93. data/lib/rubocop/cop/layout/multiline_hash_key_line_breaks.rb +2 -5
  94. data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +5 -9
  95. data/lib/rubocop/cop/layout/multiline_method_call_brace_layout.rb +2 -5
  96. data/lib/rubocop/cop/layout/multiline_method_definition_brace_layout.rb +2 -5
  97. data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +32 -24
  98. data/lib/rubocop/cop/layout/space_after_colon.rb +11 -7
  99. data/lib/rubocop/cop/layout/space_after_comma.rb +2 -5
  100. data/lib/rubocop/cop/layout/space_after_method_name.rb +5 -6
  101. data/lib/rubocop/cop/layout/space_after_not.rb +9 -11
  102. data/lib/rubocop/cop/layout/space_after_semicolon.rb +2 -5
  103. data/lib/rubocop/cop/layout/space_around_block_parameters.rb +3 -2
  104. data/lib/rubocop/cop/layout/space_around_equals_in_parameter_default.rb +20 -15
  105. data/lib/rubocop/cop/layout/space_around_keyword.rb +17 -18
  106. data/lib/rubocop/cop/layout/space_around_method_call_operator.rb +33 -66
  107. data/lib/rubocop/cop/layout/space_around_operators.rb +17 -16
  108. data/lib/rubocop/cop/layout/space_before_block_braces.rb +23 -22
  109. data/lib/rubocop/cop/layout/space_before_comma.rb +3 -5
  110. data/lib/rubocop/cop/layout/space_before_comment.rb +10 -7
  111. data/lib/rubocop/cop/layout/space_before_first_arg.rb +7 -7
  112. data/lib/rubocop/cop/layout/space_before_semicolon.rb +2 -5
  113. data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +9 -17
  114. data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +16 -18
  115. data/lib/rubocop/cop/layout/space_inside_array_percent_literal.rb +3 -8
  116. data/lib/rubocop/cop/layout/space_inside_block_braces.rb +17 -16
  117. data/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +15 -19
  118. data/lib/rubocop/cop/layout/space_inside_parens.rb +9 -14
  119. data/lib/rubocop/cop/layout/space_inside_percent_literal_delimiters.rb +5 -10
  120. data/lib/rubocop/cop/layout/space_inside_range_literal.rb +8 -17
  121. data/lib/rubocop/cop/layout/space_inside_reference_brackets.rb +14 -22
  122. data/lib/rubocop/cop/layout/space_inside_string_interpolation.rb +10 -11
  123. data/lib/rubocop/cop/layout/trailing_empty_lines.rb +10 -15
  124. data/lib/rubocop/cop/layout/trailing_whitespace.rb +11 -11
  125. data/lib/rubocop/cop/lint/ambiguous_block_association.rb +7 -4
  126. data/lib/rubocop/cop/lint/ambiguous_operator.rb +17 -10
  127. data/lib/rubocop/cop/lint/ambiguous_regexp_literal.rb +11 -13
  128. data/lib/rubocop/cop/lint/assignment_in_condition.rb +2 -2
  129. data/lib/rubocop/cop/lint/big_decimal_new.rb +9 -10
  130. data/lib/rubocop/cop/lint/binary_operator_with_identical_operands.rb +50 -0
  131. data/lib/rubocop/cop/lint/boolean_symbol.rb +16 -11
  132. data/lib/rubocop/cop/lint/circular_argument_reference.rb +1 -1
  133. data/lib/rubocop/cop/lint/constant_definition_in_block.rb +54 -0
  134. data/lib/rubocop/cop/lint/constant_resolution.rb +2 -2
  135. data/lib/rubocop/cop/lint/debugger.rb +6 -1
  136. data/lib/rubocop/cop/lint/deprecated_class_methods.rb +7 -10
  137. data/lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb +17 -13
  138. data/lib/rubocop/cop/lint/disjunctive_assignment_in_constructor.rb +8 -2
  139. data/lib/rubocop/cop/lint/duplicate_case_condition.rb +1 -1
  140. data/lib/rubocop/cop/lint/duplicate_elsif_condition.rb +39 -0
  141. data/lib/rubocop/cop/lint/duplicate_hash_key.rb +1 -1
  142. data/lib/rubocop/cop/lint/duplicate_methods.rb +7 -6
  143. data/lib/rubocop/cop/lint/duplicate_require.rb +46 -0
  144. data/lib/rubocop/cop/lint/duplicate_rescue_exception.rb +49 -0
  145. data/lib/rubocop/cop/lint/each_with_object_argument.rb +2 -1
  146. data/lib/rubocop/cop/lint/else_layout.rb +1 -1
  147. data/lib/rubocop/cop/lint/empty_conditional_body.rb +67 -0
  148. data/lib/rubocop/cop/lint/empty_ensure.rb +5 -5
  149. data/lib/rubocop/cop/lint/empty_expression.rb +2 -2
  150. data/lib/rubocop/cop/lint/empty_file.rb +50 -0
  151. data/lib/rubocop/cop/lint/empty_interpolation.rb +5 -6
  152. data/lib/rubocop/cop/lint/empty_when.rb +2 -2
  153. data/lib/rubocop/cop/lint/ensure_return.rb +27 -29
  154. data/lib/rubocop/cop/lint/erb_new_arguments.rb +13 -10
  155. data/lib/rubocop/cop/lint/flip_flop.rb +1 -1
  156. data/lib/rubocop/cop/lint/float_comparison.rb +93 -0
  157. data/lib/rubocop/cop/lint/float_out_of_range.rb +1 -1
  158. data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +4 -3
  159. data/lib/rubocop/cop/lint/heredoc_method_call_position.rb +13 -14
  160. data/lib/rubocop/cop/lint/identity_comparison.rb +49 -0
  161. data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +5 -4
  162. data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +8 -8
  163. data/lib/rubocop/cop/lint/inherit_exception.rb +12 -7
  164. data/lib/rubocop/cop/lint/interpolation_check.rb +18 -15
  165. data/lib/rubocop/cop/lint/literal_as_condition.rb +14 -2
  166. data/lib/rubocop/cop/lint/literal_in_interpolation.rb +7 -7
  167. data/lib/rubocop/cop/lint/loop.rb +23 -2
  168. data/lib/rubocop/cop/lint/missing_cop_enable_directive.rb +6 -5
  169. data/lib/rubocop/cop/lint/missing_super.rb +99 -0
  170. data/lib/rubocop/cop/lint/mixed_regexp_capture_types.rb +3 -36
  171. data/lib/rubocop/cop/lint/multiple_comparison.rb +9 -10
  172. data/lib/rubocop/cop/lint/nested_method_definition.rb +14 -20
  173. data/lib/rubocop/cop/lint/nested_percent_literal.rb +1 -1
  174. data/lib/rubocop/cop/lint/next_without_accumulator.rb +1 -1
  175. data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +82 -11
  176. data/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +2 -2
  177. data/lib/rubocop/cop/lint/number_conversion.rb +7 -9
  178. data/lib/rubocop/cop/lint/ordered_magic_comments.rb +11 -13
  179. data/lib/rubocop/cop/lint/out_of_range_regexp_ref.rb +79 -0
  180. data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +4 -10
  181. data/lib/rubocop/cop/lint/percent_string_array.rb +3 -6
  182. data/lib/rubocop/cop/lint/percent_symbol_array.rb +13 -12
  183. data/lib/rubocop/cop/lint/raise_exception.rb +13 -10
  184. data/lib/rubocop/cop/lint/rand_one.rb +2 -1
  185. data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +16 -19
  186. data/lib/rubocop/cop/lint/redundant_cop_enable_directive.rb +7 -11
  187. data/lib/rubocop/cop/lint/redundant_require_statement.rb +5 -7
  188. data/lib/rubocop/cop/lint/redundant_splat_expansion.rb +13 -9
  189. data/lib/rubocop/cop/lint/redundant_string_coercion.rb +6 -13
  190. data/lib/rubocop/cop/lint/redundant_with_index.rb +11 -14
  191. data/lib/rubocop/cop/lint/redundant_with_object.rb +11 -14
  192. data/lib/rubocop/cop/lint/regexp_as_condition.rb +4 -6
  193. data/lib/rubocop/cop/lint/require_parentheses.rb +2 -2
  194. data/lib/rubocop/cop/lint/rescue_exception.rb +1 -1
  195. data/lib/rubocop/cop/lint/rescue_type.rb +8 -8
  196. data/lib/rubocop/cop/lint/return_in_void_context.rb +2 -4
  197. data/lib/rubocop/cop/lint/safe_navigation_chain.rb +3 -6
  198. data/lib/rubocop/cop/lint/safe_navigation_consistency.rb +14 -10
  199. data/lib/rubocop/cop/lint/safe_navigation_with_empty.rb +7 -7
  200. data/lib/rubocop/cop/lint/script_permission.rb +10 -7
  201. data/lib/rubocop/cop/lint/self_assignment.rb +78 -0
  202. data/lib/rubocop/cop/lint/send_with_mixin_argument.rb +8 -12
  203. data/lib/rubocop/cop/lint/shadowed_argument.rb +3 -3
  204. data/lib/rubocop/cop/lint/shadowed_exception.rb +2 -2
  205. data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +7 -7
  206. data/lib/rubocop/cop/lint/struct_new_override.rb +2 -1
  207. data/lib/rubocop/cop/lint/suppressed_exception.rb +4 -7
  208. data/lib/rubocop/cop/lint/to_json.rb +20 -11
  209. data/lib/rubocop/cop/lint/top_level_return_with_argument.rb +34 -0
  210. data/lib/rubocop/cop/lint/trailing_comma_in_attribute_declaration.rb +57 -0
  211. data/lib/rubocop/cop/lint/underscore_prefixed_variable_name.rb +4 -4
  212. data/lib/rubocop/cop/lint/unified_integer.rb +4 -6
  213. data/lib/rubocop/cop/lint/unreachable_code.rb +1 -1
  214. data/lib/rubocop/cop/lint/unreachable_loop.rb +175 -0
  215. data/lib/rubocop/cop/lint/unused_block_argument.rb +8 -3
  216. data/lib/rubocop/cop/lint/unused_method_argument.rb +8 -3
  217. data/lib/rubocop/cop/lint/uri_escape_unescape.rb +4 -2
  218. data/lib/rubocop/cop/lint/uri_regexp.rb +12 -47
  219. data/lib/rubocop/cop/lint/useless_access_modifier.rb +25 -15
  220. data/lib/rubocop/cop/lint/useless_assignment.rb +4 -4
  221. data/lib/rubocop/cop/lint/useless_else_without_rescue.rb +6 -15
  222. data/lib/rubocop/cop/lint/useless_method_definition.rb +70 -0
  223. data/lib/rubocop/cop/lint/useless_setter_call.rb +4 -6
  224. data/lib/rubocop/cop/lint/useless_times.rb +97 -0
  225. data/lib/rubocop/cop/lint/void.rb +3 -7
  226. data/lib/rubocop/cop/metrics/abc_size.rb +1 -1
  227. data/lib/rubocop/cop/metrics/block_length.rb +2 -2
  228. data/lib/rubocop/cop/metrics/block_nesting.rb +2 -2
  229. data/lib/rubocop/cop/metrics/class_length.rb +2 -2
  230. data/lib/rubocop/cop/metrics/cyclomatic_complexity.rb +2 -1
  231. data/lib/rubocop/cop/metrics/method_length.rb +2 -2
  232. data/lib/rubocop/cop/metrics/module_length.rb +2 -2
  233. data/lib/rubocop/cop/metrics/parameter_lists.rb +2 -6
  234. data/lib/rubocop/cop/metrics/perceived_complexity.rb +7 -8
  235. data/lib/rubocop/cop/metrics/utils/abc_size_calculator.rb +50 -5
  236. data/lib/rubocop/cop/metrics/utils/code_length_calculator.rb +53 -24
  237. data/lib/rubocop/cop/metrics/utils/repeated_csend_discount.rb +37 -0
  238. data/lib/rubocop/cop/migration/department_name.rb +14 -16
  239. data/lib/rubocop/cop/mixin/alignment.rb +5 -1
  240. data/lib/rubocop/cop/mixin/allowed_methods.rb +2 -0
  241. data/lib/rubocop/cop/mixin/annotation_comment.rb +5 -0
  242. data/lib/rubocop/cop/mixin/array_min_size.rb +1 -1
  243. data/lib/rubocop/cop/mixin/check_line_breakable.rb +17 -8
  244. data/lib/rubocop/cop/mixin/code_length.rb +22 -5
  245. data/lib/rubocop/cop/mixin/comments_help.rb +48 -0
  246. data/lib/rubocop/cop/mixin/configurable_naming.rb +2 -2
  247. data/lib/rubocop/cop/mixin/empty_lines_around_body.rb +8 -7
  248. data/lib/rubocop/cop/mixin/empty_parameter.rb +3 -1
  249. data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +12 -1
  250. data/lib/rubocop/cop/mixin/first_element_line_break.rb +3 -1
  251. data/lib/rubocop/cop/mixin/hash_transform_method.rb +31 -12
  252. data/lib/rubocop/cop/mixin/line_length_help.rb +1 -3
  253. data/lib/rubocop/cop/mixin/method_complexity.rb +10 -2
  254. data/lib/rubocop/cop/mixin/multiline_element_line_breaks.rb +3 -1
  255. data/lib/rubocop/cop/mixin/multiline_literal_brace_layout.rb +13 -12
  256. data/lib/rubocop/cop/mixin/negative_conditional.rb +2 -2
  257. data/lib/rubocop/cop/mixin/percent_array.rb +16 -9
  258. data/lib/rubocop/cop/mixin/range_help.rb +18 -4
  259. data/lib/rubocop/cop/mixin/regexp_literal_help.rb +1 -1
  260. data/lib/rubocop/cop/mixin/rescue_node.rb +10 -1
  261. data/lib/rubocop/cop/mixin/space_after_punctuation.rb +4 -3
  262. data/lib/rubocop/cop/mixin/space_before_punctuation.rb +4 -3
  263. data/lib/rubocop/cop/mixin/statement_modifier.rb +39 -10
  264. data/lib/rubocop/cop/mixin/surrounding_space.rb +8 -29
  265. data/lib/rubocop/cop/mixin/trailing_comma.rb +9 -11
  266. data/lib/rubocop/cop/mixin/uncommunicative_name.rb +6 -13
  267. data/lib/rubocop/cop/mixin/unused_argument.rb +4 -6
  268. data/lib/rubocop/cop/naming/accessor_method_name.rb +4 -2
  269. data/lib/rubocop/cop/naming/ascii_identifiers.rb +3 -3
  270. data/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +2 -2
  271. data/lib/rubocop/cop/naming/block_parameter_name.rb +1 -1
  272. data/lib/rubocop/cop/naming/class_and_module_camel_case.rb +2 -2
  273. data/lib/rubocop/cop/naming/constant_name.rb +2 -2
  274. data/lib/rubocop/cop/naming/file_name.rb +4 -4
  275. data/lib/rubocop/cop/naming/heredoc_delimiter_case.rb +2 -2
  276. data/lib/rubocop/cop/naming/heredoc_delimiter_naming.rb +2 -2
  277. data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +2 -2
  278. data/lib/rubocop/cop/naming/method_parameter_name.rb +1 -1
  279. data/lib/rubocop/cop/naming/predicate_name.rb +3 -5
  280. data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +12 -11
  281. data/lib/rubocop/cop/offense.rb +1 -0
  282. data/lib/rubocop/cop/registry.rb +3 -3
  283. data/lib/rubocop/cop/security/eval.rb +3 -2
  284. data/lib/rubocop/cop/security/json_load.rb +7 -8
  285. data/lib/rubocop/cop/security/marshal_load.rb +3 -4
  286. data/lib/rubocop/cop/security/open.rb +3 -2
  287. data/lib/rubocop/cop/security/yaml_load.rb +7 -6
  288. data/lib/rubocop/cop/severity.rb +0 -8
  289. data/lib/rubocop/cop/style/access_modifier_declarations.rb +7 -8
  290. data/lib/rubocop/cop/style/accessor_grouping.rb +29 -20
  291. data/lib/rubocop/cop/style/alias.rb +43 -36
  292. data/lib/rubocop/cop/style/and_or.rb +9 -11
  293. data/lib/rubocop/cop/style/array_coercion.rb +63 -0
  294. data/lib/rubocop/cop/style/array_join.rb +7 -8
  295. data/lib/rubocop/cop/style/ascii_comments.rb +4 -4
  296. data/lib/rubocop/cop/style/attr.rb +12 -9
  297. data/lib/rubocop/cop/style/auto_resource_cleanup.rb +7 -7
  298. data/lib/rubocop/cop/style/bare_percent_literals.rb +10 -12
  299. data/lib/rubocop/cop/style/begin_block.rb +2 -2
  300. data/lib/rubocop/cop/style/bisected_attr_accessor.rb +14 -18
  301. data/lib/rubocop/cop/style/block_comments.rb +14 -18
  302. data/lib/rubocop/cop/style/block_delimiters.rb +23 -23
  303. data/lib/rubocop/cop/style/case_equality.rb +32 -5
  304. data/lib/rubocop/cop/style/case_like_if.rb +236 -0
  305. data/lib/rubocop/cop/style/class_and_module_children.rb +16 -11
  306. data/lib/rubocop/cop/style/class_check.rb +6 -11
  307. data/lib/rubocop/cop/style/class_methods.rb +7 -11
  308. data/lib/rubocop/cop/style/class_methods_definitions.rb +157 -0
  309. data/lib/rubocop/cop/style/class_vars.rb +7 -12
  310. data/lib/rubocop/cop/style/collection_methods.rb +11 -17
  311. data/lib/rubocop/cop/style/colon_method_call.rb +8 -9
  312. data/lib/rubocop/cop/style/colon_method_definition.rb +6 -6
  313. data/lib/rubocop/cop/style/combinable_loops.rb +89 -0
  314. data/lib/rubocop/cop/style/command_literal.rb +23 -24
  315. data/lib/rubocop/cop/style/comment_annotation.rb +15 -15
  316. data/lib/rubocop/cop/style/commented_keyword.rb +6 -3
  317. data/lib/rubocop/cop/style/conditional_assignment.rb +62 -64
  318. data/lib/rubocop/cop/style/constant_visibility.rb +3 -2
  319. data/lib/rubocop/cop/style/copyright.rb +12 -12
  320. data/lib/rubocop/cop/style/date_time.rb +1 -1
  321. data/lib/rubocop/cop/style/def_with_parentheses.rb +8 -10
  322. data/lib/rubocop/cop/style/dir.rb +8 -10
  323. data/lib/rubocop/cop/style/disable_cops_within_source_code_directive.rb +7 -9
  324. data/lib/rubocop/cop/style/documentation.rb +6 -8
  325. data/lib/rubocop/cop/style/documentation_method.rb +1 -1
  326. data/lib/rubocop/cop/style/double_cop_disable_directive.rb +12 -15
  327. data/lib/rubocop/cop/style/double_negation.rb +3 -2
  328. data/lib/rubocop/cop/style/each_for_simple_loop.rb +5 -8
  329. data/lib/rubocop/cop/style/each_with_object.rb +16 -19
  330. data/lib/rubocop/cop/style/empty_block_parameter.rb +9 -10
  331. data/lib/rubocop/cop/style/empty_case_condition.rb +19 -20
  332. data/lib/rubocop/cop/style/empty_else.rb +17 -19
  333. data/lib/rubocop/cop/style/empty_lambda_parameter.rb +9 -10
  334. data/lib/rubocop/cop/style/empty_literal.rb +18 -17
  335. data/lib/rubocop/cop/style/empty_method.rb +10 -13
  336. data/lib/rubocop/cop/style/encoding.rb +5 -9
  337. data/lib/rubocop/cop/style/end_block.rb +4 -6
  338. data/lib/rubocop/cop/style/eval_with_location.rb +7 -7
  339. data/lib/rubocop/cop/style/even_odd.rb +8 -11
  340. data/lib/rubocop/cop/style/expand_path_arguments.rb +22 -21
  341. data/lib/rubocop/cop/style/explicit_block_argument.rb +102 -0
  342. data/lib/rubocop/cop/style/exponential_notation.rb +7 -9
  343. data/lib/rubocop/cop/style/float_division.rb +10 -11
  344. data/lib/rubocop/cop/style/for.rb +11 -15
  345. data/lib/rubocop/cop/style/format_string.rb +18 -19
  346. data/lib/rubocop/cop/style/format_string_token.rb +10 -12
  347. data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +19 -41
  348. data/lib/rubocop/cop/style/global_std_stream.rb +65 -0
  349. data/lib/rubocop/cop/style/global_vars.rb +2 -2
  350. data/lib/rubocop/cop/style/guard_clause.rb +6 -6
  351. data/lib/rubocop/cop/style/hash_as_last_array_item.rb +79 -0
  352. data/lib/rubocop/cop/style/hash_each_methods.rb +5 -8
  353. data/lib/rubocop/cop/style/hash_like_case.rb +76 -0
  354. data/lib/rubocop/cop/style/hash_syntax.rb +10 -8
  355. data/lib/rubocop/cop/style/hash_transform_keys.rb +19 -11
  356. data/lib/rubocop/cop/style/hash_transform_values.rb +18 -10
  357. data/lib/rubocop/cop/style/identical_conditional_branches.rb +2 -2
  358. data/lib/rubocop/cop/style/if_inside_else.rb +3 -3
  359. data/lib/rubocop/cop/style/if_unless_modifier.rb +19 -41
  360. data/lib/rubocop/cop/style/if_unless_modifier_of_if_unless.rb +3 -7
  361. data/lib/rubocop/cop/style/if_with_semicolon.rb +3 -6
  362. data/lib/rubocop/cop/style/implicit_runtime_error.rb +2 -1
  363. data/lib/rubocop/cop/style/infinite_loop.rb +24 -24
  364. data/lib/rubocop/cop/style/inline_comment.rb +3 -3
  365. data/lib/rubocop/cop/style/inverse_methods.rb +22 -32
  366. data/lib/rubocop/cop/style/keyword_parameters_order.rb +58 -0
  367. data/lib/rubocop/cop/style/lambda.rb +7 -12
  368. data/lib/rubocop/cop/style/lambda_call.rb +17 -14
  369. data/lib/rubocop/cop/style/line_end_concatenation.rb +19 -16
  370. data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +2 -1
  371. data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +16 -11
  372. data/lib/rubocop/cop/style/method_call_with_args_parentheses/require_parentheses.rb +4 -8
  373. data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +8 -7
  374. data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +12 -3
  375. data/lib/rubocop/cop/style/method_def_parentheses.rb +11 -16
  376. data/lib/rubocop/cop/style/min_max.rb +8 -12
  377. data/lib/rubocop/cop/style/missing_else.rb +11 -21
  378. data/lib/rubocop/cop/style/missing_respond_to_missing.rb +10 -3
  379. data/lib/rubocop/cop/style/mixin_grouping.rb +24 -27
  380. data/lib/rubocop/cop/style/mixin_usage.rb +2 -1
  381. data/lib/rubocop/cop/style/module_function.rb +10 -13
  382. data/lib/rubocop/cop/style/multiline_if_modifier.rb +3 -10
  383. data/lib/rubocop/cop/style/multiline_if_then.rb +4 -10
  384. data/lib/rubocop/cop/style/multiline_memoization.rb +14 -12
  385. data/lib/rubocop/cop/style/multiline_method_signature.rb +2 -2
  386. data/lib/rubocop/cop/style/multiline_ternary_operator.rb +17 -6
  387. data/lib/rubocop/cop/style/multiline_when_then.rb +9 -11
  388. data/lib/rubocop/cop/style/multiple_comparison.rb +1 -1
  389. data/lib/rubocop/cop/style/mutable_constant.rb +23 -20
  390. data/lib/rubocop/cop/style/negated_if.rb +6 -6
  391. data/lib/rubocop/cop/style/negated_unless.rb +6 -6
  392. data/lib/rubocop/cop/style/negated_while.rb +7 -15
  393. data/lib/rubocop/cop/style/nested_modifier.rb +10 -13
  394. data/lib/rubocop/cop/style/nested_parenthesized_calls.rb +14 -12
  395. data/lib/rubocop/cop/style/nested_ternary_operator.rb +14 -16
  396. data/lib/rubocop/cop/style/next.rb +10 -14
  397. data/lib/rubocop/cop/style/nil_comparison.rb +13 -11
  398. data/lib/rubocop/cop/style/non_nil_check.rb +34 -26
  399. data/lib/rubocop/cop/style/not.rb +20 -26
  400. data/lib/rubocop/cop/style/numeric_literal_prefix.rb +4 -9
  401. data/lib/rubocop/cop/style/numeric_predicate.rb +9 -15
  402. data/lib/rubocop/cop/style/one_line_conditional.rb +71 -23
  403. data/lib/rubocop/cop/style/option_hash.rb +1 -1
  404. data/lib/rubocop/cop/style/optional_arguments.rb +1 -1
  405. data/lib/rubocop/cop/style/optional_boolean_parameter.rb +42 -0
  406. data/lib/rubocop/cop/style/or_assignment.rb +13 -10
  407. data/lib/rubocop/cop/style/parallel_assignment.rb +18 -18
  408. data/lib/rubocop/cop/style/parentheses_around_condition.rb +6 -6
  409. data/lib/rubocop/cop/style/percent_literal_delimiters.rb +14 -20
  410. data/lib/rubocop/cop/style/percent_q_literals.rb +8 -10
  411. data/lib/rubocop/cop/style/perl_backrefs.rb +8 -10
  412. data/lib/rubocop/cop/style/preferred_hash_methods.rb +11 -14
  413. data/lib/rubocop/cop/style/proc.rb +6 -6
  414. data/lib/rubocop/cop/style/raise_args.rb +15 -24
  415. data/lib/rubocop/cop/style/random_with_offset.rb +17 -16
  416. data/lib/rubocop/cop/style/redundant_assignment.rb +8 -10
  417. data/lib/rubocop/cop/style/redundant_begin.rb +7 -9
  418. data/lib/rubocop/cop/style/redundant_capital_w.rb +6 -9
  419. data/lib/rubocop/cop/style/redundant_condition.rb +20 -9
  420. data/lib/rubocop/cop/style/redundant_exception.rb +2 -0
  421. data/lib/rubocop/cop/style/redundant_fetch_block.rb +3 -12
  422. data/lib/rubocop/cop/style/redundant_file_extension_in_require.rb +51 -0
  423. data/lib/rubocop/cop/style/redundant_freeze.rb +5 -7
  424. data/lib/rubocop/cop/style/redundant_interpolation.rb +25 -24
  425. data/lib/rubocop/cop/style/redundant_parentheses.rb +19 -12
  426. data/lib/rubocop/cop/style/redundant_regexp_character_class.rb +6 -13
  427. data/lib/rubocop/cop/style/redundant_regexp_escape.rb +14 -23
  428. data/lib/rubocop/cop/style/redundant_self.rb +2 -2
  429. data/lib/rubocop/cop/style/redundant_self_assignment.rb +116 -0
  430. data/lib/rubocop/cop/style/redundant_sort.rb +21 -13
  431. data/lib/rubocop/cop/style/regexp_literal.rb +10 -21
  432. data/lib/rubocop/cop/style/rescue_modifier.rb +29 -9
  433. data/lib/rubocop/cop/style/return_nil.rb +5 -5
  434. data/lib/rubocop/cop/style/safe_navigation.rb +22 -16
  435. data/lib/rubocop/cop/style/sample.rb +12 -14
  436. data/lib/rubocop/cop/style/self_assignment.rb +26 -22
  437. data/lib/rubocop/cop/style/semicolon.rb +6 -9
  438. data/lib/rubocop/cop/style/send.rb +4 -5
  439. data/lib/rubocop/cop/style/signal_exception.rb +25 -19
  440. data/lib/rubocop/cop/style/single_argument_dig.rb +55 -0
  441. data/lib/rubocop/cop/style/single_line_block_params.rb +4 -2
  442. data/lib/rubocop/cop/style/single_line_methods.rb +18 -17
  443. data/lib/rubocop/cop/style/slicing_with_range.rb +6 -8
  444. data/lib/rubocop/cop/style/sole_nested_conditional.rb +66 -0
  445. data/lib/rubocop/cop/style/special_global_vars.rb +10 -15
  446. data/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +17 -20
  447. data/lib/rubocop/cop/style/stderr_puts.rb +5 -6
  448. data/lib/rubocop/cop/style/string_concatenation.rb +106 -0
  449. data/lib/rubocop/cop/style/string_hash_keys.rb +6 -7
  450. data/lib/rubocop/cop/style/string_methods.rb +7 -17
  451. data/lib/rubocop/cop/style/strip.rb +9 -14
  452. data/lib/rubocop/cop/style/struct_inheritance.rb +4 -7
  453. data/lib/rubocop/cop/style/symbol_array.rb +6 -17
  454. data/lib/rubocop/cop/style/symbol_literal.rb +4 -6
  455. data/lib/rubocop/cop/style/symbol_proc.rb +15 -19
  456. data/lib/rubocop/cop/style/ternary_parentheses.rb +21 -20
  457. data/lib/rubocop/cop/style/trailing_body_on_class.rb +3 -6
  458. data/lib/rubocop/cop/style/trailing_body_on_method_definition.rb +4 -7
  459. data/lib/rubocop/cop/style/trailing_body_on_module.rb +3 -6
  460. data/lib/rubocop/cop/style/trailing_comma_in_arguments.rb +2 -5
  461. data/lib/rubocop/cop/style/trailing_comma_in_array_literal.rb +2 -5
  462. data/lib/rubocop/cop/style/trailing_comma_in_block_args.rb +7 -6
  463. data/lib/rubocop/cop/style/trailing_comma_in_hash_literal.rb +2 -5
  464. data/lib/rubocop/cop/style/trailing_method_end_statement.rb +9 -32
  465. data/lib/rubocop/cop/style/trailing_underscore_variable.rb +8 -17
  466. data/lib/rubocop/cop/style/trivial_accessors.rb +26 -30
  467. data/lib/rubocop/cop/style/unless_else.rb +5 -8
  468. data/lib/rubocop/cop/style/unpack_first.rb +5 -8
  469. data/lib/rubocop/cop/style/variable_interpolation.rb +7 -10
  470. data/lib/rubocop/cop/style/when_then.rb +4 -6
  471. data/lib/rubocop/cop/style/while_until_do.rb +6 -16
  472. data/lib/rubocop/cop/style/while_until_modifier.rb +6 -20
  473. data/lib/rubocop/cop/style/word_array.rb +5 -23
  474. data/lib/rubocop/cop/style/yoda_condition.rb +4 -15
  475. data/lib/rubocop/cop/style/zero_length_predicate.rb +17 -19
  476. data/lib/rubocop/cop/team.rb +2 -1
  477. data/lib/rubocop/cop/tokens_util.rb +84 -0
  478. data/lib/rubocop/cop/util.rb +3 -13
  479. data/lib/rubocop/cop/utils/format_string.rb +3 -5
  480. data/lib/rubocop/cop/variable_force.rb +2 -2
  481. data/lib/rubocop/cop/variable_force/branch.rb +1 -0
  482. data/lib/rubocop/cop/variable_force/variable.rb +7 -5
  483. data/lib/rubocop/cops_documentation_generator.rb +284 -0
  484. data/lib/rubocop/core_ext/string.rb +2 -2
  485. data/lib/rubocop/error.rb +1 -0
  486. data/lib/rubocop/ext/regexp_node.rb +46 -0
  487. data/lib/rubocop/file_finder.rb +13 -12
  488. data/lib/rubocop/formatter/auto_gen_config_formatter.rb +2 -1
  489. data/lib/rubocop/formatter/disabled_config_formatter.rb +1 -1
  490. data/lib/rubocop/formatter/formatter_set.rb +1 -0
  491. data/lib/rubocop/formatter/html_formatter.rb +2 -0
  492. data/lib/rubocop/formatter/junit_formatter.rb +1 -1
  493. data/lib/rubocop/formatter/progress_formatter.rb +2 -1
  494. data/lib/rubocop/formatter/quiet_formatter.rb +1 -1
  495. data/lib/rubocop/formatter/simple_text_formatter.rb +36 -6
  496. data/lib/rubocop/name_similarity.rb +1 -0
  497. data/lib/rubocop/options.rb +25 -4
  498. data/lib/rubocop/path_util.rb +17 -17
  499. data/lib/rubocop/rake_task.rb +1 -0
  500. data/lib/rubocop/remote_config.rb +1 -0
  501. data/lib/rubocop/result_cache.rb +37 -15
  502. data/lib/rubocop/rspec/cop_helper.rb +4 -1
  503. data/lib/rubocop/rspec/expect_offense.rb +37 -6
  504. data/lib/rubocop/rspec/shared_contexts.rb +25 -14
  505. data/lib/rubocop/runner.rb +36 -21
  506. data/lib/rubocop/string_interpreter.rb +3 -0
  507. data/lib/rubocop/target_finder.rb +14 -10
  508. data/lib/rubocop/target_ruby.rb +6 -0
  509. data/lib/rubocop/version.rb +3 -2
  510. data/lib/rubocop/yaml_duplication_checker.rb +1 -0
  511. metadata +45 -8
  512. data/lib/rubocop/cop/lint/useless_comparison.rb +0 -28
  513. data/lib/rubocop/cop/mixin/parser_diagnostic.rb +0 -37
  514. data/lib/rubocop/cop/mixin/too_many_lines.rb +0 -25
  515. data/lib/rubocop/cop/style/method_missing_super.rb +0 -34
@@ -1,14 +1,16 @@
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
11
  require 'rubocop-ast'
11
12
  require_relative 'rubocop/ast_aliases'
13
+ require_relative 'rubocop/ext/regexp_node'
12
14
 
13
15
  require_relative 'rubocop/version'
14
16
 
@@ -23,6 +25,7 @@ require_relative 'rubocop/string_interpreter'
23
25
  require_relative 'rubocop/error'
24
26
  require_relative 'rubocop/warning'
25
27
 
28
+ require_relative 'rubocop/cop/tokens_util'
26
29
  require_relative 'rubocop/cop/util'
27
30
  require_relative 'rubocop/cop/offense'
28
31
  require_relative 'rubocop/cop/message_annotator'
@@ -33,6 +36,7 @@ require_relative 'rubocop/cop/registry'
33
36
  require_relative 'rubocop/cop/base'
34
37
  require_relative 'rubocop/cop/cop'
35
38
  require_relative 'rubocop/cop/commissioner'
39
+ require_relative 'rubocop/cop/documentation'
36
40
  require_relative 'rubocop/cop/corrector'
37
41
  require_relative 'rubocop/cop/force'
38
42
  require_relative 'rubocop/cop/severity'
@@ -81,6 +85,7 @@ require_relative 'rubocop/cop/mixin/integer_node'
81
85
  require_relative 'rubocop/cop/mixin/interpolation'
82
86
  require_relative 'rubocop/cop/mixin/line_length_help'
83
87
  require_relative 'rubocop/cop/mixin/match_range'
88
+ require_relative 'rubocop/cop/metrics/utils/repeated_csend_discount'
84
89
  require_relative 'rubocop/cop/mixin/method_complexity'
85
90
  require_relative 'rubocop/cop/mixin/method_preference'
86
91
  require_relative 'rubocop/cop/mixin/min_body_length'
@@ -94,7 +99,6 @@ require_relative 'rubocop/cop/mixin/nil_methods'
94
99
  require_relative 'rubocop/cop/mixin/on_normal_if_unless'
95
100
  require_relative 'rubocop/cop/mixin/ordered_gem_node'
96
101
  require_relative 'rubocop/cop/mixin/parentheses'
97
- require_relative 'rubocop/cop/mixin/parser_diagnostic'
98
102
  require_relative 'rubocop/cop/mixin/percent_array'
99
103
  require_relative 'rubocop/cop/mixin/percent_literal'
100
104
  require_relative 'rubocop/cop/mixin/preceding_following_alignment'
@@ -110,12 +114,12 @@ require_relative 'rubocop/cop/mixin/statement_modifier'
110
114
  require_relative 'rubocop/cop/mixin/string_help'
111
115
  require_relative 'rubocop/cop/mixin/string_literals_help'
112
116
  require_relative 'rubocop/cop/mixin/target_ruby_version'
113
- require_relative 'rubocop/cop/mixin/too_many_lines'
114
117
  require_relative 'rubocop/cop/mixin/trailing_body'
115
118
  require_relative 'rubocop/cop/mixin/trailing_comma'
116
119
  require_relative 'rubocop/cop/mixin/uncommunicative_name'
117
120
  require_relative 'rubocop/cop/mixin/unused_argument'
118
121
  require_relative 'rubocop/cop/mixin/visibility_help'
122
+ require_relative 'rubocop/cop/mixin/comments_help' # relies on visibility_help
119
123
 
120
124
  require_relative 'rubocop/cop/utils/format_string'
121
125
 
@@ -151,6 +155,7 @@ require_relative 'rubocop/cop/layout/access_modifier_indentation'
151
155
  require_relative 'rubocop/cop/layout/argument_alignment'
152
156
  require_relative 'rubocop/cop/layout/array_alignment'
153
157
  require_relative 'rubocop/cop/layout/assignment_indentation'
158
+ require_relative 'rubocop/cop/layout/begin_end_alignment'
154
159
  require_relative 'rubocop/cop/layout/block_alignment'
155
160
  require_relative 'rubocop/cop/layout/block_end_newline'
156
161
  require_relative 'rubocop/cop/layout/case_indentation'
@@ -165,6 +170,7 @@ require_relative 'rubocop/cop/layout/else_alignment'
165
170
  require_relative 'rubocop/cop/layout/empty_comment'
166
171
  require_relative 'rubocop/cop/layout/empty_line_after_guard_clause'
167
172
  require_relative 'rubocop/cop/layout/empty_line_after_magic_comment'
173
+ require_relative 'rubocop/cop/layout/empty_line_after_multiline_condition'
168
174
  require_relative 'rubocop/cop/layout/empty_line_between_defs'
169
175
  require_relative 'rubocop/cop/layout/empty_lines_around_access_modifier'
170
176
  require_relative 'rubocop/cop/layout/empty_lines_around_arguments'
@@ -243,28 +249,37 @@ require_relative 'rubocop/cop/lint/ambiguous_operator'
243
249
  require_relative 'rubocop/cop/lint/ambiguous_regexp_literal'
244
250
  require_relative 'rubocop/cop/lint/assignment_in_condition'
245
251
  require_relative 'rubocop/cop/lint/big_decimal_new'
252
+ require_relative 'rubocop/cop/lint/binary_operator_with_identical_operands'
246
253
  require_relative 'rubocop/cop/lint/boolean_symbol'
247
254
  require_relative 'rubocop/cop/lint/circular_argument_reference'
255
+ require_relative 'rubocop/cop/lint/constant_definition_in_block'
248
256
  require_relative 'rubocop/cop/lint/constant_resolution'
249
257
  require_relative 'rubocop/cop/lint/debugger'
250
258
  require_relative 'rubocop/cop/lint/deprecated_class_methods'
251
259
  require_relative 'rubocop/cop/lint/deprecated_open_ssl_constant'
252
260
  require_relative 'rubocop/cop/lint/disjunctive_assignment_in_constructor'
253
261
  require_relative 'rubocop/cop/lint/duplicate_case_condition'
262
+ require_relative 'rubocop/cop/lint/duplicate_elsif_condition'
254
263
  require_relative 'rubocop/cop/lint/duplicate_hash_key'
255
264
  require_relative 'rubocop/cop/lint/duplicate_methods'
265
+ require_relative 'rubocop/cop/lint/duplicate_require'
266
+ require_relative 'rubocop/cop/lint/duplicate_rescue_exception'
256
267
  require_relative 'rubocop/cop/lint/each_with_object_argument'
257
268
  require_relative 'rubocop/cop/lint/else_layout'
269
+ require_relative 'rubocop/cop/lint/empty_conditional_body'
258
270
  require_relative 'rubocop/cop/lint/empty_ensure'
259
271
  require_relative 'rubocop/cop/lint/empty_expression'
272
+ require_relative 'rubocop/cop/lint/empty_file'
260
273
  require_relative 'rubocop/cop/lint/empty_interpolation'
261
274
  require_relative 'rubocop/cop/lint/empty_when'
262
275
  require_relative 'rubocop/cop/lint/ensure_return'
263
276
  require_relative 'rubocop/cop/lint/erb_new_arguments'
264
277
  require_relative 'rubocop/cop/lint/flip_flop'
278
+ require_relative 'rubocop/cop/lint/float_comparison'
265
279
  require_relative 'rubocop/cop/lint/float_out_of_range'
266
280
  require_relative 'rubocop/cop/lint/format_parameter_mismatch'
267
281
  require_relative 'rubocop/cop/lint/heredoc_method_call_position'
282
+ require_relative 'rubocop/cop/lint/identity_comparison'
268
283
  require_relative 'rubocop/cop/lint/implicit_string_concatenation'
269
284
  require_relative 'rubocop/cop/lint/inherit_exception'
270
285
  require_relative 'rubocop/cop/lint/ineffective_access_modifier'
@@ -273,6 +288,7 @@ require_relative 'rubocop/cop/lint/literal_as_condition'
273
288
  require_relative 'rubocop/cop/lint/literal_in_interpolation'
274
289
  require_relative 'rubocop/cop/lint/loop'
275
290
  require_relative 'rubocop/cop/lint/missing_cop_enable_directive'
291
+ require_relative 'rubocop/cop/lint/missing_super'
276
292
  require_relative 'rubocop/cop/lint/mixed_regexp_capture_types'
277
293
  require_relative 'rubocop/cop/lint/multiple_comparison'
278
294
  require_relative 'rubocop/cop/lint/nested_method_definition'
@@ -282,6 +298,7 @@ require_relative 'rubocop/cop/lint/non_deterministic_require_order'
282
298
  require_relative 'rubocop/cop/lint/non_local_exit_from_iterator'
283
299
  require_relative 'rubocop/cop/lint/number_conversion'
284
300
  require_relative 'rubocop/cop/lint/ordered_magic_comments'
301
+ require_relative 'rubocop/cop/lint/out_of_range_regexp_ref'
285
302
  require_relative 'rubocop/cop/lint/parentheses_as_grouped_expression'
286
303
  require_relative 'rubocop/cop/lint/percent_string_array'
287
304
  require_relative 'rubocop/cop/lint/percent_symbol_array'
@@ -303,6 +320,7 @@ require_relative 'rubocop/cop/lint/safe_navigation_consistency'
303
320
  require_relative 'rubocop/cop/lint/safe_navigation_chain'
304
321
  require_relative 'rubocop/cop/lint/safe_navigation_with_empty'
305
322
  require_relative 'rubocop/cop/lint/script_permission'
323
+ require_relative 'rubocop/cop/lint/self_assignment'
306
324
  require_relative 'rubocop/cop/lint/send_with_mixin_argument'
307
325
  require_relative 'rubocop/cop/lint/shadowed_argument'
308
326
  require_relative 'rubocop/cop/lint/shadowed_exception'
@@ -311,18 +329,22 @@ require_relative 'rubocop/cop/lint/struct_new_override'
311
329
  require_relative 'rubocop/cop/lint/suppressed_exception'
312
330
  require_relative 'rubocop/cop/lint/syntax'
313
331
  require_relative 'rubocop/cop/lint/to_json'
332
+ require_relative 'rubocop/cop/lint/top_level_return_with_argument'
333
+ require_relative 'rubocop/cop/lint/trailing_comma_in_attribute_declaration'
314
334
  require_relative 'rubocop/cop/lint/underscore_prefixed_variable_name'
315
335
  require_relative 'rubocop/cop/lint/unified_integer'
316
336
  require_relative 'rubocop/cop/lint/unreachable_code'
337
+ require_relative 'rubocop/cop/lint/unreachable_loop'
317
338
  require_relative 'rubocop/cop/lint/unused_block_argument'
318
339
  require_relative 'rubocop/cop/lint/unused_method_argument'
319
340
  require_relative 'rubocop/cop/lint/uri_escape_unescape'
320
341
  require_relative 'rubocop/cop/lint/uri_regexp'
321
342
  require_relative 'rubocop/cop/lint/useless_access_modifier'
322
343
  require_relative 'rubocop/cop/lint/useless_assignment'
323
- require_relative 'rubocop/cop/lint/useless_comparison'
324
344
  require_relative 'rubocop/cop/lint/useless_else_without_rescue'
345
+ require_relative 'rubocop/cop/lint/useless_method_definition'
325
346
  require_relative 'rubocop/cop/lint/useless_setter_call'
347
+ require_relative 'rubocop/cop/lint/useless_times'
326
348
  require_relative 'rubocop/cop/lint/void'
327
349
 
328
350
  require_relative 'rubocop/cop/metrics/utils/iterating_block'
@@ -360,6 +382,7 @@ require_relative 'rubocop/cop/style/access_modifier_declarations'
360
382
  require_relative 'rubocop/cop/style/accessor_grouping'
361
383
  require_relative 'rubocop/cop/style/alias'
362
384
  require_relative 'rubocop/cop/style/and_or'
385
+ require_relative 'rubocop/cop/style/array_coercion'
363
386
  require_relative 'rubocop/cop/style/array_join'
364
387
  require_relative 'rubocop/cop/style/ascii_comments'
365
388
  require_relative 'rubocop/cop/style/attr'
@@ -370,14 +393,17 @@ require_relative 'rubocop/cop/style/bisected_attr_accessor'
370
393
  require_relative 'rubocop/cop/style/block_comments'
371
394
  require_relative 'rubocop/cop/style/block_delimiters'
372
395
  require_relative 'rubocop/cop/style/case_equality'
396
+ require_relative 'rubocop/cop/style/case_like_if'
373
397
  require_relative 'rubocop/cop/style/character_literal'
374
398
  require_relative 'rubocop/cop/style/class_and_module_children'
375
399
  require_relative 'rubocop/cop/style/class_check'
376
400
  require_relative 'rubocop/cop/style/class_methods'
401
+ require_relative 'rubocop/cop/style/class_methods_definitions'
377
402
  require_relative 'rubocop/cop/style/class_vars'
378
403
  require_relative 'rubocop/cop/style/collection_methods'
379
404
  require_relative 'rubocop/cop/style/colon_method_call'
380
405
  require_relative 'rubocop/cop/style/colon_method_definition'
406
+ require_relative 'rubocop/cop/style/combinable_loops'
381
407
  require_relative 'rubocop/cop/style/command_literal'
382
408
  require_relative 'rubocop/cop/style/comment_annotation'
383
409
  require_relative 'rubocop/cop/style/commented_keyword'
@@ -405,15 +431,19 @@ require_relative 'rubocop/cop/style/end_block'
405
431
  require_relative 'rubocop/cop/style/eval_with_location'
406
432
  require_relative 'rubocop/cop/style/even_odd'
407
433
  require_relative 'rubocop/cop/style/expand_path_arguments'
434
+ require_relative 'rubocop/cop/style/explicit_block_argument'
408
435
  require_relative 'rubocop/cop/style/exponential_notation'
409
436
  require_relative 'rubocop/cop/style/float_division'
410
437
  require_relative 'rubocop/cop/style/for'
411
438
  require_relative 'rubocop/cop/style/format_string'
412
439
  require_relative 'rubocop/cop/style/format_string_token'
413
440
  require_relative 'rubocop/cop/style/frozen_string_literal_comment'
441
+ require_relative 'rubocop/cop/style/global_std_stream'
414
442
  require_relative 'rubocop/cop/style/global_vars'
415
443
  require_relative 'rubocop/cop/style/guard_clause'
444
+ require_relative 'rubocop/cop/style/hash_as_last_array_item'
416
445
  require_relative 'rubocop/cop/style/hash_each_methods'
446
+ require_relative 'rubocop/cop/style/hash_like_case'
417
447
  require_relative 'rubocop/cop/style/hash_syntax'
418
448
  require_relative 'rubocop/cop/style/hash_transform_keys'
419
449
  require_relative 'rubocop/cop/style/hash_transform_values'
@@ -427,6 +457,7 @@ require_relative 'rubocop/cop/style/infinite_loop'
427
457
  require_relative 'rubocop/cop/style/inverse_methods'
428
458
  require_relative 'rubocop/cop/style/inline_comment'
429
459
  require_relative 'rubocop/cop/style/ip_addresses'
460
+ require_relative 'rubocop/cop/style/keyword_parameters_order'
430
461
  require_relative 'rubocop/cop/style/lambda'
431
462
  require_relative 'rubocop/cop/style/lambda_call'
432
463
  require_relative 'rubocop/cop/style/line_end_concatenation'
@@ -434,11 +465,13 @@ require_relative 'rubocop/cop/style/method_call_without_args_parentheses'
434
465
  require_relative 'rubocop/cop/style/method_call_with_args_parentheses'
435
466
  require_relative 'rubocop/cop/style/redundant_assignment'
436
467
  require_relative 'rubocop/cop/style/redundant_fetch_block'
468
+ require_relative 'rubocop/cop/style/redundant_file_extension_in_require'
469
+ require_relative 'rubocop/cop/style/redundant_self_assignment'
470
+ require_relative 'rubocop/cop/style/sole_nested_conditional'
437
471
  require_relative 'rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses'
438
472
  require_relative 'rubocop/cop/style/method_call_with_args_parentheses/require_parentheses'
439
473
  require_relative 'rubocop/cop/style/method_called_on_do_end_block'
440
474
  require_relative 'rubocop/cop/style/method_def_parentheses'
441
- require_relative 'rubocop/cop/style/method_missing_super'
442
475
  require_relative 'rubocop/cop/style/min_max'
443
476
  require_relative 'rubocop/cop/style/missing_else'
444
477
  require_relative 'rubocop/cop/style/missing_respond_to_missing'
@@ -471,6 +504,7 @@ require_relative 'rubocop/cop/style/one_line_conditional'
471
504
  require_relative 'rubocop/cop/style/or_assignment'
472
505
  require_relative 'rubocop/cop/style/option_hash'
473
506
  require_relative 'rubocop/cop/style/optional_arguments'
507
+ require_relative 'rubocop/cop/style/optional_boolean_parameter'
474
508
  require_relative 'rubocop/cop/style/parallel_assignment'
475
509
  require_relative 'rubocop/cop/style/parentheses_around_condition'
476
510
  require_relative 'rubocop/cop/style/percent_literal_delimiters'
@@ -505,12 +539,14 @@ require_relative 'rubocop/cop/style/self_assignment'
505
539
  require_relative 'rubocop/cop/style/semicolon'
506
540
  require_relative 'rubocop/cop/style/send'
507
541
  require_relative 'rubocop/cop/style/signal_exception'
542
+ require_relative 'rubocop/cop/style/single_argument_dig'
508
543
  require_relative 'rubocop/cop/style/single_line_block_params'
509
544
  require_relative 'rubocop/cop/style/single_line_methods'
510
545
  require_relative 'rubocop/cop/style/slicing_with_range'
511
546
  require_relative 'rubocop/cop/style/special_global_vars'
512
547
  require_relative 'rubocop/cop/style/stabby_lambda_parentheses'
513
548
  require_relative 'rubocop/cop/style/stderr_puts'
549
+ require_relative 'rubocop/cop/style/string_concatenation'
514
550
  require_relative 'rubocop/cop/style/string_hash_keys'
515
551
  require_relative 'rubocop/cop/style/string_literals'
516
552
  require_relative 'rubocop/cop/style/string_literals_in_interpolation'
@@ -596,3 +632,7 @@ require_relative 'rubocop/options'
596
632
  require_relative 'rubocop/remote_config'
597
633
  require_relative 'rubocop/target_ruby'
598
634
  require_relative 'rubocop/yaml_duplication_checker'
635
+
636
+ unless File.exist?("#{__dir__}/../rubocop.gemspec") # Check if we are a gem
637
+ RuboCop::ResultCache.rubocop_required_features = $LOADED_FEATURES - before_us
638
+ end
@@ -4,6 +4,7 @@ require 'json'
4
4
 
5
5
  module RuboCop
6
6
  # Converts RuboCop objects to and from the serialization format JSON.
7
+ # @api private
7
8
  class CachedData
8
9
  def initialize(filename)
9
10
  @filename = filename
@@ -75,7 +75,7 @@ module RuboCop
75
75
 
76
76
  def validate_options_vs_config
77
77
  if @options[:parallel] &&
78
- !@config_store.for_dir(Dir.pwd).for_all_cops['UseCache']
78
+ !@config_store.for_pwd.for_all_cops['UseCache']
79
79
  raise OptionArgumentError, '-P/--parallel uses caching to speed up ' \
80
80
  'execution, so combining with AllCops: ' \
81
81
  'UseCache: false is not allowed.'
@@ -121,7 +121,7 @@ module RuboCop
121
121
  if @options[:auto_gen_config]
122
122
  formatter = 'autogenconf'
123
123
  else
124
- cfg = @config_store.for_dir(Dir.pwd).for_all_cops
124
+ cfg = @config_store.for_pwd.for_all_cops
125
125
  formatter = cfg['DefaultFormatter'] || 'progress'
126
126
  end
127
127
  [[formatter, @options[:output_path]]]
@@ -3,6 +3,7 @@
3
3
  module RuboCop
4
4
  class CLI
5
5
  # Home of subcommands in the CLI.
6
+ # @api private
6
7
  module Command
7
8
  class << self
8
9
  # Find the command with a given name and run it in an environment.
@@ -4,6 +4,7 @@ module RuboCop
4
4
  class CLI
5
5
  module Command
6
6
  # Generate a configuration file acting as a TODO list.
7
+ # @api private
7
8
  class AutoGenerateConfig < Base
8
9
  self.command_name = :auto_gen_config
9
10
 
@@ -27,10 +28,10 @@ module RuboCop
27
28
  private
28
29
 
29
30
  def maybe_run_line_length_cop
30
- if !line_length_enabled?(@config_store.for_dir(Dir.pwd))
31
+ if !line_length_enabled?(@config_store.for_pwd)
31
32
  skip_line_length_cop(PHASE_1_DISABLED)
32
33
  elsif !same_max_line_length?(
33
- @config_store.for_dir(Dir.pwd), ConfigLoader.default_configuration
34
+ @config_store.for_pwd, ConfigLoader.default_configuration
34
35
  )
35
36
  skip_line_length_cop(PHASE_1_OVERRIDDEN)
36
37
  else
@@ -113,7 +114,7 @@ module RuboCop
113
114
  return if files.include?(AUTO_GENERATED_FILE)
114
115
 
115
116
  files.unshift(AUTO_GENERATED_FILE)
116
- file_string = "\n - " + files.join("\n - ") if files.size > 1
117
+ file_string = "\n - #{files.join("\n - ")}" if files.size > 1
117
118
  rubocop_yml_contents = existing_configuration(config_file)
118
119
  end
119
120
 
@@ -4,6 +4,7 @@ module RuboCop
4
4
  class CLI
5
5
  module Command
6
6
  # A subcommand in the CLI.
7
+ # @api private
7
8
  class Base
8
9
  attr_reader :env
9
10
 
@@ -13,6 +14,7 @@ module RuboCop
13
14
  attr_accessor :command_name
14
15
 
15
16
  def inherited(subclass)
17
+ super
16
18
  @subclasses << subclass
17
19
  end
18
20
 
@@ -4,9 +4,13 @@ module RuboCop
4
4
  class CLI
5
5
  module Command
6
6
  # Run all the selected cops and report the result.
7
+ # @api private
7
8
  class ExecuteRunner < Base
8
9
  include Formatter::TextUtil
9
10
 
11
+ # Combination of short and long formatter names.
12
+ INTEGRATION_FORMATTERS = %w[h html j json ju junit].freeze
13
+
10
14
  self.command_name = :execute_runner
11
15
 
12
16
  def run
@@ -55,11 +59,16 @@ module RuboCop
55
59
  #{Gem.loaded_specs['rubocop'].metadata['bug_tracker_uri']}
56
60
 
57
61
  Mention the following information in the issue report:
58
- #{RuboCop::Version.version(true)}
62
+ #{RuboCop::Version.version(debug: true)}
59
63
  WARNING
60
64
  end
61
65
 
62
66
  def maybe_print_corrected_source
67
+ # Integration tools (like RubyMine) expect to have only the JSON result
68
+ # when specifying JSON format. Similar HTML and JUnit are targeted as well.
69
+ # See: https://github.com/rubocop-hq/rubocop/issues/8673
70
+ return if INTEGRATION_FORMATTERS.include?(@options[:format])
71
+
63
72
  # If we are asked to autocorrect source code read from stdin, the only
64
73
  # reasonable place to write it is to stdout
65
74
  # Unfortunately, we also write other information to stdout
@@ -4,6 +4,7 @@ module RuboCop
4
4
  class CLI
5
5
  module Command
6
6
  # Generate a .rubocop.yml file in the current directory.
7
+ # @api private
7
8
  class InitDotfile < Base
8
9
  DOTFILE = ConfigLoader::DOTFILE
9
10
 
@@ -5,6 +5,7 @@ module RuboCop
5
5
  module Command
6
6
  # Shows the given cops, or all cops by default, and their configurations
7
7
  # for the current directory.
8
+ # @api private
8
9
  class ShowCops < Base
9
10
  self.command_name = :show_cops
10
11
 
@@ -22,7 +23,7 @@ module RuboCop
22
23
  private
23
24
 
24
25
  def print_available_cops
25
- registry = Cop::Cop.registry
26
+ registry = Cop::Registry.global
26
27
  show_all = @options[:show_cops].empty?
27
28
 
28
29
  if show_all
@@ -68,7 +69,7 @@ module RuboCop
68
69
 
69
70
  def config_lines(cop)
70
71
  cnf = @config.for_cop(cop)
71
- cnf.to_yaml.lines.to_a.drop(1).map { |line| ' ' + line }
72
+ cnf.to_yaml.lines.to_a.drop(1).map { |line| " #{line}" }
72
73
  end
73
74
  end
74
75
  end
@@ -4,12 +4,13 @@ module RuboCop
4
4
  class CLI
5
5
  module Command
6
6
  # Display version.
7
+ # @api private
7
8
  class Version < Base
8
9
  self.command_name = :version
9
10
 
10
11
  def run
11
- puts RuboCop::Version.version(false) if @options[:version]
12
- puts RuboCop::Version.version(true) if @options[:verbose_version]
12
+ puts RuboCop::Version.version(debug: false) if @options[:version]
13
+ puts RuboCop::Version.version(debug: true) if @options[:verbose_version]
13
14
  end
14
15
  end
15
16
  end
@@ -3,6 +3,7 @@
3
3
  module RuboCop
4
4
  class CLI
5
5
  # Execution environment for a CLI command.
6
+ # @api private
6
7
  class Environment
7
8
  attr_reader :options, :config_store, :paths
8
9
 
@@ -4,14 +4,19 @@ module RuboCop
4
4
  # This class parses the special `rubocop:disable` comments in a source
5
5
  # and provides a way to check if each cop is enabled at arbitrary line.
6
6
  class CommentConfig
7
+ # @api private
7
8
  REDUNDANT_DISABLE = 'Lint/RedundantCopDisableDirective'
8
9
 
10
+ # @api private
9
11
  COP_NAME_PATTERN = '([A-Z]\w+/)?(?:[A-Z]\w+)'
12
+ # @api private
10
13
  COP_NAMES_PATTERN = "(?:#{COP_NAME_PATTERN} , )*#{COP_NAME_PATTERN}"
14
+ # @api private
11
15
  COPS_PATTERN = "(all|#{COP_NAMES_PATTERN})"
12
16
 
17
+ # @api private
13
18
  COMMENT_DIRECTIVE_REGEXP = Regexp.new(
14
- ('# rubocop : ((?:disable|enable|todo))\b ' + COPS_PATTERN)
19
+ "# rubocop : ((?:disable|enable|todo))\\b #{COPS_PATTERN}"
15
20
  .gsub(' ', '\s*')
16
21
  )
17
22
 
@@ -55,7 +60,7 @@ module RuboCop
55
60
  extras
56
61
  end
57
62
 
58
- def analyze
63
+ def analyze # rubocop:todo Metrics/AbcSize
59
64
  analyses = Hash.new { |hash, key| hash[key] = CopAnalysis.new([], nil) }
60
65
 
61
66
  each_mentioned_cop do |cop_name, disabled, line, single_line|
@@ -128,9 +133,7 @@ module RuboCop
128
133
  end
129
134
 
130
135
  def each_directive
131
- return if processed_source.comments.nil?
132
-
133
- processed_source.each_comment do |comment|
136
+ processed_source.comments.each do |comment|
134
137
  directive = directive_parts(comment)
135
138
  next unless directive
136
139
 
@@ -153,11 +156,11 @@ module RuboCop
153
156
  end
154
157
 
155
158
  def qualified_cop_name(cop_name)
156
- Cop::Cop.qualified_cop_name(cop_name.strip, processed_source.file_path)
159
+ Cop::Registry.qualified_cop_name(cop_name.strip, processed_source.file_path)
157
160
  end
158
161
 
159
162
  def all_cop_names
160
- @all_cop_names ||= Cop::Cop.registry.names - [REDUNDANT_DISABLE]
163
+ @all_cop_names ||= Cop::Registry.global.names - [REDUNDANT_DISABLE]
161
164
  end
162
165
 
163
166
  def comment_only_line?(line_number)