rubocop 0.87.0 → 0.90.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (508) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/bin/rubocop-profile +32 -0
  4. data/config/default.yml +232 -33
  5. data/lib/rubocop.rb +36 -4
  6. data/lib/rubocop/cached_data.rb +1 -0
  7. data/lib/rubocop/cli.rb +2 -2
  8. data/lib/rubocop/cli/command.rb +1 -0
  9. data/lib/rubocop/cli/command/auto_genenerate_config.rb +4 -3
  10. data/lib/rubocop/cli/command/base.rb +2 -0
  11. data/lib/rubocop/cli/command/execute_runner.rb +2 -1
  12. data/lib/rubocop/cli/command/init_dotfile.rb +1 -0
  13. data/lib/rubocop/cli/command/show_cops.rb +3 -2
  14. data/lib/rubocop/cli/command/version.rb +3 -2
  15. data/lib/rubocop/cli/environment.rb +1 -0
  16. data/lib/rubocop/comment_config.rb +10 -7
  17. data/lib/rubocop/config.rb +20 -3
  18. data/lib/rubocop/config_loader.rb +39 -16
  19. data/lib/rubocop/config_loader_resolver.rb +4 -3
  20. data/lib/rubocop/config_obsoletion.rb +7 -1
  21. data/lib/rubocop/config_store.rb +4 -0
  22. data/lib/rubocop/config_validator.rb +5 -4
  23. data/lib/rubocop/cop/autocorrect_logic.rb +1 -1
  24. data/lib/rubocop/cop/badge.rb +1 -1
  25. data/lib/rubocop/cop/base.rb +37 -6
  26. data/lib/rubocop/cop/bundler/gem_comment.rb +7 -3
  27. data/lib/rubocop/cop/commissioner.rb +47 -8
  28. data/lib/rubocop/cop/cop.rb +1 -1
  29. data/lib/rubocop/cop/correctors/alignment_corrector.rb +4 -4
  30. data/lib/rubocop/cop/correctors/condition_corrector.rb +3 -5
  31. data/lib/rubocop/cop/correctors/empty_line_corrector.rb +9 -10
  32. data/lib/rubocop/cop/correctors/line_break_corrector.rb +6 -6
  33. data/lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb +34 -3
  34. data/lib/rubocop/cop/correctors/parentheses_corrector.rb +5 -8
  35. data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +6 -11
  36. data/lib/rubocop/cop/correctors/punctuation_corrector.rb +8 -10
  37. data/lib/rubocop/cop/correctors/unused_arg_corrector.rb +15 -18
  38. data/lib/rubocop/cop/documentation.rb +22 -0
  39. data/lib/rubocop/cop/force.rb +1 -0
  40. data/lib/rubocop/cop/gemspec/required_ruby_version.rb +38 -12
  41. data/lib/rubocop/cop/generator.rb +1 -0
  42. data/lib/rubocop/cop/generator/configuration_injector.rb +2 -2
  43. data/lib/rubocop/cop/internal_affairs/method_name_equal.rb +4 -12
  44. data/lib/rubocop/cop/internal_affairs/node_destructuring.rb +1 -1
  45. data/lib/rubocop/cop/internal_affairs/offense_location_keyword.rb +8 -8
  46. data/lib/rubocop/cop/internal_affairs/redundant_location_argument.rb +10 -7
  47. data/lib/rubocop/cop/internal_affairs/redundant_message_argument.rb +7 -8
  48. data/lib/rubocop/cop/internal_affairs/useless_message_assertion.rb +2 -2
  49. data/lib/rubocop/cop/layout/block_alignment.rb +24 -20
  50. data/lib/rubocop/cop/layout/class_structure.rb +15 -53
  51. data/lib/rubocop/cop/layout/closing_heredoc_indentation.rb +4 -6
  52. data/lib/rubocop/cop/layout/comment_indentation.rb +1 -1
  53. data/lib/rubocop/cop/layout/condition_position.rb +13 -15
  54. data/lib/rubocop/cop/layout/def_end_alignment.rb +7 -4
  55. data/lib/rubocop/cop/layout/dot_position.rb +21 -17
  56. data/lib/rubocop/cop/layout/empty_comment.rb +30 -23
  57. data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +19 -16
  58. data/lib/rubocop/cop/layout/empty_line_after_magic_comment.rb +13 -13
  59. data/lib/rubocop/cop/layout/empty_line_after_multiline_condition.rb +144 -0
  60. data/lib/rubocop/cop/layout/empty_line_between_defs.rb +21 -23
  61. data/lib/rubocop/cop/layout/empty_lines.rb +6 -9
  62. data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +5 -6
  63. data/lib/rubocop/cop/layout/empty_lines_around_arguments.rb +7 -8
  64. data/lib/rubocop/cop/layout/empty_lines_around_attribute_accessor.rb +3 -6
  65. data/lib/rubocop/cop/layout/empty_lines_around_begin_body.rb +2 -5
  66. data/lib/rubocop/cop/layout/empty_lines_around_block_body.rb +2 -5
  67. data/lib/rubocop/cop/layout/empty_lines_around_class_body.rb +2 -5
  68. data/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +2 -5
  69. data/lib/rubocop/cop/layout/empty_lines_around_method_body.rb +2 -5
  70. data/lib/rubocop/cop/layout/empty_lines_around_module_body.rb +2 -5
  71. data/lib/rubocop/cop/layout/end_alignment.rb +9 -9
  72. data/lib/rubocop/cop/layout/extra_spacing.rb +22 -36
  73. data/lib/rubocop/cop/layout/first_array_element_line_break.rb +2 -5
  74. data/lib/rubocop/cop/layout/first_hash_element_line_break.rb +2 -5
  75. data/lib/rubocop/cop/layout/first_method_argument_line_break.rb +5 -9
  76. data/lib/rubocop/cop/layout/first_method_parameter_line_break.rb +2 -5
  77. data/lib/rubocop/cop/layout/hash_alignment.rb +17 -20
  78. data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +15 -14
  79. data/lib/rubocop/cop/layout/heredoc_indentation.rb +16 -13
  80. data/lib/rubocop/cop/layout/indentation_style.rb +0 -2
  81. data/lib/rubocop/cop/layout/initial_indentation.rb +6 -7
  82. data/lib/rubocop/cop/layout/leading_comment_space.rb +12 -10
  83. data/lib/rubocop/cop/layout/leading_empty_lines.rb +6 -11
  84. data/lib/rubocop/cop/layout/multiline_array_brace_layout.rb +2 -5
  85. data/lib/rubocop/cop/layout/multiline_array_line_breaks.rb +2 -5
  86. data/lib/rubocop/cop/layout/multiline_assignment_layout.rb +10 -14
  87. data/lib/rubocop/cop/layout/multiline_block_layout.rb +37 -24
  88. data/lib/rubocop/cop/layout/multiline_hash_brace_layout.rb +2 -5
  89. data/lib/rubocop/cop/layout/multiline_hash_key_line_breaks.rb +2 -5
  90. data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +5 -9
  91. data/lib/rubocop/cop/layout/multiline_method_call_brace_layout.rb +2 -5
  92. data/lib/rubocop/cop/layout/multiline_method_definition_brace_layout.rb +2 -5
  93. data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +18 -23
  94. data/lib/rubocop/cop/layout/space_after_colon.rb +11 -7
  95. data/lib/rubocop/cop/layout/space_after_comma.rb +2 -5
  96. data/lib/rubocop/cop/layout/space_after_method_name.rb +5 -6
  97. data/lib/rubocop/cop/layout/space_after_not.rb +9 -11
  98. data/lib/rubocop/cop/layout/space_after_semicolon.rb +2 -5
  99. data/lib/rubocop/cop/layout/space_around_block_parameters.rb +3 -2
  100. data/lib/rubocop/cop/layout/space_around_equals_in_parameter_default.rb +20 -15
  101. data/lib/rubocop/cop/layout/space_around_keyword.rb +17 -18
  102. data/lib/rubocop/cop/layout/space_around_method_call_operator.rb +33 -66
  103. data/lib/rubocop/cop/layout/space_around_operators.rb +17 -16
  104. data/lib/rubocop/cop/layout/space_before_block_braces.rb +23 -22
  105. data/lib/rubocop/cop/layout/space_before_comma.rb +3 -5
  106. data/lib/rubocop/cop/layout/space_before_comment.rb +10 -7
  107. data/lib/rubocop/cop/layout/space_before_first_arg.rb +7 -7
  108. data/lib/rubocop/cop/layout/space_before_semicolon.rb +2 -5
  109. data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +9 -17
  110. data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +16 -18
  111. data/lib/rubocop/cop/layout/space_inside_array_percent_literal.rb +3 -8
  112. data/lib/rubocop/cop/layout/space_inside_block_braces.rb +17 -16
  113. data/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +16 -19
  114. data/lib/rubocop/cop/layout/space_inside_parens.rb +9 -14
  115. data/lib/rubocop/cop/layout/space_inside_percent_literal_delimiters.rb +5 -10
  116. data/lib/rubocop/cop/layout/space_inside_range_literal.rb +8 -17
  117. data/lib/rubocop/cop/layout/space_inside_reference_brackets.rb +13 -16
  118. data/lib/rubocop/cop/layout/space_inside_string_interpolation.rb +10 -11
  119. data/lib/rubocop/cop/layout/trailing_empty_lines.rb +10 -15
  120. data/lib/rubocop/cop/layout/trailing_whitespace.rb +11 -11
  121. data/lib/rubocop/cop/lint/ambiguous_block_association.rb +7 -4
  122. data/lib/rubocop/cop/lint/ambiguous_operator.rb +15 -10
  123. data/lib/rubocop/cop/lint/ambiguous_regexp_literal.rb +11 -13
  124. data/lib/rubocop/cop/lint/assignment_in_condition.rb +2 -2
  125. data/lib/rubocop/cop/lint/big_decimal_new.rb +10 -10
  126. data/lib/rubocop/cop/lint/binary_operator_with_identical_operands.rb +50 -0
  127. data/lib/rubocop/cop/lint/boolean_symbol.rb +16 -11
  128. data/lib/rubocop/cop/lint/circular_argument_reference.rb +1 -1
  129. data/lib/rubocop/cop/lint/constant_resolution.rb +2 -2
  130. data/lib/rubocop/cop/lint/debugger.rb +7 -1
  131. data/lib/rubocop/cop/lint/deprecated_class_methods.rb +9 -10
  132. data/lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb +21 -17
  133. data/lib/rubocop/cop/lint/disjunctive_assignment_in_constructor.rb +8 -2
  134. data/lib/rubocop/cop/lint/duplicate_case_condition.rb +1 -1
  135. data/lib/rubocop/cop/lint/duplicate_elsif_condition.rb +39 -0
  136. data/lib/rubocop/cop/lint/duplicate_hash_key.rb +1 -1
  137. data/lib/rubocop/cop/lint/duplicate_methods.rb +9 -6
  138. data/lib/rubocop/cop/lint/duplicate_require.rb +41 -0
  139. data/lib/rubocop/cop/lint/duplicate_rescue_exception.rb +49 -0
  140. data/lib/rubocop/cop/lint/each_with_object_argument.rb +1 -1
  141. data/lib/rubocop/cop/lint/else_layout.rb +1 -1
  142. data/lib/rubocop/cop/lint/empty_conditional_body.rb +67 -0
  143. data/lib/rubocop/cop/lint/empty_ensure.rb +5 -5
  144. data/lib/rubocop/cop/lint/empty_expression.rb +2 -2
  145. data/lib/rubocop/cop/lint/empty_file.rb +53 -0
  146. data/lib/rubocop/cop/lint/empty_interpolation.rb +5 -6
  147. data/lib/rubocop/cop/lint/empty_when.rb +2 -2
  148. data/lib/rubocop/cop/lint/ensure_return.rb +27 -29
  149. data/lib/rubocop/cop/lint/erb_new_arguments.rb +11 -10
  150. data/lib/rubocop/cop/lint/flip_flop.rb +1 -1
  151. data/lib/rubocop/cop/lint/float_comparison.rb +93 -0
  152. data/lib/rubocop/cop/lint/float_out_of_range.rb +1 -1
  153. data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +5 -4
  154. data/lib/rubocop/cop/lint/heredoc_method_call_position.rb +13 -14
  155. data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +5 -4
  156. data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +8 -8
  157. data/lib/rubocop/cop/lint/inherit_exception.rb +12 -7
  158. data/lib/rubocop/cop/lint/interpolation_check.rb +18 -15
  159. data/lib/rubocop/cop/lint/literal_as_condition.rb +14 -2
  160. data/lib/rubocop/cop/lint/literal_in_interpolation.rb +7 -7
  161. data/lib/rubocop/cop/lint/loop.rb +23 -2
  162. data/lib/rubocop/cop/lint/missing_cop_enable_directive.rb +6 -5
  163. data/lib/rubocop/cop/lint/missing_super.rb +99 -0
  164. data/lib/rubocop/cop/lint/mixed_regexp_capture_types.rb +3 -36
  165. data/lib/rubocop/cop/lint/multiple_comparison.rb +6 -9
  166. data/lib/rubocop/cop/lint/nested_method_definition.rb +14 -20
  167. data/lib/rubocop/cop/lint/nested_percent_literal.rb +1 -1
  168. data/lib/rubocop/cop/lint/next_without_accumulator.rb +1 -1
  169. data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +82 -11
  170. data/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +2 -2
  171. data/lib/rubocop/cop/lint/number_conversion.rb +6 -9
  172. data/lib/rubocop/cop/lint/ordered_magic_comments.rb +11 -13
  173. data/lib/rubocop/cop/lint/out_of_range_regexp_ref.rb +80 -0
  174. data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +4 -10
  175. data/lib/rubocop/cop/lint/percent_string_array.rb +3 -6
  176. data/lib/rubocop/cop/lint/percent_symbol_array.rb +13 -12
  177. data/lib/rubocop/cop/lint/raise_exception.rb +12 -10
  178. data/lib/rubocop/cop/lint/rand_one.rb +2 -2
  179. data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +16 -19
  180. data/lib/rubocop/cop/lint/redundant_cop_enable_directive.rb +7 -11
  181. data/lib/rubocop/cop/lint/redundant_require_statement.rb +4 -7
  182. data/lib/rubocop/cop/lint/redundant_splat_expansion.rb +13 -9
  183. data/lib/rubocop/cop/lint/redundant_string_coercion.rb +6 -13
  184. data/lib/rubocop/cop/lint/redundant_with_index.rb +11 -14
  185. data/lib/rubocop/cop/lint/redundant_with_object.rb +11 -14
  186. data/lib/rubocop/cop/lint/regexp_as_condition.rb +4 -6
  187. data/lib/rubocop/cop/lint/require_parentheses.rb +2 -2
  188. data/lib/rubocop/cop/lint/rescue_exception.rb +1 -1
  189. data/lib/rubocop/cop/lint/rescue_type.rb +8 -8
  190. data/lib/rubocop/cop/lint/return_in_void_context.rb +2 -4
  191. data/lib/rubocop/cop/lint/safe_navigation_chain.rb +3 -6
  192. data/lib/rubocop/cop/lint/safe_navigation_consistency.rb +14 -10
  193. data/lib/rubocop/cop/lint/safe_navigation_with_empty.rb +7 -7
  194. data/lib/rubocop/cop/lint/script_permission.rb +10 -7
  195. data/lib/rubocop/cop/lint/self_assignment.rb +78 -0
  196. data/lib/rubocop/cop/lint/send_with_mixin_argument.rb +5 -11
  197. data/lib/rubocop/cop/lint/shadowed_argument.rb +3 -3
  198. data/lib/rubocop/cop/lint/shadowed_exception.rb +2 -2
  199. data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +7 -7
  200. data/lib/rubocop/cop/lint/struct_new_override.rb +1 -1
  201. data/lib/rubocop/cop/lint/suppressed_exception.rb +4 -7
  202. data/lib/rubocop/cop/lint/to_json.rb +4 -6
  203. data/lib/rubocop/cop/lint/top_level_return_with_argument.rb +34 -0
  204. data/lib/rubocop/cop/lint/trailing_comma_in_attribute_declaration.rb +57 -0
  205. data/lib/rubocop/cop/lint/underscore_prefixed_variable_name.rb +4 -4
  206. data/lib/rubocop/cop/lint/unified_integer.rb +4 -6
  207. data/lib/rubocop/cop/lint/unreachable_code.rb +1 -1
  208. data/lib/rubocop/cop/lint/unreachable_loop.rb +174 -0
  209. data/lib/rubocop/cop/lint/unused_block_argument.rb +8 -3
  210. data/lib/rubocop/cop/lint/unused_method_argument.rb +8 -3
  211. data/lib/rubocop/cop/lint/uri_escape_unescape.rb +1 -1
  212. data/lib/rubocop/cop/lint/uri_regexp.rb +11 -47
  213. data/lib/rubocop/cop/lint/useless_access_modifier.rb +25 -15
  214. data/lib/rubocop/cop/lint/useless_assignment.rb +4 -4
  215. data/lib/rubocop/cop/lint/useless_else_without_rescue.rb +6 -15
  216. data/lib/rubocop/cop/lint/useless_method_definition.rb +77 -0
  217. data/lib/rubocop/cop/lint/useless_setter_call.rb +4 -6
  218. data/lib/rubocop/cop/lint/void.rb +3 -7
  219. data/lib/rubocop/cop/metrics/abc_size.rb +1 -1
  220. data/lib/rubocop/cop/metrics/block_length.rb +2 -2
  221. data/lib/rubocop/cop/metrics/block_nesting.rb +2 -2
  222. data/lib/rubocop/cop/metrics/class_length.rb +2 -2
  223. data/lib/rubocop/cop/metrics/cyclomatic_complexity.rb +2 -1
  224. data/lib/rubocop/cop/metrics/method_length.rb +2 -2
  225. data/lib/rubocop/cop/metrics/module_length.rb +2 -2
  226. data/lib/rubocop/cop/metrics/parameter_lists.rb +2 -6
  227. data/lib/rubocop/cop/metrics/perceived_complexity.rb +7 -8
  228. data/lib/rubocop/cop/metrics/utils/abc_size_calculator.rb +50 -5
  229. data/lib/rubocop/cop/metrics/utils/code_length_calculator.rb +53 -24
  230. data/lib/rubocop/cop/metrics/utils/repeated_csend_discount.rb +37 -0
  231. data/lib/rubocop/cop/migration/department_name.rb +14 -16
  232. data/lib/rubocop/cop/mixin/alignment.rb +5 -1
  233. data/lib/rubocop/cop/mixin/allowed_methods.rb +2 -0
  234. data/lib/rubocop/cop/mixin/annotation_comment.rb +5 -0
  235. data/lib/rubocop/cop/mixin/array_min_size.rb +1 -1
  236. data/lib/rubocop/cop/mixin/check_line_breakable.rb +17 -8
  237. data/lib/rubocop/cop/mixin/code_length.rb +22 -5
  238. data/lib/rubocop/cop/mixin/comments_help.rb +54 -0
  239. data/lib/rubocop/cop/mixin/empty_lines_around_body.rb +8 -7
  240. data/lib/rubocop/cop/mixin/empty_parameter.rb +3 -1
  241. data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +3 -1
  242. data/lib/rubocop/cop/mixin/first_element_line_break.rb +3 -1
  243. data/lib/rubocop/cop/mixin/hash_transform_method.rb +22 -11
  244. data/lib/rubocop/cop/mixin/line_length_help.rb +1 -3
  245. data/lib/rubocop/cop/mixin/method_complexity.rb +10 -2
  246. data/lib/rubocop/cop/mixin/multiline_element_line_breaks.rb +3 -1
  247. data/lib/rubocop/cop/mixin/multiline_literal_brace_layout.rb +13 -12
  248. data/lib/rubocop/cop/mixin/negative_conditional.rb +2 -2
  249. data/lib/rubocop/cop/mixin/percent_array.rb +16 -9
  250. data/lib/rubocop/cop/mixin/range_help.rb +18 -4
  251. data/lib/rubocop/cop/mixin/regexp_literal_help.rb +1 -1
  252. data/lib/rubocop/cop/mixin/rescue_node.rb +10 -1
  253. data/lib/rubocop/cop/mixin/space_after_punctuation.rb +4 -3
  254. data/lib/rubocop/cop/mixin/space_before_punctuation.rb +4 -3
  255. data/lib/rubocop/cop/mixin/statement_modifier.rb +39 -10
  256. data/lib/rubocop/cop/mixin/surrounding_space.rb +8 -29
  257. data/lib/rubocop/cop/mixin/trailing_comma.rb +9 -11
  258. data/lib/rubocop/cop/mixin/uncommunicative_name.rb +6 -13
  259. data/lib/rubocop/cop/mixin/unused_argument.rb +4 -6
  260. data/lib/rubocop/cop/mixin/visibility_help.rb +50 -0
  261. data/lib/rubocop/cop/naming/accessor_method_name.rb +4 -2
  262. data/lib/rubocop/cop/naming/ascii_identifiers.rb +3 -3
  263. data/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +1 -1
  264. data/lib/rubocop/cop/naming/block_parameter_name.rb +1 -1
  265. data/lib/rubocop/cop/naming/class_and_module_camel_case.rb +2 -2
  266. data/lib/rubocop/cop/naming/constant_name.rb +2 -2
  267. data/lib/rubocop/cop/naming/file_name.rb +3 -3
  268. data/lib/rubocop/cop/naming/heredoc_delimiter_case.rb +2 -2
  269. data/lib/rubocop/cop/naming/heredoc_delimiter_naming.rb +2 -2
  270. data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +2 -2
  271. data/lib/rubocop/cop/naming/method_parameter_name.rb +1 -1
  272. data/lib/rubocop/cop/naming/predicate_name.rb +3 -5
  273. data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +12 -11
  274. data/lib/rubocop/cop/offense.rb +1 -0
  275. data/lib/rubocop/cop/registry.rb +3 -3
  276. data/lib/rubocop/cop/security/eval.rb +2 -2
  277. data/lib/rubocop/cop/security/json_load.rb +6 -8
  278. data/lib/rubocop/cop/security/marshal_load.rb +2 -4
  279. data/lib/rubocop/cop/security/open.rb +2 -2
  280. data/lib/rubocop/cop/security/yaml_load.rb +6 -6
  281. data/lib/rubocop/cop/severity.rb +0 -8
  282. data/lib/rubocop/cop/style/access_modifier_declarations.rb +16 -9
  283. data/lib/rubocop/cop/style/accessor_grouping.rb +33 -20
  284. data/lib/rubocop/cop/style/alias.rb +41 -36
  285. data/lib/rubocop/cop/style/and_or.rb +9 -11
  286. data/lib/rubocop/cop/style/array_coercion.rb +63 -0
  287. data/lib/rubocop/cop/style/array_join.rb +6 -8
  288. data/lib/rubocop/cop/style/ascii_comments.rb +4 -4
  289. data/lib/rubocop/cop/style/attr.rb +11 -9
  290. data/lib/rubocop/cop/style/auto_resource_cleanup.rb +5 -7
  291. data/lib/rubocop/cop/style/bare_percent_literals.rb +10 -12
  292. data/lib/rubocop/cop/style/begin_block.rb +2 -2
  293. data/lib/rubocop/cop/style/bisected_attr_accessor.rb +58 -38
  294. data/lib/rubocop/cop/style/block_comments.rb +14 -18
  295. data/lib/rubocop/cop/style/block_delimiters.rb +23 -23
  296. data/lib/rubocop/cop/style/case_equality.rb +29 -5
  297. data/lib/rubocop/cop/style/case_like_if.rb +236 -0
  298. data/lib/rubocop/cop/style/class_and_module_children.rb +14 -11
  299. data/lib/rubocop/cop/style/class_check.rb +7 -9
  300. data/lib/rubocop/cop/style/class_methods.rb +7 -11
  301. data/lib/rubocop/cop/style/class_methods_definitions.rb +131 -0
  302. data/lib/rubocop/cop/style/class_vars.rb +6 -10
  303. data/lib/rubocop/cop/style/collection_methods.rb +11 -17
  304. data/lib/rubocop/cop/style/colon_method_call.rb +8 -9
  305. data/lib/rubocop/cop/style/colon_method_definition.rb +6 -6
  306. data/lib/rubocop/cop/style/combinable_loops.rb +89 -0
  307. data/lib/rubocop/cop/style/command_literal.rb +23 -24
  308. data/lib/rubocop/cop/style/comment_annotation.rb +15 -15
  309. data/lib/rubocop/cop/style/commented_keyword.rb +6 -3
  310. data/lib/rubocop/cop/style/conditional_assignment.rb +13 -4
  311. data/lib/rubocop/cop/style/constant_visibility.rb +3 -2
  312. data/lib/rubocop/cop/style/copyright.rb +12 -12
  313. data/lib/rubocop/cop/style/date_time.rb +1 -1
  314. data/lib/rubocop/cop/style/def_with_parentheses.rb +8 -10
  315. data/lib/rubocop/cop/style/dir.rb +7 -10
  316. data/lib/rubocop/cop/style/disable_cops_within_source_code_directive.rb +7 -9
  317. data/lib/rubocop/cop/style/documentation.rb +6 -8
  318. data/lib/rubocop/cop/style/documentation_method.rb +1 -1
  319. data/lib/rubocop/cop/style/double_cop_disable_directive.rb +12 -15
  320. data/lib/rubocop/cop/style/double_negation.rb +2 -2
  321. data/lib/rubocop/cop/style/each_for_simple_loop.rb +5 -8
  322. data/lib/rubocop/cop/style/each_with_object.rb +16 -19
  323. data/lib/rubocop/cop/style/empty_block_parameter.rb +9 -10
  324. data/lib/rubocop/cop/style/empty_case_condition.rb +19 -20
  325. data/lib/rubocop/cop/style/empty_else.rb +17 -19
  326. data/lib/rubocop/cop/style/empty_lambda_parameter.rb +9 -10
  327. data/lib/rubocop/cop/style/empty_literal.rb +15 -16
  328. data/lib/rubocop/cop/style/empty_method.rb +10 -13
  329. data/lib/rubocop/cop/style/encoding.rb +5 -9
  330. data/lib/rubocop/cop/style/end_block.rb +4 -6
  331. data/lib/rubocop/cop/style/eval_with_location.rb +9 -7
  332. data/lib/rubocop/cop/style/even_odd.rb +7 -11
  333. data/lib/rubocop/cop/style/expand_path_arguments.rb +21 -20
  334. data/lib/rubocop/cop/style/explicit_block_argument.rb +102 -0
  335. data/lib/rubocop/cop/style/exponential_notation.rb +7 -9
  336. data/lib/rubocop/cop/style/float_division.rb +8 -11
  337. data/lib/rubocop/cop/style/for.rb +11 -15
  338. data/lib/rubocop/cop/style/format_string.rb +21 -19
  339. data/lib/rubocop/cop/style/format_string_token.rb +10 -12
  340. data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +19 -41
  341. data/lib/rubocop/cop/style/global_std_stream.rb +65 -0
  342. data/lib/rubocop/cop/style/global_vars.rb +2 -2
  343. data/lib/rubocop/cop/style/guard_clause.rb +6 -6
  344. data/lib/rubocop/cop/style/hash_as_last_array_item.rb +69 -0
  345. data/lib/rubocop/cop/style/hash_each_methods.rb +5 -8
  346. data/lib/rubocop/cop/style/hash_like_case.rb +76 -0
  347. data/lib/rubocop/cop/style/hash_syntax.rb +10 -8
  348. data/lib/rubocop/cop/style/hash_transform_keys.rb +17 -3
  349. data/lib/rubocop/cop/style/hash_transform_values.rb +16 -2
  350. data/lib/rubocop/cop/style/identical_conditional_branches.rb +2 -2
  351. data/lib/rubocop/cop/style/if_inside_else.rb +3 -3
  352. data/lib/rubocop/cop/style/if_unless_modifier.rb +19 -41
  353. data/lib/rubocop/cop/style/if_unless_modifier_of_if_unless.rb +3 -7
  354. data/lib/rubocop/cop/style/if_with_semicolon.rb +3 -6
  355. data/lib/rubocop/cop/style/implicit_runtime_error.rb +1 -1
  356. data/lib/rubocop/cop/style/infinite_loop.rb +24 -24
  357. data/lib/rubocop/cop/style/inline_comment.rb +3 -3
  358. data/lib/rubocop/cop/style/inverse_methods.rb +22 -32
  359. data/lib/rubocop/cop/style/keyword_parameters_order.rb +58 -0
  360. data/lib/rubocop/cop/style/lambda.rb +7 -12
  361. data/lib/rubocop/cop/style/lambda_call.rb +14 -13
  362. data/lib/rubocop/cop/style/line_end_concatenation.rb +19 -16
  363. data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +2 -1
  364. data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +16 -11
  365. data/lib/rubocop/cop/style/method_call_with_args_parentheses/require_parentheses.rb +4 -8
  366. data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +8 -7
  367. data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +12 -3
  368. data/lib/rubocop/cop/style/method_def_parentheses.rb +11 -16
  369. data/lib/rubocop/cop/style/min_max.rb +8 -12
  370. data/lib/rubocop/cop/style/missing_else.rb +11 -21
  371. data/lib/rubocop/cop/style/missing_respond_to_missing.rb +10 -3
  372. data/lib/rubocop/cop/style/mixin_grouping.rb +24 -27
  373. data/lib/rubocop/cop/style/mixin_usage.rb +1 -1
  374. data/lib/rubocop/cop/style/module_function.rb +10 -13
  375. data/lib/rubocop/cop/style/multiline_if_modifier.rb +3 -10
  376. data/lib/rubocop/cop/style/multiline_if_then.rb +4 -10
  377. data/lib/rubocop/cop/style/multiline_memoization.rb +14 -12
  378. data/lib/rubocop/cop/style/multiline_method_signature.rb +2 -2
  379. data/lib/rubocop/cop/style/multiline_ternary_operator.rb +4 -6
  380. data/lib/rubocop/cop/style/multiline_when_then.rb +9 -11
  381. data/lib/rubocop/cop/style/multiple_comparison.rb +1 -1
  382. data/lib/rubocop/cop/style/mutable_constant.rb +23 -20
  383. data/lib/rubocop/cop/style/negated_if.rb +6 -6
  384. data/lib/rubocop/cop/style/negated_unless.rb +6 -6
  385. data/lib/rubocop/cop/style/negated_while.rb +7 -15
  386. data/lib/rubocop/cop/style/nested_modifier.rb +10 -13
  387. data/lib/rubocop/cop/style/nested_parenthesized_calls.rb +14 -12
  388. data/lib/rubocop/cop/style/nested_ternary_operator.rb +14 -16
  389. data/lib/rubocop/cop/style/next.rb +10 -14
  390. data/lib/rubocop/cop/style/nil_comparison.rb +11 -11
  391. data/lib/rubocop/cop/style/non_nil_check.rb +32 -26
  392. data/lib/rubocop/cop/style/not.rb +19 -26
  393. data/lib/rubocop/cop/style/numeric_literal_prefix.rb +4 -9
  394. data/lib/rubocop/cop/style/numeric_predicate.rb +11 -15
  395. data/lib/rubocop/cop/style/one_line_conditional.rb +71 -23
  396. data/lib/rubocop/cop/style/option_hash.rb +1 -1
  397. data/lib/rubocop/cop/style/optional_arguments.rb +1 -1
  398. data/lib/rubocop/cop/style/optional_boolean_parameter.rb +42 -0
  399. data/lib/rubocop/cop/style/or_assignment.rb +13 -10
  400. data/lib/rubocop/cop/style/parallel_assignment.rb +18 -18
  401. data/lib/rubocop/cop/style/parentheses_around_condition.rb +6 -6
  402. data/lib/rubocop/cop/style/percent_literal_delimiters.rb +14 -20
  403. data/lib/rubocop/cop/style/percent_q_literals.rb +8 -10
  404. data/lib/rubocop/cop/style/perl_backrefs.rb +8 -10
  405. data/lib/rubocop/cop/style/preferred_hash_methods.rb +9 -14
  406. data/lib/rubocop/cop/style/proc.rb +6 -6
  407. data/lib/rubocop/cop/style/raise_args.rb +13 -24
  408. data/lib/rubocop/cop/style/random_with_offset.rb +16 -16
  409. data/lib/rubocop/cop/style/redundant_assignment.rb +8 -10
  410. data/lib/rubocop/cop/style/redundant_begin.rb +7 -9
  411. data/lib/rubocop/cop/style/redundant_capital_w.rb +6 -9
  412. data/lib/rubocop/cop/style/redundant_condition.rb +20 -9
  413. data/lib/rubocop/cop/style/redundant_exception.rb +4 -0
  414. data/lib/rubocop/cop/style/redundant_fetch_block.rb +3 -12
  415. data/lib/rubocop/cop/style/redundant_file_extension_in_require.rb +50 -0
  416. data/lib/rubocop/cop/style/redundant_freeze.rb +3 -6
  417. data/lib/rubocop/cop/style/redundant_interpolation.rb +25 -24
  418. data/lib/rubocop/cop/style/redundant_parentheses.rb +7 -9
  419. data/lib/rubocop/cop/style/redundant_regexp_character_class.rb +6 -13
  420. data/lib/rubocop/cop/style/redundant_regexp_escape.rb +16 -25
  421. data/lib/rubocop/cop/style/redundant_self.rb +2 -2
  422. data/lib/rubocop/cop/style/redundant_self_assignment.rb +116 -0
  423. data/lib/rubocop/cop/style/redundant_sort.rb +26 -12
  424. data/lib/rubocop/cop/style/regexp_literal.rb +10 -21
  425. data/lib/rubocop/cop/style/rescue_modifier.rb +29 -9
  426. data/lib/rubocop/cop/style/return_nil.rb +5 -5
  427. data/lib/rubocop/cop/style/safe_navigation.rb +17 -16
  428. data/lib/rubocop/cop/style/sample.rb +10 -13
  429. data/lib/rubocop/cop/style/self_assignment.rb +26 -22
  430. data/lib/rubocop/cop/style/semicolon.rb +6 -9
  431. data/lib/rubocop/cop/style/send.rb +2 -2
  432. data/lib/rubocop/cop/style/signal_exception.rb +23 -19
  433. data/lib/rubocop/cop/style/single_argument_dig.rb +54 -0
  434. data/lib/rubocop/cop/style/single_line_block_params.rb +4 -2
  435. data/lib/rubocop/cop/style/single_line_methods.rb +18 -17
  436. data/lib/rubocop/cop/style/slicing_with_range.rb +4 -7
  437. data/lib/rubocop/cop/style/sole_nested_conditional.rb +66 -0
  438. data/lib/rubocop/cop/style/special_global_vars.rb +10 -15
  439. data/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +17 -20
  440. data/lib/rubocop/cop/style/stderr_puts.rb +4 -6
  441. data/lib/rubocop/cop/style/string_concatenation.rb +92 -0
  442. data/lib/rubocop/cop/style/string_hash_keys.rb +6 -7
  443. data/lib/rubocop/cop/style/string_methods.rb +7 -17
  444. data/lib/rubocop/cop/style/strip.rb +8 -14
  445. data/lib/rubocop/cop/style/struct_inheritance.rb +4 -7
  446. data/lib/rubocop/cop/style/symbol_array.rb +6 -17
  447. data/lib/rubocop/cop/style/symbol_literal.rb +4 -6
  448. data/lib/rubocop/cop/style/symbol_proc.rb +15 -19
  449. data/lib/rubocop/cop/style/ternary_parentheses.rb +21 -20
  450. data/lib/rubocop/cop/style/trailing_body_on_class.rb +3 -6
  451. data/lib/rubocop/cop/style/trailing_body_on_method_definition.rb +4 -7
  452. data/lib/rubocop/cop/style/trailing_body_on_module.rb +3 -6
  453. data/lib/rubocop/cop/style/trailing_comma_in_arguments.rb +2 -5
  454. data/lib/rubocop/cop/style/trailing_comma_in_array_literal.rb +2 -5
  455. data/lib/rubocop/cop/style/trailing_comma_in_block_args.rb +7 -6
  456. data/lib/rubocop/cop/style/trailing_comma_in_hash_literal.rb +2 -5
  457. data/lib/rubocop/cop/style/trailing_method_end_statement.rb +9 -32
  458. data/lib/rubocop/cop/style/trailing_underscore_variable.rb +8 -17
  459. data/lib/rubocop/cop/style/trivial_accessors.rb +26 -30
  460. data/lib/rubocop/cop/style/unless_else.rb +5 -8
  461. data/lib/rubocop/cop/style/unpack_first.rb +4 -8
  462. data/lib/rubocop/cop/style/variable_interpolation.rb +7 -10
  463. data/lib/rubocop/cop/style/when_then.rb +4 -6
  464. data/lib/rubocop/cop/style/while_until_do.rb +6 -16
  465. data/lib/rubocop/cop/style/while_until_modifier.rb +6 -20
  466. data/lib/rubocop/cop/style/word_array.rb +5 -23
  467. data/lib/rubocop/cop/style/yoda_condition.rb +4 -15
  468. data/lib/rubocop/cop/style/zero_length_predicate.rb +19 -17
  469. data/lib/rubocop/cop/team.rb +2 -1
  470. data/lib/rubocop/cop/tokens_util.rb +84 -0
  471. data/lib/rubocop/cop/util.rb +3 -13
  472. data/lib/rubocop/cop/utils/format_string.rb +3 -5
  473. data/lib/rubocop/cop/variable_force.rb +2 -2
  474. data/lib/rubocop/cop/variable_force/branch.rb +1 -0
  475. data/lib/rubocop/cop/variable_force/variable.rb +7 -5
  476. data/lib/rubocop/cops_documentation_generator.rb +284 -0
  477. data/lib/rubocop/core_ext/string.rb +1 -1
  478. data/lib/rubocop/error.rb +1 -0
  479. data/lib/rubocop/ext/regexp_node.rb +46 -0
  480. data/lib/rubocop/file_finder.rb +13 -12
  481. data/lib/rubocop/formatter/auto_gen_config_formatter.rb +2 -1
  482. data/lib/rubocop/formatter/disabled_config_formatter.rb +2 -2
  483. data/lib/rubocop/formatter/formatter_set.rb +1 -0
  484. data/lib/rubocop/formatter/html_formatter.rb +2 -0
  485. data/lib/rubocop/formatter/junit_formatter.rb +1 -1
  486. data/lib/rubocop/formatter/progress_formatter.rb +2 -1
  487. data/lib/rubocop/formatter/quiet_formatter.rb +1 -1
  488. data/lib/rubocop/formatter/simple_text_formatter.rb +36 -6
  489. data/lib/rubocop/name_similarity.rb +1 -0
  490. data/lib/rubocop/options.rb +9 -6
  491. data/lib/rubocop/path_util.rb +17 -17
  492. data/lib/rubocop/rake_task.rb +1 -0
  493. data/lib/rubocop/remote_config.rb +1 -0
  494. data/lib/rubocop/result_cache.rb +13 -8
  495. data/lib/rubocop/rspec/cop_helper.rb +4 -1
  496. data/lib/rubocop/rspec/expect_offense.rb +49 -7
  497. data/lib/rubocop/rspec/shared_contexts.rb +25 -14
  498. data/lib/rubocop/runner.rb +7 -7
  499. data/lib/rubocop/string_interpreter.rb +3 -0
  500. data/lib/rubocop/target_finder.rb +14 -10
  501. data/lib/rubocop/target_ruby.rb +6 -0
  502. data/lib/rubocop/version.rb +3 -2
  503. data/lib/rubocop/yaml_duplication_checker.rb +1 -0
  504. metadata +42 -8
  505. data/lib/rubocop/cop/lint/useless_comparison.rb +0 -28
  506. data/lib/rubocop/cop/mixin/parser_diagnostic.rb +0 -37
  507. data/lib/rubocop/cop/mixin/too_many_lines.rb +0 -25
  508. data/lib/rubocop/cop/style/method_missing_super.rb +0 -34
@@ -9,6 +9,7 @@ require 'regexp_parser'
9
9
  require 'unicode/display_width/no_string_ext'
10
10
  require 'rubocop-ast'
11
11
  require_relative 'rubocop/ast_aliases'
12
+ require_relative 'rubocop/ext/regexp_node'
12
13
 
13
14
  require_relative 'rubocop/version'
14
15
 
@@ -23,6 +24,7 @@ require_relative 'rubocop/string_interpreter'
23
24
  require_relative 'rubocop/error'
24
25
  require_relative 'rubocop/warning'
25
26
 
27
+ require_relative 'rubocop/cop/tokens_util'
26
28
  require_relative 'rubocop/cop/util'
27
29
  require_relative 'rubocop/cop/offense'
28
30
  require_relative 'rubocop/cop/message_annotator'
@@ -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,11 +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'
120
+ require_relative 'rubocop/cop/mixin/visibility_help'
121
+ require_relative 'rubocop/cop/mixin/comments_help' # relies on visibility_help
118
122
 
119
123
  require_relative 'rubocop/cop/utils/format_string'
120
124
 
@@ -164,6 +168,7 @@ require_relative 'rubocop/cop/layout/else_alignment'
164
168
  require_relative 'rubocop/cop/layout/empty_comment'
165
169
  require_relative 'rubocop/cop/layout/empty_line_after_guard_clause'
166
170
  require_relative 'rubocop/cop/layout/empty_line_after_magic_comment'
171
+ require_relative 'rubocop/cop/layout/empty_line_after_multiline_condition'
167
172
  require_relative 'rubocop/cop/layout/empty_line_between_defs'
168
173
  require_relative 'rubocop/cop/layout/empty_lines_around_access_modifier'
169
174
  require_relative 'rubocop/cop/layout/empty_lines_around_arguments'
@@ -242,6 +247,7 @@ require_relative 'rubocop/cop/lint/ambiguous_operator'
242
247
  require_relative 'rubocop/cop/lint/ambiguous_regexp_literal'
243
248
  require_relative 'rubocop/cop/lint/assignment_in_condition'
244
249
  require_relative 'rubocop/cop/lint/big_decimal_new'
250
+ require_relative 'rubocop/cop/lint/binary_operator_with_identical_operands'
245
251
  require_relative 'rubocop/cop/lint/boolean_symbol'
246
252
  require_relative 'rubocop/cop/lint/circular_argument_reference'
247
253
  require_relative 'rubocop/cop/lint/constant_resolution'
@@ -250,17 +256,23 @@ require_relative 'rubocop/cop/lint/deprecated_class_methods'
250
256
  require_relative 'rubocop/cop/lint/deprecated_open_ssl_constant'
251
257
  require_relative 'rubocop/cop/lint/disjunctive_assignment_in_constructor'
252
258
  require_relative 'rubocop/cop/lint/duplicate_case_condition'
259
+ require_relative 'rubocop/cop/lint/duplicate_elsif_condition'
253
260
  require_relative 'rubocop/cop/lint/duplicate_hash_key'
254
261
  require_relative 'rubocop/cop/lint/duplicate_methods'
262
+ require_relative 'rubocop/cop/lint/duplicate_require'
263
+ require_relative 'rubocop/cop/lint/duplicate_rescue_exception'
255
264
  require_relative 'rubocop/cop/lint/each_with_object_argument'
256
265
  require_relative 'rubocop/cop/lint/else_layout'
266
+ require_relative 'rubocop/cop/lint/empty_conditional_body'
257
267
  require_relative 'rubocop/cop/lint/empty_ensure'
258
268
  require_relative 'rubocop/cop/lint/empty_expression'
269
+ require_relative 'rubocop/cop/lint/empty_file'
259
270
  require_relative 'rubocop/cop/lint/empty_interpolation'
260
271
  require_relative 'rubocop/cop/lint/empty_when'
261
272
  require_relative 'rubocop/cop/lint/ensure_return'
262
273
  require_relative 'rubocop/cop/lint/erb_new_arguments'
263
274
  require_relative 'rubocop/cop/lint/flip_flop'
275
+ require_relative 'rubocop/cop/lint/float_comparison'
264
276
  require_relative 'rubocop/cop/lint/float_out_of_range'
265
277
  require_relative 'rubocop/cop/lint/format_parameter_mismatch'
266
278
  require_relative 'rubocop/cop/lint/heredoc_method_call_position'
@@ -272,6 +284,7 @@ require_relative 'rubocop/cop/lint/literal_as_condition'
272
284
  require_relative 'rubocop/cop/lint/literal_in_interpolation'
273
285
  require_relative 'rubocop/cop/lint/loop'
274
286
  require_relative 'rubocop/cop/lint/missing_cop_enable_directive'
287
+ require_relative 'rubocop/cop/lint/missing_super'
275
288
  require_relative 'rubocop/cop/lint/mixed_regexp_capture_types'
276
289
  require_relative 'rubocop/cop/lint/multiple_comparison'
277
290
  require_relative 'rubocop/cop/lint/nested_method_definition'
@@ -281,6 +294,7 @@ require_relative 'rubocop/cop/lint/non_deterministic_require_order'
281
294
  require_relative 'rubocop/cop/lint/non_local_exit_from_iterator'
282
295
  require_relative 'rubocop/cop/lint/number_conversion'
283
296
  require_relative 'rubocop/cop/lint/ordered_magic_comments'
297
+ require_relative 'rubocop/cop/lint/out_of_range_regexp_ref'
284
298
  require_relative 'rubocop/cop/lint/parentheses_as_grouped_expression'
285
299
  require_relative 'rubocop/cop/lint/percent_string_array'
286
300
  require_relative 'rubocop/cop/lint/percent_symbol_array'
@@ -302,6 +316,7 @@ require_relative 'rubocop/cop/lint/safe_navigation_consistency'
302
316
  require_relative 'rubocop/cop/lint/safe_navigation_chain'
303
317
  require_relative 'rubocop/cop/lint/safe_navigation_with_empty'
304
318
  require_relative 'rubocop/cop/lint/script_permission'
319
+ require_relative 'rubocop/cop/lint/self_assignment'
305
320
  require_relative 'rubocop/cop/lint/send_with_mixin_argument'
306
321
  require_relative 'rubocop/cop/lint/shadowed_argument'
307
322
  require_relative 'rubocop/cop/lint/shadowed_exception'
@@ -310,17 +325,20 @@ require_relative 'rubocop/cop/lint/struct_new_override'
310
325
  require_relative 'rubocop/cop/lint/suppressed_exception'
311
326
  require_relative 'rubocop/cop/lint/syntax'
312
327
  require_relative 'rubocop/cop/lint/to_json'
328
+ require_relative 'rubocop/cop/lint/top_level_return_with_argument'
329
+ require_relative 'rubocop/cop/lint/trailing_comma_in_attribute_declaration'
313
330
  require_relative 'rubocop/cop/lint/underscore_prefixed_variable_name'
314
331
  require_relative 'rubocop/cop/lint/unified_integer'
315
332
  require_relative 'rubocop/cop/lint/unreachable_code'
333
+ require_relative 'rubocop/cop/lint/unreachable_loop'
316
334
  require_relative 'rubocop/cop/lint/unused_block_argument'
317
335
  require_relative 'rubocop/cop/lint/unused_method_argument'
318
336
  require_relative 'rubocop/cop/lint/uri_escape_unescape'
319
337
  require_relative 'rubocop/cop/lint/uri_regexp'
320
338
  require_relative 'rubocop/cop/lint/useless_access_modifier'
321
339
  require_relative 'rubocop/cop/lint/useless_assignment'
322
- require_relative 'rubocop/cop/lint/useless_comparison'
323
340
  require_relative 'rubocop/cop/lint/useless_else_without_rescue'
341
+ require_relative 'rubocop/cop/lint/useless_method_definition'
324
342
  require_relative 'rubocop/cop/lint/useless_setter_call'
325
343
  require_relative 'rubocop/cop/lint/void'
326
344
 
@@ -359,6 +377,7 @@ require_relative 'rubocop/cop/style/access_modifier_declarations'
359
377
  require_relative 'rubocop/cop/style/accessor_grouping'
360
378
  require_relative 'rubocop/cop/style/alias'
361
379
  require_relative 'rubocop/cop/style/and_or'
380
+ require_relative 'rubocop/cop/style/array_coercion'
362
381
  require_relative 'rubocop/cop/style/array_join'
363
382
  require_relative 'rubocop/cop/style/ascii_comments'
364
383
  require_relative 'rubocop/cop/style/attr'
@@ -369,14 +388,17 @@ require_relative 'rubocop/cop/style/bisected_attr_accessor'
369
388
  require_relative 'rubocop/cop/style/block_comments'
370
389
  require_relative 'rubocop/cop/style/block_delimiters'
371
390
  require_relative 'rubocop/cop/style/case_equality'
391
+ require_relative 'rubocop/cop/style/case_like_if'
372
392
  require_relative 'rubocop/cop/style/character_literal'
373
393
  require_relative 'rubocop/cop/style/class_and_module_children'
374
394
  require_relative 'rubocop/cop/style/class_check'
375
395
  require_relative 'rubocop/cop/style/class_methods'
396
+ require_relative 'rubocop/cop/style/class_methods_definitions'
376
397
  require_relative 'rubocop/cop/style/class_vars'
377
398
  require_relative 'rubocop/cop/style/collection_methods'
378
399
  require_relative 'rubocop/cop/style/colon_method_call'
379
400
  require_relative 'rubocop/cop/style/colon_method_definition'
401
+ require_relative 'rubocop/cop/style/combinable_loops'
380
402
  require_relative 'rubocop/cop/style/command_literal'
381
403
  require_relative 'rubocop/cop/style/comment_annotation'
382
404
  require_relative 'rubocop/cop/style/commented_keyword'
@@ -404,15 +426,19 @@ require_relative 'rubocop/cop/style/end_block'
404
426
  require_relative 'rubocop/cop/style/eval_with_location'
405
427
  require_relative 'rubocop/cop/style/even_odd'
406
428
  require_relative 'rubocop/cop/style/expand_path_arguments'
429
+ require_relative 'rubocop/cop/style/explicit_block_argument'
407
430
  require_relative 'rubocop/cop/style/exponential_notation'
408
431
  require_relative 'rubocop/cop/style/float_division'
409
432
  require_relative 'rubocop/cop/style/for'
410
433
  require_relative 'rubocop/cop/style/format_string'
411
434
  require_relative 'rubocop/cop/style/format_string_token'
412
435
  require_relative 'rubocop/cop/style/frozen_string_literal_comment'
436
+ require_relative 'rubocop/cop/style/global_std_stream'
413
437
  require_relative 'rubocop/cop/style/global_vars'
414
438
  require_relative 'rubocop/cop/style/guard_clause'
439
+ require_relative 'rubocop/cop/style/hash_as_last_array_item'
415
440
  require_relative 'rubocop/cop/style/hash_each_methods'
441
+ require_relative 'rubocop/cop/style/hash_like_case'
416
442
  require_relative 'rubocop/cop/style/hash_syntax'
417
443
  require_relative 'rubocop/cop/style/hash_transform_keys'
418
444
  require_relative 'rubocop/cop/style/hash_transform_values'
@@ -426,6 +452,7 @@ require_relative 'rubocop/cop/style/infinite_loop'
426
452
  require_relative 'rubocop/cop/style/inverse_methods'
427
453
  require_relative 'rubocop/cop/style/inline_comment'
428
454
  require_relative 'rubocop/cop/style/ip_addresses'
455
+ require_relative 'rubocop/cop/style/keyword_parameters_order'
429
456
  require_relative 'rubocop/cop/style/lambda'
430
457
  require_relative 'rubocop/cop/style/lambda_call'
431
458
  require_relative 'rubocop/cop/style/line_end_concatenation'
@@ -433,11 +460,13 @@ require_relative 'rubocop/cop/style/method_call_without_args_parentheses'
433
460
  require_relative 'rubocop/cop/style/method_call_with_args_parentheses'
434
461
  require_relative 'rubocop/cop/style/redundant_assignment'
435
462
  require_relative 'rubocop/cop/style/redundant_fetch_block'
463
+ require_relative 'rubocop/cop/style/redundant_file_extension_in_require'
464
+ require_relative 'rubocop/cop/style/redundant_self_assignment'
465
+ require_relative 'rubocop/cop/style/sole_nested_conditional'
436
466
  require_relative 'rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses'
437
467
  require_relative 'rubocop/cop/style/method_call_with_args_parentheses/require_parentheses'
438
468
  require_relative 'rubocop/cop/style/method_called_on_do_end_block'
439
469
  require_relative 'rubocop/cop/style/method_def_parentheses'
440
- require_relative 'rubocop/cop/style/method_missing_super'
441
470
  require_relative 'rubocop/cop/style/min_max'
442
471
  require_relative 'rubocop/cop/style/missing_else'
443
472
  require_relative 'rubocop/cop/style/missing_respond_to_missing'
@@ -470,6 +499,7 @@ require_relative 'rubocop/cop/style/one_line_conditional'
470
499
  require_relative 'rubocop/cop/style/or_assignment'
471
500
  require_relative 'rubocop/cop/style/option_hash'
472
501
  require_relative 'rubocop/cop/style/optional_arguments'
502
+ require_relative 'rubocop/cop/style/optional_boolean_parameter'
473
503
  require_relative 'rubocop/cop/style/parallel_assignment'
474
504
  require_relative 'rubocop/cop/style/parentheses_around_condition'
475
505
  require_relative 'rubocop/cop/style/percent_literal_delimiters'
@@ -504,12 +534,14 @@ require_relative 'rubocop/cop/style/self_assignment'
504
534
  require_relative 'rubocop/cop/style/semicolon'
505
535
  require_relative 'rubocop/cop/style/send'
506
536
  require_relative 'rubocop/cop/style/signal_exception'
537
+ require_relative 'rubocop/cop/style/single_argument_dig'
507
538
  require_relative 'rubocop/cop/style/single_line_block_params'
508
539
  require_relative 'rubocop/cop/style/single_line_methods'
509
540
  require_relative 'rubocop/cop/style/slicing_with_range'
510
541
  require_relative 'rubocop/cop/style/special_global_vars'
511
542
  require_relative 'rubocop/cop/style/stabby_lambda_parentheses'
512
543
  require_relative 'rubocop/cop/style/stderr_puts'
544
+ require_relative 'rubocop/cop/style/string_concatenation'
513
545
  require_relative 'rubocop/cop/style/string_hash_keys'
514
546
  require_relative 'rubocop/cop/style/string_literals'
515
547
  require_relative 'rubocop/cop/style/string_literals_in_interpolation'
@@ -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,6 +4,7 @@ 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
 
@@ -55,7 +56,7 @@ module RuboCop
55
56
  #{Gem.loaded_specs['rubocop'].metadata['bug_tracker_uri']}
56
57
 
57
58
  Mention the following information in the issue report:
58
- #{RuboCop::Version.version(true)}
59
+ #{RuboCop::Version.version(debug: true)}
59
60
  WARNING
60
61
  end
61
62
 
@@ -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)
@@ -24,7 +24,7 @@ module RuboCop
24
24
  def initialize(hash = {}, loaded_path = nil)
25
25
  @loaded_path = loaded_path
26
26
  @for_cop = Hash.new do |h, cop|
27
- qualified_cop_name = Cop::Cop.qualified_cop_name(cop, loaded_path)
27
+ qualified_cop_name = Cop::Registry.qualified_cop_name(cop, loaded_path)
28
28
  cop_options = self[qualified_cop_name] || {}
29
29
  cop_options['Enabled'] = enable_cop?(qualified_cop_name, cop_options)
30
30
  h[cop] = cop_options
@@ -47,7 +47,7 @@ module RuboCop
47
47
  end
48
48
 
49
49
  def_delegators :@hash, :[], :[]=, :delete, :each, :key?, :keys, :each_key,
50
- :map, :merge, :to_h, :to_hash, :transform_values
50
+ :fetch, :map, :merge, :to_h, :to_hash, :transform_values
51
51
  def_delegators :@validator, :validate, :target_ruby_version
52
52
 
53
53
  def to_s
@@ -104,12 +104,29 @@ module RuboCop
104
104
  end
105
105
  end
106
106
 
107
+ # @return [Config] for the given cop / cop name.
108
+ # Note: the 'Enabled' attribute is calculated according to the department's
109
+ # and 'AllCops' configuration; other attributes are not inherited.
107
110
  def for_cop(cop)
108
111
  @for_cop[cop.respond_to?(:cop_name) ? cop.cop_name : cop]
109
112
  end
110
113
 
114
+ # @return [Config] for the given cop merged with that of its department (if any)
115
+ # Note: the 'Enabled' attribute is same as that returned by `for_cop`
116
+ def for_badge(badge)
117
+ cop_config = for_cop(badge.to_s)
118
+ fetch(badge.department.to_s) { return cop_config }
119
+ .merge(cop_config)
120
+ end
121
+
122
+ # @return [Config] for the given department name.
123
+ # Note: the 'Enabled' attribute will be present only if specified
124
+ # at the department's level
111
125
  def for_department(department_name)
112
- @for_cop[department_name]
126
+ @for_department ||= Hash.new do |h, dept|
127
+ h[dept] = self[dept] || {}
128
+ end
129
+ @for_department[department_name.to_s]
113
130
  end
114
131
 
115
132
  def for_all_cops