rubocop 0.88.0 → 0.91.1

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 +1 -0
  4. data/config/default.yml +219 -28
  5. data/lib/rubocop.rb +39 -5
  6. data/lib/rubocop/cached_data.rb +1 -0
  7. data/lib/rubocop/cli/command.rb +1 -0
  8. data/lib/rubocop/cli/command/auto_genenerate_config.rb +2 -1
  9. data/lib/rubocop/cli/command/base.rb +2 -0
  10. data/lib/rubocop/cli/command/execute_runner.rb +10 -1
  11. data/lib/rubocop/cli/command/init_dotfile.rb +1 -0
  12. data/lib/rubocop/cli/command/show_cops.rb +3 -2
  13. data/lib/rubocop/cli/command/version.rb +3 -2
  14. data/lib/rubocop/cli/environment.rb +1 -0
  15. data/lib/rubocop/comment_config.rb +19 -12
  16. data/lib/rubocop/config.rb +20 -3
  17. data/lib/rubocop/config_loader.rb +22 -11
  18. data/lib/rubocop/config_loader_resolver.rb +4 -3
  19. data/lib/rubocop/config_obsoletion.rb +7 -1
  20. data/lib/rubocop/config_store.rb +3 -3
  21. data/lib/rubocop/config_validator.rb +5 -4
  22. data/lib/rubocop/cop/base.rb +25 -2
  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 -8
  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 +7 -7
  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 +6 -11
  34. data/lib/rubocop/cop/correctors/punctuation_corrector.rb +8 -10
  35. data/lib/rubocop/cop/correctors/unused_arg_corrector.rb +15 -18
  36. data/lib/rubocop/cop/documentation.rb +22 -0
  37. data/lib/rubocop/cop/force.rb +1 -0
  38. data/lib/rubocop/cop/gemspec/required_ruby_version.rb +32 -11
  39. data/lib/rubocop/cop/generator.rb +2 -1
  40. data/lib/rubocop/cop/generator/configuration_injector.rb +2 -2
  41. data/lib/rubocop/cop/internal_affairs/method_name_equal.rb +5 -12
  42. data/lib/rubocop/cop/internal_affairs/node_destructuring.rb +1 -1
  43. data/lib/rubocop/cop/internal_affairs/node_type_predicate.rb +1 -0
  44. data/lib/rubocop/cop/internal_affairs/offense_location_keyword.rb +9 -8
  45. data/lib/rubocop/cop/internal_affairs/redundant_location_argument.rb +11 -7
  46. data/lib/rubocop/cop/internal_affairs/redundant_message_argument.rb +8 -8
  47. data/lib/rubocop/cop/internal_affairs/useless_message_assertion.rb +2 -2
  48. data/lib/rubocop/cop/layout/begin_end_alignment.rb +77 -0
  49. data/lib/rubocop/cop/layout/block_alignment.rb +24 -20
  50. data/lib/rubocop/cop/layout/case_indentation.rb +4 -7
  51. data/lib/rubocop/cop/layout/class_structure.rb +14 -17
  52. data/lib/rubocop/cop/layout/closing_heredoc_indentation.rb +4 -6
  53. data/lib/rubocop/cop/layout/comment_indentation.rb +1 -1
  54. data/lib/rubocop/cop/layout/condition_position.rb +13 -15
  55. data/lib/rubocop/cop/layout/def_end_alignment.rb +8 -5
  56. data/lib/rubocop/cop/layout/dot_position.rb +21 -17
  57. data/lib/rubocop/cop/layout/empty_comment.rb +30 -23
  58. data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +21 -18
  59. data/lib/rubocop/cop/layout/empty_line_after_magic_comment.rb +13 -13
  60. data/lib/rubocop/cop/layout/empty_line_after_multiline_condition.rb +136 -0
  61. data/lib/rubocop/cop/layout/empty_line_between_defs.rb +21 -23
  62. data/lib/rubocop/cop/layout/empty_lines.rb +6 -9
  63. data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +18 -14
  64. data/lib/rubocop/cop/layout/empty_lines_around_arguments.rb +7 -8
  65. data/lib/rubocop/cop/layout/empty_lines_around_attribute_accessor.rb +4 -7
  66. data/lib/rubocop/cop/layout/empty_lines_around_begin_body.rb +2 -5
  67. data/lib/rubocop/cop/layout/empty_lines_around_block_body.rb +2 -5
  68. data/lib/rubocop/cop/layout/empty_lines_around_class_body.rb +2 -5
  69. data/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +3 -7
  70. data/lib/rubocop/cop/layout/empty_lines_around_method_body.rb +2 -5
  71. data/lib/rubocop/cop/layout/empty_lines_around_module_body.rb +2 -5
  72. data/lib/rubocop/cop/layout/end_alignment.rb +11 -17
  73. data/lib/rubocop/cop/layout/extra_spacing.rb +22 -36
  74. data/lib/rubocop/cop/layout/first_array_element_line_break.rb +2 -5
  75. data/lib/rubocop/cop/layout/first_hash_element_line_break.rb +2 -5
  76. data/lib/rubocop/cop/layout/first_method_argument_line_break.rb +5 -9
  77. data/lib/rubocop/cop/layout/first_method_parameter_line_break.rb +2 -5
  78. data/lib/rubocop/cop/layout/hash_alignment.rb +17 -20
  79. data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +15 -14
  80. data/lib/rubocop/cop/layout/heredoc_indentation.rb +16 -13
  81. data/lib/rubocop/cop/layout/indentation_style.rb +0 -2
  82. data/lib/rubocop/cop/layout/initial_indentation.rb +6 -7
  83. data/lib/rubocop/cop/layout/leading_comment_space.rb +12 -10
  84. data/lib/rubocop/cop/layout/leading_empty_lines.rb +6 -11
  85. data/lib/rubocop/cop/layout/multiline_array_brace_layout.rb +2 -5
  86. data/lib/rubocop/cop/layout/multiline_array_line_breaks.rb +2 -5
  87. data/lib/rubocop/cop/layout/multiline_assignment_layout.rb +10 -14
  88. data/lib/rubocop/cop/layout/multiline_block_layout.rb +21 -19
  89. data/lib/rubocop/cop/layout/multiline_hash_brace_layout.rb +2 -5
  90. data/lib/rubocop/cop/layout/multiline_hash_key_line_breaks.rb +2 -5
  91. data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +5 -9
  92. data/lib/rubocop/cop/layout/multiline_method_call_brace_layout.rb +2 -5
  93. data/lib/rubocop/cop/layout/multiline_method_definition_brace_layout.rb +2 -5
  94. data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +41 -24
  95. data/lib/rubocop/cop/layout/space_after_colon.rb +11 -7
  96. data/lib/rubocop/cop/layout/space_after_comma.rb +2 -5
  97. data/lib/rubocop/cop/layout/space_after_method_name.rb +5 -6
  98. data/lib/rubocop/cop/layout/space_after_not.rb +9 -11
  99. data/lib/rubocop/cop/layout/space_after_semicolon.rb +2 -5
  100. data/lib/rubocop/cop/layout/space_around_equals_in_parameter_default.rb +22 -17
  101. data/lib/rubocop/cop/layout/space_around_keyword.rb +17 -18
  102. data/lib/rubocop/cop/layout/space_around_method_call_operator.rb +9 -1
  103. data/lib/rubocop/cop/layout/space_around_operators.rb +17 -16
  104. data/lib/rubocop/cop/layout/space_before_block_braces.rb +23 -22
  105. data/lib/rubocop/cop/layout/space_before_comma.rb +3 -5
  106. data/lib/rubocop/cop/layout/space_before_comment.rb +10 -7
  107. data/lib/rubocop/cop/layout/space_before_first_arg.rb +7 -7
  108. data/lib/rubocop/cop/layout/space_before_semicolon.rb +2 -5
  109. data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +9 -17
  110. data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +20 -23
  111. data/lib/rubocop/cop/layout/space_inside_array_percent_literal.rb +3 -8
  112. data/lib/rubocop/cop/layout/space_inside_block_braces.rb +17 -16
  113. data/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +19 -37
  114. data/lib/rubocop/cop/layout/space_inside_parens.rb +9 -14
  115. data/lib/rubocop/cop/layout/space_inside_percent_literal_delimiters.rb +5 -10
  116. data/lib/rubocop/cop/layout/space_inside_range_literal.rb +8 -17
  117. data/lib/rubocop/cop/layout/space_inside_reference_brackets.rb +16 -24
  118. data/lib/rubocop/cop/layout/space_inside_string_interpolation.rb +12 -13
  119. data/lib/rubocop/cop/layout/trailing_empty_lines.rb +10 -15
  120. data/lib/rubocop/cop/layout/trailing_whitespace.rb +11 -11
  121. data/lib/rubocop/cop/lint/ambiguous_block_association.rb +7 -4
  122. data/lib/rubocop/cop/lint/ambiguous_operator.rb +17 -10
  123. data/lib/rubocop/cop/lint/ambiguous_regexp_literal.rb +11 -13
  124. data/lib/rubocop/cop/lint/assignment_in_condition.rb +2 -2
  125. data/lib/rubocop/cop/lint/big_decimal_new.rb +9 -10
  126. data/lib/rubocop/cop/lint/binary_operator_with_identical_operands.rb +50 -0
  127. data/lib/rubocop/cop/lint/boolean_symbol.rb +16 -11
  128. data/lib/rubocop/cop/lint/circular_argument_reference.rb +1 -1
  129. data/lib/rubocop/cop/lint/constant_definition_in_block.rb +74 -0
  130. data/lib/rubocop/cop/lint/constant_resolution.rb +2 -2
  131. data/lib/rubocop/cop/lint/debugger.rb +6 -1
  132. data/lib/rubocop/cop/lint/deprecated_class_methods.rb +7 -10
  133. data/lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb +17 -13
  134. data/lib/rubocop/cop/lint/duplicate_case_condition.rb +1 -1
  135. data/lib/rubocop/cop/lint/duplicate_hash_key.rb +1 -1
  136. data/lib/rubocop/cop/lint/duplicate_methods.rb +5 -4
  137. data/lib/rubocop/cop/lint/duplicate_require.rb +46 -0
  138. data/lib/rubocop/cop/lint/duplicate_rescue_exception.rb +47 -0
  139. data/lib/rubocop/cop/lint/each_with_object_argument.rb +2 -1
  140. data/lib/rubocop/cop/lint/else_layout.rb +1 -1
  141. data/lib/rubocop/cop/lint/empty_conditional_body.rb +67 -0
  142. data/lib/rubocop/cop/lint/empty_ensure.rb +5 -5
  143. data/lib/rubocop/cop/lint/empty_expression.rb +2 -2
  144. data/lib/rubocop/cop/lint/empty_file.rb +50 -0
  145. data/lib/rubocop/cop/lint/empty_interpolation.rb +5 -6
  146. data/lib/rubocop/cop/lint/empty_when.rb +2 -2
  147. data/lib/rubocop/cop/lint/ensure_return.rb +27 -29
  148. data/lib/rubocop/cop/lint/erb_new_arguments.rb +13 -10
  149. data/lib/rubocop/cop/lint/flip_flop.rb +1 -1
  150. data/lib/rubocop/cop/lint/float_comparison.rb +93 -0
  151. data/lib/rubocop/cop/lint/float_out_of_range.rb +1 -1
  152. data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +4 -3
  153. data/lib/rubocop/cop/lint/heredoc_method_call_position.rb +13 -14
  154. data/lib/rubocop/cop/lint/identity_comparison.rb +51 -0
  155. data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +2 -2
  156. data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +10 -13
  157. data/lib/rubocop/cop/lint/inherit_exception.rb +12 -7
  158. data/lib/rubocop/cop/lint/interpolation_check.rb +18 -15
  159. data/lib/rubocop/cop/lint/literal_as_condition.rb +4 -2
  160. data/lib/rubocop/cop/lint/literal_in_interpolation.rb +7 -7
  161. data/lib/rubocop/cop/lint/loop.rb +23 -2
  162. data/lib/rubocop/cop/lint/missing_cop_enable_directive.rb +6 -5
  163. data/lib/rubocop/cop/lint/missing_super.rb +99 -0
  164. data/lib/rubocop/cop/lint/mixed_regexp_capture_types.rb +3 -36
  165. data/lib/rubocop/cop/lint/multiple_comparison.rb +9 -10
  166. data/lib/rubocop/cop/lint/nested_method_definition.rb +1 -1
  167. data/lib/rubocop/cop/lint/nested_percent_literal.rb +1 -1
  168. data/lib/rubocop/cop/lint/next_without_accumulator.rb +1 -1
  169. data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +27 -23
  170. data/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +2 -2
  171. data/lib/rubocop/cop/lint/number_conversion.rb +7 -9
  172. data/lib/rubocop/cop/lint/ordered_magic_comments.rb +11 -13
  173. data/lib/rubocop/cop/lint/out_of_range_regexp_ref.rb +79 -0
  174. data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +4 -10
  175. data/lib/rubocop/cop/lint/percent_string_array.rb +3 -6
  176. data/lib/rubocop/cop/lint/percent_symbol_array.rb +13 -12
  177. data/lib/rubocop/cop/lint/raise_exception.rb +13 -10
  178. data/lib/rubocop/cop/lint/rand_one.rb +2 -1
  179. data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +38 -31
  180. data/lib/rubocop/cop/lint/redundant_cop_enable_directive.rb +20 -14
  181. data/lib/rubocop/cop/lint/redundant_require_statement.rb +5 -7
  182. data/lib/rubocop/cop/lint/redundant_splat_expansion.rb +13 -9
  183. data/lib/rubocop/cop/lint/redundant_string_coercion.rb +6 -13
  184. data/lib/rubocop/cop/lint/redundant_with_index.rb +11 -14
  185. data/lib/rubocop/cop/lint/redundant_with_object.rb +11 -14
  186. data/lib/rubocop/cop/lint/regexp_as_condition.rb +4 -6
  187. data/lib/rubocop/cop/lint/require_parentheses.rb +2 -2
  188. data/lib/rubocop/cop/lint/rescue_exception.rb +1 -1
  189. data/lib/rubocop/cop/lint/rescue_type.rb +8 -9
  190. data/lib/rubocop/cop/lint/return_in_void_context.rb +2 -4
  191. data/lib/rubocop/cop/lint/safe_navigation_chain.rb +3 -6
  192. data/lib/rubocop/cop/lint/safe_navigation_consistency.rb +14 -10
  193. data/lib/rubocop/cop/lint/safe_navigation_with_empty.rb +7 -7
  194. data/lib/rubocop/cop/lint/script_permission.rb +10 -7
  195. data/lib/rubocop/cop/lint/self_assignment.rb +78 -0
  196. data/lib/rubocop/cop/lint/send_with_mixin_argument.rb +8 -12
  197. data/lib/rubocop/cop/lint/shadowed_argument.rb +3 -3
  198. data/lib/rubocop/cop/lint/shadowed_exception.rb +8 -8
  199. data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +7 -7
  200. data/lib/rubocop/cop/lint/struct_new_override.rb +2 -1
  201. data/lib/rubocop/cop/lint/suppressed_exception.rb +4 -7
  202. data/lib/rubocop/cop/lint/to_json.rb +20 -11
  203. data/lib/rubocop/cop/lint/top_level_return_with_argument.rb +34 -0
  204. data/lib/rubocop/cop/lint/trailing_comma_in_attribute_declaration.rb +57 -0
  205. data/lib/rubocop/cop/lint/underscore_prefixed_variable_name.rb +4 -4
  206. data/lib/rubocop/cop/lint/unified_integer.rb +4 -6
  207. data/lib/rubocop/cop/lint/unreachable_code.rb +1 -1
  208. data/lib/rubocop/cop/lint/unreachable_loop.rb +171 -0
  209. data/lib/rubocop/cop/lint/unused_block_argument.rb +8 -3
  210. data/lib/rubocop/cop/lint/unused_method_argument.rb +8 -3
  211. data/lib/rubocop/cop/lint/uri_escape_unescape.rb +4 -2
  212. data/lib/rubocop/cop/lint/uri_regexp.rb +12 -47
  213. data/lib/rubocop/cop/lint/useless_access_modifier.rb +27 -23
  214. data/lib/rubocop/cop/lint/useless_assignment.rb +4 -4
  215. data/lib/rubocop/cop/lint/useless_else_without_rescue.rb +6 -15
  216. data/lib/rubocop/cop/lint/useless_method_definition.rb +70 -0
  217. data/lib/rubocop/cop/lint/useless_setter_call.rb +4 -6
  218. data/lib/rubocop/cop/lint/useless_times.rb +106 -0
  219. data/lib/rubocop/cop/lint/void.rb +3 -7
  220. data/lib/rubocop/cop/metrics/abc_size.rb +1 -1
  221. data/lib/rubocop/cop/metrics/block_length.rb +2 -2
  222. data/lib/rubocop/cop/metrics/block_nesting.rb +2 -2
  223. data/lib/rubocop/cop/metrics/class_length.rb +2 -2
  224. data/lib/rubocop/cop/metrics/cyclomatic_complexity.rb +2 -1
  225. data/lib/rubocop/cop/metrics/method_length.rb +2 -2
  226. data/lib/rubocop/cop/metrics/module_length.rb +2 -2
  227. data/lib/rubocop/cop/metrics/parameter_lists.rb +2 -6
  228. data/lib/rubocop/cop/metrics/perceived_complexity.rb +7 -8
  229. data/lib/rubocop/cop/metrics/utils/abc_size_calculator.rb +59 -5
  230. data/lib/rubocop/cop/metrics/utils/code_length_calculator.rb +53 -24
  231. data/lib/rubocop/cop/metrics/utils/repeated_csend_discount.rb +37 -0
  232. data/lib/rubocop/cop/migration/department_name.rb +14 -16
  233. data/lib/rubocop/cop/mixin/alignment.rb +5 -1
  234. data/lib/rubocop/cop/mixin/allowed_methods.rb +2 -0
  235. data/lib/rubocop/cop/mixin/annotation_comment.rb +5 -0
  236. data/lib/rubocop/cop/mixin/array_min_size.rb +1 -1
  237. data/lib/rubocop/cop/mixin/check_line_breakable.rb +17 -8
  238. data/lib/rubocop/cop/mixin/code_length.rb +22 -5
  239. data/lib/rubocop/cop/mixin/comments_help.rb +48 -0
  240. data/lib/rubocop/cop/mixin/configurable_naming.rb +2 -2
  241. data/lib/rubocop/cop/mixin/configurable_numbering.rb +3 -3
  242. data/lib/rubocop/cop/mixin/empty_lines_around_body.rb +8 -7
  243. data/lib/rubocop/cop/mixin/empty_parameter.rb +3 -1
  244. data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +12 -1
  245. data/lib/rubocop/cop/mixin/first_element_line_break.rb +3 -1
  246. data/lib/rubocop/cop/mixin/hash_transform_method.rb +31 -12
  247. data/lib/rubocop/cop/mixin/line_length_help.rb +1 -3
  248. data/lib/rubocop/cop/mixin/method_complexity.rb +10 -2
  249. data/lib/rubocop/cop/mixin/multiline_element_line_breaks.rb +3 -1
  250. data/lib/rubocop/cop/mixin/multiline_literal_brace_layout.rb +13 -12
  251. data/lib/rubocop/cop/mixin/negative_conditional.rb +2 -2
  252. data/lib/rubocop/cop/mixin/percent_array.rb +16 -9
  253. data/lib/rubocop/cop/mixin/range_help.rb +18 -4
  254. data/lib/rubocop/cop/mixin/regexp_literal_help.rb +1 -1
  255. data/lib/rubocop/cop/mixin/rescue_node.rb +11 -1
  256. data/lib/rubocop/cop/mixin/space_after_punctuation.rb +4 -3
  257. data/lib/rubocop/cop/mixin/space_before_punctuation.rb +4 -3
  258. data/lib/rubocop/cop/mixin/statement_modifier.rb +43 -8
  259. data/lib/rubocop/cop/mixin/surrounding_space.rb +8 -29
  260. data/lib/rubocop/cop/mixin/trailing_comma.rb +9 -11
  261. data/lib/rubocop/cop/mixin/uncommunicative_name.rb +6 -13
  262. data/lib/rubocop/cop/mixin/unused_argument.rb +4 -6
  263. data/lib/rubocop/cop/mixin/visibility_help.rb +4 -16
  264. data/lib/rubocop/cop/naming/accessor_method_name.rb +4 -2
  265. data/lib/rubocop/cop/naming/ascii_identifiers.rb +3 -3
  266. data/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +2 -2
  267. data/lib/rubocop/cop/naming/block_parameter_name.rb +1 -1
  268. data/lib/rubocop/cop/naming/class_and_module_camel_case.rb +2 -2
  269. data/lib/rubocop/cop/naming/constant_name.rb +2 -2
  270. data/lib/rubocop/cop/naming/file_name.rb +4 -4
  271. data/lib/rubocop/cop/naming/heredoc_delimiter_case.rb +2 -2
  272. data/lib/rubocop/cop/naming/heredoc_delimiter_naming.rb +2 -2
  273. data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +2 -2
  274. data/lib/rubocop/cop/naming/method_parameter_name.rb +1 -1
  275. data/lib/rubocop/cop/naming/predicate_name.rb +3 -5
  276. data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +12 -11
  277. data/lib/rubocop/cop/offense.rb +1 -0
  278. data/lib/rubocop/cop/registry.rb +3 -3
  279. data/lib/rubocop/cop/security/eval.rb +3 -2
  280. data/lib/rubocop/cop/security/json_load.rb +7 -8
  281. data/lib/rubocop/cop/security/marshal_load.rb +3 -4
  282. data/lib/rubocop/cop/security/open.rb +3 -2
  283. data/lib/rubocop/cop/security/yaml_load.rb +7 -6
  284. data/lib/rubocop/cop/severity.rb +0 -8
  285. data/lib/rubocop/cop/style/access_modifier_declarations.rb +7 -8
  286. data/lib/rubocop/cop/style/accessor_grouping.rb +23 -21
  287. data/lib/rubocop/cop/style/alias.rb +43 -36
  288. data/lib/rubocop/cop/style/and_or.rb +9 -11
  289. data/lib/rubocop/cop/style/array_join.rb +7 -8
  290. data/lib/rubocop/cop/style/ascii_comments.rb +4 -4
  291. data/lib/rubocop/cop/style/attr.rb +12 -9
  292. data/lib/rubocop/cop/style/auto_resource_cleanup.rb +4 -5
  293. data/lib/rubocop/cop/style/bare_percent_literals.rb +10 -12
  294. data/lib/rubocop/cop/style/begin_block.rb +2 -2
  295. data/lib/rubocop/cop/style/bisected_attr_accessor.rb +9 -14
  296. data/lib/rubocop/cop/style/block_comments.rb +14 -18
  297. data/lib/rubocop/cop/style/block_delimiters.rb +23 -23
  298. data/lib/rubocop/cop/style/case_equality.rb +32 -5
  299. data/lib/rubocop/cop/style/case_like_if.rb +38 -19
  300. data/lib/rubocop/cop/style/class_and_module_children.rb +16 -11
  301. data/lib/rubocop/cop/style/class_check.rb +6 -11
  302. data/lib/rubocop/cop/style/class_methods.rb +7 -11
  303. data/lib/rubocop/cop/style/class_methods_definitions.rb +157 -0
  304. data/lib/rubocop/cop/style/class_vars.rb +7 -12
  305. data/lib/rubocop/cop/style/collection_methods.rb +11 -17
  306. data/lib/rubocop/cop/style/colon_method_call.rb +8 -9
  307. data/lib/rubocop/cop/style/colon_method_definition.rb +6 -6
  308. data/lib/rubocop/cop/style/combinable_loops.rb +84 -0
  309. data/lib/rubocop/cop/style/command_literal.rb +23 -24
  310. data/lib/rubocop/cop/style/comment_annotation.rb +15 -15
  311. data/lib/rubocop/cop/style/commented_keyword.rb +8 -9
  312. data/lib/rubocop/cop/style/conditional_assignment.rb +61 -63
  313. data/lib/rubocop/cop/style/constant_visibility.rb +3 -2
  314. data/lib/rubocop/cop/style/copyright.rb +12 -12
  315. data/lib/rubocop/cop/style/date_time.rb +1 -1
  316. data/lib/rubocop/cop/style/def_with_parentheses.rb +8 -10
  317. data/lib/rubocop/cop/style/dir.rb +8 -10
  318. data/lib/rubocop/cop/style/disable_cops_within_source_code_directive.rb +7 -9
  319. data/lib/rubocop/cop/style/documentation.rb +6 -8
  320. data/lib/rubocop/cop/style/documentation_method.rb +1 -1
  321. data/lib/rubocop/cop/style/double_cop_disable_directive.rb +12 -15
  322. data/lib/rubocop/cop/style/double_negation.rb +3 -2
  323. data/lib/rubocop/cop/style/each_for_simple_loop.rb +5 -8
  324. data/lib/rubocop/cop/style/each_with_object.rb +16 -19
  325. data/lib/rubocop/cop/style/empty_block_parameter.rb +9 -10
  326. data/lib/rubocop/cop/style/empty_case_condition.rb +19 -20
  327. data/lib/rubocop/cop/style/empty_else.rb +17 -19
  328. data/lib/rubocop/cop/style/empty_lambda_parameter.rb +9 -10
  329. data/lib/rubocop/cop/style/empty_literal.rb +18 -17
  330. data/lib/rubocop/cop/style/empty_method.rb +10 -13
  331. data/lib/rubocop/cop/style/encoding.rb +5 -9
  332. data/lib/rubocop/cop/style/end_block.rb +4 -6
  333. data/lib/rubocop/cop/style/eval_with_location.rb +7 -7
  334. data/lib/rubocop/cop/style/even_odd.rb +8 -11
  335. data/lib/rubocop/cop/style/expand_path_arguments.rb +22 -21
  336. data/lib/rubocop/cop/style/explicit_block_argument.rb +102 -0
  337. data/lib/rubocop/cop/style/exponential_notation.rb +1 -1
  338. data/lib/rubocop/cop/style/float_division.rb +3 -1
  339. data/lib/rubocop/cop/style/for.rb +11 -15
  340. data/lib/rubocop/cop/style/format_string.rb +18 -19
  341. data/lib/rubocop/cop/style/format_string_token.rb +5 -7
  342. data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +19 -41
  343. data/lib/rubocop/cop/style/global_std_stream.rb +65 -0
  344. data/lib/rubocop/cop/style/global_vars.rb +2 -2
  345. data/lib/rubocop/cop/style/guard_clause.rb +6 -6
  346. data/lib/rubocop/cop/style/hash_as_last_array_item.rb +27 -1
  347. data/lib/rubocop/cop/style/hash_each_methods.rb +5 -8
  348. data/lib/rubocop/cop/style/hash_syntax.rb +10 -8
  349. data/lib/rubocop/cop/style/hash_transform_keys.rb +19 -11
  350. data/lib/rubocop/cop/style/hash_transform_values.rb +18 -10
  351. data/lib/rubocop/cop/style/identical_conditional_branches.rb +2 -2
  352. data/lib/rubocop/cop/style/if_inside_else.rb +3 -3
  353. data/lib/rubocop/cop/style/if_unless_modifier.rb +11 -37
  354. data/lib/rubocop/cop/style/if_unless_modifier_of_if_unless.rb +3 -7
  355. data/lib/rubocop/cop/style/if_with_semicolon.rb +3 -6
  356. data/lib/rubocop/cop/style/implicit_runtime_error.rb +2 -1
  357. data/lib/rubocop/cop/style/infinite_loop.rb +24 -24
  358. data/lib/rubocop/cop/style/inline_comment.rb +3 -3
  359. data/lib/rubocop/cop/style/inverse_methods.rb +22 -32
  360. data/lib/rubocop/cop/style/keyword_parameters_order.rb +53 -0
  361. data/lib/rubocop/cop/style/lambda.rb +7 -12
  362. data/lib/rubocop/cop/style/lambda_call.rb +17 -14
  363. data/lib/rubocop/cop/style/line_end_concatenation.rb +19 -16
  364. data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +2 -1
  365. data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +16 -11
  366. data/lib/rubocop/cop/style/method_call_with_args_parentheses/require_parentheses.rb +4 -8
  367. data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +8 -7
  368. data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +12 -3
  369. data/lib/rubocop/cop/style/method_def_parentheses.rb +11 -16
  370. data/lib/rubocop/cop/style/min_max.rb +8 -12
  371. data/lib/rubocop/cop/style/missing_else.rb +13 -13
  372. data/lib/rubocop/cop/style/missing_respond_to_missing.rb +10 -3
  373. data/lib/rubocop/cop/style/mixin_grouping.rb +24 -27
  374. data/lib/rubocop/cop/style/mixin_usage.rb +2 -1
  375. data/lib/rubocop/cop/style/module_function.rb +10 -13
  376. data/lib/rubocop/cop/style/multiline_block_chain.rb +2 -2
  377. data/lib/rubocop/cop/style/multiline_if_modifier.rb +3 -10
  378. data/lib/rubocop/cop/style/multiline_if_then.rb +4 -10
  379. data/lib/rubocop/cop/style/multiline_memoization.rb +14 -12
  380. data/lib/rubocop/cop/style/multiline_method_signature.rb +2 -2
  381. data/lib/rubocop/cop/style/multiline_ternary_operator.rb +17 -6
  382. data/lib/rubocop/cop/style/multiline_when_then.rb +10 -11
  383. data/lib/rubocop/cop/style/multiple_comparison.rb +1 -1
  384. data/lib/rubocop/cop/style/mutable_constant.rb +23 -20
  385. data/lib/rubocop/cop/style/negated_if.rb +6 -6
  386. data/lib/rubocop/cop/style/negated_unless.rb +6 -6
  387. data/lib/rubocop/cop/style/negated_while.rb +7 -15
  388. data/lib/rubocop/cop/style/nested_modifier.rb +10 -13
  389. data/lib/rubocop/cop/style/nested_parenthesized_calls.rb +14 -12
  390. data/lib/rubocop/cop/style/nested_ternary_operator.rb +14 -16
  391. data/lib/rubocop/cop/style/next.rb +10 -14
  392. data/lib/rubocop/cop/style/nil_comparison.rb +13 -11
  393. data/lib/rubocop/cop/style/non_nil_check.rb +34 -26
  394. data/lib/rubocop/cop/style/not.rb +20 -26
  395. data/lib/rubocop/cop/style/numeric_literal_prefix.rb +4 -9
  396. data/lib/rubocop/cop/style/numeric_predicate.rb +6 -11
  397. data/lib/rubocop/cop/style/one_line_conditional.rb +73 -23
  398. data/lib/rubocop/cop/style/option_hash.rb +1 -1
  399. data/lib/rubocop/cop/style/optional_arguments.rb +1 -1
  400. data/lib/rubocop/cop/style/optional_boolean_parameter.rb +45 -0
  401. data/lib/rubocop/cop/style/or_assignment.rb +13 -10
  402. data/lib/rubocop/cop/style/parallel_assignment.rb +16 -16
  403. data/lib/rubocop/cop/style/parentheses_around_condition.rb +6 -6
  404. data/lib/rubocop/cop/style/percent_literal_delimiters.rb +15 -21
  405. data/lib/rubocop/cop/style/percent_q_literals.rb +8 -10
  406. data/lib/rubocop/cop/style/perl_backrefs.rb +8 -10
  407. data/lib/rubocop/cop/style/preferred_hash_methods.rb +11 -14
  408. data/lib/rubocop/cop/style/proc.rb +6 -6
  409. data/lib/rubocop/cop/style/raise_args.rb +15 -24
  410. data/lib/rubocop/cop/style/random_with_offset.rb +20 -19
  411. data/lib/rubocop/cop/style/redundant_assignment.rb +8 -18
  412. data/lib/rubocop/cop/style/redundant_begin.rb +7 -9
  413. data/lib/rubocop/cop/style/redundant_capital_w.rb +6 -9
  414. data/lib/rubocop/cop/style/redundant_condition.rb +20 -9
  415. data/lib/rubocop/cop/style/redundant_conditional.rb +4 -5
  416. data/lib/rubocop/cop/style/redundant_exception.rb +2 -0
  417. data/lib/rubocop/cop/style/redundant_fetch_block.rb +3 -12
  418. data/lib/rubocop/cop/style/redundant_file_extension_in_require.rb +9 -8
  419. data/lib/rubocop/cop/style/redundant_freeze.rb +5 -7
  420. data/lib/rubocop/cop/style/redundant_interpolation.rb +25 -24
  421. data/lib/rubocop/cop/style/redundant_parentheses.rb +21 -15
  422. data/lib/rubocop/cop/style/redundant_percent_q.rb +9 -11
  423. data/lib/rubocop/cop/style/redundant_regexp_character_class.rb +6 -13
  424. data/lib/rubocop/cop/style/redundant_regexp_escape.rb +14 -23
  425. data/lib/rubocop/cop/style/redundant_return.rb +17 -17
  426. data/lib/rubocop/cop/style/redundant_self.rb +9 -11
  427. data/lib/rubocop/cop/style/redundant_self_assignment.rb +116 -0
  428. data/lib/rubocop/cop/style/redundant_sort.rb +24 -28
  429. data/lib/rubocop/cop/style/redundant_sort_by.rb +5 -9
  430. data/lib/rubocop/cop/style/regexp_literal.rb +10 -21
  431. data/lib/rubocop/cop/style/rescue_modifier.rb +29 -9
  432. data/lib/rubocop/cop/style/rescue_standard_error.rb +20 -16
  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 -21
  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 +22 -22
  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 +11 -9
  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 +1 -1
  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/util.rb +2 -13
  478. data/lib/rubocop/cop/utils/format_string.rb +3 -5
  479. data/lib/rubocop/cop/variable_force.rb +2 -2
  480. data/lib/rubocop/cop/variable_force/branch.rb +1 -0
  481. data/lib/rubocop/cop/variable_force/variable.rb +2 -2
  482. data/lib/rubocop/cops_documentation_generator.rb +284 -0
  483. data/lib/rubocop/core_ext/string.rb +2 -2
  484. data/lib/rubocop/directive_comment.rb +32 -0
  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 +1 -0
  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 +19 -4
  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 +31 -13
  502. data/lib/rubocop/rspec/cop_helper.rb +4 -1
  503. data/lib/rubocop/rspec/expect_offense.rb +11 -6
  504. data/lib/rubocop/rspec/shared_contexts.rb +13 -5
  505. data/lib/rubocop/runner.rb +31 -15
  506. data/lib/rubocop/string_interpreter.rb +3 -0
  507. data/lib/rubocop/target_finder.rb +13 -9
  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 +38 -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
 
@@ -33,6 +35,7 @@ require_relative 'rubocop/cop/registry'
33
35
  require_relative 'rubocop/cop/base'
34
36
  require_relative 'rubocop/cop/cop'
35
37
  require_relative 'rubocop/cop/commissioner'
38
+ require_relative 'rubocop/cop/documentation'
36
39
  require_relative 'rubocop/cop/corrector'
37
40
  require_relative 'rubocop/cop/force'
38
41
  require_relative 'rubocop/cop/severity'
@@ -81,6 +84,7 @@ require_relative 'rubocop/cop/mixin/integer_node'
81
84
  require_relative 'rubocop/cop/mixin/interpolation'
82
85
  require_relative 'rubocop/cop/mixin/line_length_help'
83
86
  require_relative 'rubocop/cop/mixin/match_range'
87
+ require_relative 'rubocop/cop/metrics/utils/repeated_csend_discount'
84
88
  require_relative 'rubocop/cop/mixin/method_complexity'
85
89
  require_relative 'rubocop/cop/mixin/method_preference'
86
90
  require_relative 'rubocop/cop/mixin/min_body_length'
@@ -94,7 +98,6 @@ require_relative 'rubocop/cop/mixin/nil_methods'
94
98
  require_relative 'rubocop/cop/mixin/on_normal_if_unless'
95
99
  require_relative 'rubocop/cop/mixin/ordered_gem_node'
96
100
  require_relative 'rubocop/cop/mixin/parentheses'
97
- require_relative 'rubocop/cop/mixin/parser_diagnostic'
98
101
  require_relative 'rubocop/cop/mixin/percent_array'
99
102
  require_relative 'rubocop/cop/mixin/percent_literal'
100
103
  require_relative 'rubocop/cop/mixin/preceding_following_alignment'
@@ -110,12 +113,12 @@ require_relative 'rubocop/cop/mixin/statement_modifier'
110
113
  require_relative 'rubocop/cop/mixin/string_help'
111
114
  require_relative 'rubocop/cop/mixin/string_literals_help'
112
115
  require_relative 'rubocop/cop/mixin/target_ruby_version'
113
- require_relative 'rubocop/cop/mixin/too_many_lines'
114
116
  require_relative 'rubocop/cop/mixin/trailing_body'
115
117
  require_relative 'rubocop/cop/mixin/trailing_comma'
116
118
  require_relative 'rubocop/cop/mixin/uncommunicative_name'
117
119
  require_relative 'rubocop/cop/mixin/unused_argument'
118
120
  require_relative 'rubocop/cop/mixin/visibility_help'
121
+ require_relative 'rubocop/cop/mixin/comments_help' # relies on visibility_help
119
122
 
120
123
  require_relative 'rubocop/cop/utils/format_string'
121
124
 
@@ -151,6 +154,7 @@ require_relative 'rubocop/cop/layout/access_modifier_indentation'
151
154
  require_relative 'rubocop/cop/layout/argument_alignment'
152
155
  require_relative 'rubocop/cop/layout/array_alignment'
153
156
  require_relative 'rubocop/cop/layout/assignment_indentation'
157
+ require_relative 'rubocop/cop/layout/begin_end_alignment'
154
158
  require_relative 'rubocop/cop/layout/block_alignment'
155
159
  require_relative 'rubocop/cop/layout/block_end_newline'
156
160
  require_relative 'rubocop/cop/layout/case_indentation'
@@ -165,6 +169,7 @@ require_relative 'rubocop/cop/layout/else_alignment'
165
169
  require_relative 'rubocop/cop/layout/empty_comment'
166
170
  require_relative 'rubocop/cop/layout/empty_line_after_guard_clause'
167
171
  require_relative 'rubocop/cop/layout/empty_line_after_magic_comment'
172
+ require_relative 'rubocop/cop/layout/empty_line_after_multiline_condition'
168
173
  require_relative 'rubocop/cop/layout/empty_line_between_defs'
169
174
  require_relative 'rubocop/cop/layout/empty_lines_around_access_modifier'
170
175
  require_relative 'rubocop/cop/layout/empty_lines_around_arguments'
@@ -243,8 +248,10 @@ require_relative 'rubocop/cop/lint/ambiguous_operator'
243
248
  require_relative 'rubocop/cop/lint/ambiguous_regexp_literal'
244
249
  require_relative 'rubocop/cop/lint/assignment_in_condition'
245
250
  require_relative 'rubocop/cop/lint/big_decimal_new'
251
+ require_relative 'rubocop/cop/lint/binary_operator_with_identical_operands'
246
252
  require_relative 'rubocop/cop/lint/boolean_symbol'
247
253
  require_relative 'rubocop/cop/lint/circular_argument_reference'
254
+ require_relative 'rubocop/cop/lint/constant_definition_in_block'
248
255
  require_relative 'rubocop/cop/lint/constant_resolution'
249
256
  require_relative 'rubocop/cop/lint/debugger'
250
257
  require_relative 'rubocop/cop/lint/deprecated_class_methods'
@@ -254,18 +261,24 @@ require_relative 'rubocop/cop/lint/duplicate_case_condition'
254
261
  require_relative 'rubocop/cop/lint/duplicate_elsif_condition'
255
262
  require_relative 'rubocop/cop/lint/duplicate_hash_key'
256
263
  require_relative 'rubocop/cop/lint/duplicate_methods'
264
+ require_relative 'rubocop/cop/lint/duplicate_require'
265
+ require_relative 'rubocop/cop/lint/duplicate_rescue_exception'
257
266
  require_relative 'rubocop/cop/lint/each_with_object_argument'
258
267
  require_relative 'rubocop/cop/lint/else_layout'
268
+ require_relative 'rubocop/cop/lint/empty_conditional_body'
259
269
  require_relative 'rubocop/cop/lint/empty_ensure'
260
270
  require_relative 'rubocop/cop/lint/empty_expression'
271
+ require_relative 'rubocop/cop/lint/empty_file'
261
272
  require_relative 'rubocop/cop/lint/empty_interpolation'
262
273
  require_relative 'rubocop/cop/lint/empty_when'
263
274
  require_relative 'rubocop/cop/lint/ensure_return'
264
275
  require_relative 'rubocop/cop/lint/erb_new_arguments'
265
276
  require_relative 'rubocop/cop/lint/flip_flop'
277
+ require_relative 'rubocop/cop/lint/float_comparison'
266
278
  require_relative 'rubocop/cop/lint/float_out_of_range'
267
279
  require_relative 'rubocop/cop/lint/format_parameter_mismatch'
268
280
  require_relative 'rubocop/cop/lint/heredoc_method_call_position'
281
+ require_relative 'rubocop/cop/lint/identity_comparison'
269
282
  require_relative 'rubocop/cop/lint/implicit_string_concatenation'
270
283
  require_relative 'rubocop/cop/lint/inherit_exception'
271
284
  require_relative 'rubocop/cop/lint/ineffective_access_modifier'
@@ -274,6 +287,7 @@ require_relative 'rubocop/cop/lint/literal_as_condition'
274
287
  require_relative 'rubocop/cop/lint/literal_in_interpolation'
275
288
  require_relative 'rubocop/cop/lint/loop'
276
289
  require_relative 'rubocop/cop/lint/missing_cop_enable_directive'
290
+ require_relative 'rubocop/cop/lint/missing_super'
277
291
  require_relative 'rubocop/cop/lint/mixed_regexp_capture_types'
278
292
  require_relative 'rubocop/cop/lint/multiple_comparison'
279
293
  require_relative 'rubocop/cop/lint/nested_method_definition'
@@ -283,6 +297,7 @@ require_relative 'rubocop/cop/lint/non_deterministic_require_order'
283
297
  require_relative 'rubocop/cop/lint/non_local_exit_from_iterator'
284
298
  require_relative 'rubocop/cop/lint/number_conversion'
285
299
  require_relative 'rubocop/cop/lint/ordered_magic_comments'
300
+ require_relative 'rubocop/cop/lint/out_of_range_regexp_ref'
286
301
  require_relative 'rubocop/cop/lint/parentheses_as_grouped_expression'
287
302
  require_relative 'rubocop/cop/lint/percent_string_array'
288
303
  require_relative 'rubocop/cop/lint/percent_symbol_array'
@@ -304,6 +319,7 @@ require_relative 'rubocop/cop/lint/safe_navigation_consistency'
304
319
  require_relative 'rubocop/cop/lint/safe_navigation_chain'
305
320
  require_relative 'rubocop/cop/lint/safe_navigation_with_empty'
306
321
  require_relative 'rubocop/cop/lint/script_permission'
322
+ require_relative 'rubocop/cop/lint/self_assignment'
307
323
  require_relative 'rubocop/cop/lint/send_with_mixin_argument'
308
324
  require_relative 'rubocop/cop/lint/shadowed_argument'
309
325
  require_relative 'rubocop/cop/lint/shadowed_exception'
@@ -312,18 +328,22 @@ require_relative 'rubocop/cop/lint/struct_new_override'
312
328
  require_relative 'rubocop/cop/lint/suppressed_exception'
313
329
  require_relative 'rubocop/cop/lint/syntax'
314
330
  require_relative 'rubocop/cop/lint/to_json'
331
+ require_relative 'rubocop/cop/lint/top_level_return_with_argument'
332
+ require_relative 'rubocop/cop/lint/trailing_comma_in_attribute_declaration'
315
333
  require_relative 'rubocop/cop/lint/underscore_prefixed_variable_name'
316
334
  require_relative 'rubocop/cop/lint/unified_integer'
317
335
  require_relative 'rubocop/cop/lint/unreachable_code'
336
+ require_relative 'rubocop/cop/lint/unreachable_loop'
318
337
  require_relative 'rubocop/cop/lint/unused_block_argument'
319
338
  require_relative 'rubocop/cop/lint/unused_method_argument'
320
339
  require_relative 'rubocop/cop/lint/uri_escape_unescape'
321
340
  require_relative 'rubocop/cop/lint/uri_regexp'
322
341
  require_relative 'rubocop/cop/lint/useless_access_modifier'
323
342
  require_relative 'rubocop/cop/lint/useless_assignment'
324
- require_relative 'rubocop/cop/lint/useless_comparison'
325
343
  require_relative 'rubocop/cop/lint/useless_else_without_rescue'
344
+ require_relative 'rubocop/cop/lint/useless_method_definition'
326
345
  require_relative 'rubocop/cop/lint/useless_setter_call'
346
+ require_relative 'rubocop/cop/lint/useless_times'
327
347
  require_relative 'rubocop/cop/lint/void'
328
348
 
329
349
  require_relative 'rubocop/cop/metrics/utils/iterating_block'
@@ -377,10 +397,12 @@ require_relative 'rubocop/cop/style/character_literal'
377
397
  require_relative 'rubocop/cop/style/class_and_module_children'
378
398
  require_relative 'rubocop/cop/style/class_check'
379
399
  require_relative 'rubocop/cop/style/class_methods'
400
+ require_relative 'rubocop/cop/style/class_methods_definitions'
380
401
  require_relative 'rubocop/cop/style/class_vars'
381
402
  require_relative 'rubocop/cop/style/collection_methods'
382
403
  require_relative 'rubocop/cop/style/colon_method_call'
383
404
  require_relative 'rubocop/cop/style/colon_method_definition'
405
+ require_relative 'rubocop/cop/style/combinable_loops'
384
406
  require_relative 'rubocop/cop/style/command_literal'
385
407
  require_relative 'rubocop/cop/style/comment_annotation'
386
408
  require_relative 'rubocop/cop/style/commented_keyword'
@@ -408,12 +430,14 @@ require_relative 'rubocop/cop/style/end_block'
408
430
  require_relative 'rubocop/cop/style/eval_with_location'
409
431
  require_relative 'rubocop/cop/style/even_odd'
410
432
  require_relative 'rubocop/cop/style/expand_path_arguments'
433
+ require_relative 'rubocop/cop/style/explicit_block_argument'
411
434
  require_relative 'rubocop/cop/style/exponential_notation'
412
435
  require_relative 'rubocop/cop/style/float_division'
413
436
  require_relative 'rubocop/cop/style/for'
414
437
  require_relative 'rubocop/cop/style/format_string'
415
438
  require_relative 'rubocop/cop/style/format_string_token'
416
439
  require_relative 'rubocop/cop/style/frozen_string_literal_comment'
440
+ require_relative 'rubocop/cop/style/global_std_stream'
417
441
  require_relative 'rubocop/cop/style/global_vars'
418
442
  require_relative 'rubocop/cop/style/guard_clause'
419
443
  require_relative 'rubocop/cop/style/hash_as_last_array_item'
@@ -432,6 +456,7 @@ require_relative 'rubocop/cop/style/infinite_loop'
432
456
  require_relative 'rubocop/cop/style/inverse_methods'
433
457
  require_relative 'rubocop/cop/style/inline_comment'
434
458
  require_relative 'rubocop/cop/style/ip_addresses'
459
+ require_relative 'rubocop/cop/style/keyword_parameters_order'
435
460
  require_relative 'rubocop/cop/style/lambda'
436
461
  require_relative 'rubocop/cop/style/lambda_call'
437
462
  require_relative 'rubocop/cop/style/line_end_concatenation'
@@ -440,11 +465,12 @@ require_relative 'rubocop/cop/style/method_call_with_args_parentheses'
440
465
  require_relative 'rubocop/cop/style/redundant_assignment'
441
466
  require_relative 'rubocop/cop/style/redundant_fetch_block'
442
467
  require_relative 'rubocop/cop/style/redundant_file_extension_in_require'
468
+ require_relative 'rubocop/cop/style/redundant_self_assignment'
469
+ require_relative 'rubocop/cop/style/sole_nested_conditional'
443
470
  require_relative 'rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses'
444
471
  require_relative 'rubocop/cop/style/method_call_with_args_parentheses/require_parentheses'
445
472
  require_relative 'rubocop/cop/style/method_called_on_do_end_block'
446
473
  require_relative 'rubocop/cop/style/method_def_parentheses'
447
- require_relative 'rubocop/cop/style/method_missing_super'
448
474
  require_relative 'rubocop/cop/style/min_max'
449
475
  require_relative 'rubocop/cop/style/missing_else'
450
476
  require_relative 'rubocop/cop/style/missing_respond_to_missing'
@@ -477,6 +503,7 @@ require_relative 'rubocop/cop/style/one_line_conditional'
477
503
  require_relative 'rubocop/cop/style/or_assignment'
478
504
  require_relative 'rubocop/cop/style/option_hash'
479
505
  require_relative 'rubocop/cop/style/optional_arguments'
506
+ require_relative 'rubocop/cop/style/optional_boolean_parameter'
480
507
  require_relative 'rubocop/cop/style/parallel_assignment'
481
508
  require_relative 'rubocop/cop/style/parentheses_around_condition'
482
509
  require_relative 'rubocop/cop/style/percent_literal_delimiters'
@@ -511,12 +538,14 @@ require_relative 'rubocop/cop/style/self_assignment'
511
538
  require_relative 'rubocop/cop/style/semicolon'
512
539
  require_relative 'rubocop/cop/style/send'
513
540
  require_relative 'rubocop/cop/style/signal_exception'
541
+ require_relative 'rubocop/cop/style/single_argument_dig'
514
542
  require_relative 'rubocop/cop/style/single_line_block_params'
515
543
  require_relative 'rubocop/cop/style/single_line_methods'
516
544
  require_relative 'rubocop/cop/style/slicing_with_range'
517
545
  require_relative 'rubocop/cop/style/special_global_vars'
518
546
  require_relative 'rubocop/cop/style/stabby_lambda_parentheses'
519
547
  require_relative 'rubocop/cop/style/stderr_puts'
548
+ require_relative 'rubocop/cop/style/string_concatenation'
520
549
  require_relative 'rubocop/cop/style/string_hash_keys'
521
550
  require_relative 'rubocop/cop/style/string_literals'
522
551
  require_relative 'rubocop/cop/style/string_literals_in_interpolation'
@@ -585,6 +614,7 @@ require_relative 'rubocop/config_obsoletion'
585
614
  require_relative 'rubocop/config_store'
586
615
  require_relative 'rubocop/config_validator'
587
616
  require_relative 'rubocop/target_finder'
617
+ require_relative 'rubocop/directive_comment'
588
618
  require_relative 'rubocop/comment_config'
589
619
  require_relative 'rubocop/magic_comment'
590
620
  require_relative 'rubocop/result_cache'
@@ -602,3 +632,7 @@ require_relative 'rubocop/options'
602
632
  require_relative 'rubocop/remote_config'
603
633
  require_relative 'rubocop/target_ruby'
604
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
@@ -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
 
@@ -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
 
@@ -36,12 +41,15 @@ module RuboCop
36
41
  end
37
42
 
38
43
  def extra_enabled_comments
39
- extra_enabled_comments_with_names([], {})
44
+ extra_enabled_comments_with_names(
45
+ extras: Hash.new { |h, k| h[k] = [] },
46
+ names: Hash.new(0)
47
+ )
40
48
  end
41
49
 
42
50
  private
43
51
 
44
- def extra_enabled_comments_with_names(extras, names)
52
+ def extra_enabled_comments_with_names(extras:, names:)
45
53
  each_directive do |comment, cop_names, disabled|
46
54
  next unless comment_only_line?(comment.loc.expression.line)
47
55
 
@@ -55,7 +63,7 @@ module RuboCop
55
63
  extras
56
64
  end
57
65
 
58
- def analyze
66
+ def analyze # rubocop:todo Metrics/AbcSize
59
67
  analyses = Hash.new { |hash, key| hash[key] = CopAnalysis.new([], nil) }
60
68
 
61
69
  each_mentioned_cop do |cop_name, disabled, line, single_line|
@@ -128,9 +136,7 @@ module RuboCop
128
136
  end
129
137
 
130
138
  def each_directive
131
- return if processed_source.comments.nil?
132
-
133
- processed_source.each_comment do |comment|
139
+ processed_source.comments.each do |comment|
134
140
  directive = directive_parts(comment)
135
141
  next unless directive
136
142
 
@@ -153,11 +159,11 @@ module RuboCop
153
159
  end
154
160
 
155
161
  def qualified_cop_name(cop_name)
156
- Cop::Cop.qualified_cop_name(cop_name.strip, processed_source.file_path)
162
+ Cop::Registry.qualified_cop_name(cop_name.strip, processed_source.file_path)
157
163
  end
158
164
 
159
165
  def all_cop_names
160
- @all_cop_names ||= Cop::Cop.registry.names - [REDUNDANT_DISABLE]
166
+ @all_cop_names ||= Cop::Registry.global.names - [REDUNDANT_DISABLE]
161
167
  end
162
168
 
163
169
  def comment_only_line?(line_number)
@@ -187,18 +193,19 @@ module RuboCop
187
193
  enabled_cops += 1
188
194
  end
189
195
 
190
- extras << [comment, 'all'] if enabled_cops.zero?
196
+ extras[comment] << 'all' if enabled_cops.zero?
191
197
  end
192
198
 
199
+ # Collect cops that have been disabled or enabled by name in a directive comment
200
+ # so that `Lint/RedundantCopEnableDirective` can register offenses correctly.
193
201
  def handle_switch(cop_names, names, disabled, extras, comment)
194
202
  cop_names.each do |name|
195
- names[name] ||= 0
196
203
  if disabled
197
204
  names[name] += 1
198
205
  elsif (names[name]).positive?
199
206
  names[name] -= 1
200
207
  else
201
- extras << [comment, name]
208
+ extras[comment] << name
202
209
  end
203
210
  end
204
211
  end