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
@@ -17,7 +17,10 @@ module CopHelper
17
17
  RuboCop::Formatter::DisabledConfigFormatter.config_to_allow_offenses = {}
18
18
  RuboCop::Formatter::DisabledConfigFormatter.detected_styles = {}
19
19
  processed_source = parse_source(source, file)
20
- raise 'Error parsing example code' unless processed_source.valid_syntax?
20
+ unless processed_source.valid_syntax?
21
+ raise 'Error parsing example code: ' \
22
+ "#{processed_source.diagnostics.map(&:render).join("\n")}"
23
+ end
21
24
 
22
25
  _investigate(cop, processed_source)
23
26
  end
@@ -73,25 +73,37 @@ module RuboCop
73
73
  # expect_no_corrections
74
74
  #
75
75
  # If your code has variables of different lengths, you can use `%{foo}`,
76
- # `^{foo}`, and `_{foo}` to format your template:
76
+ # `^{foo}`, and `_{foo}` to format your template; you can also abbreviate
77
+ # offense messages with `[...]`:
77
78
  #
78
79
  # %w[raise fail].each do |keyword|
79
80
  # expect_offense(<<~RUBY, keyword: keyword)
80
81
  # %{keyword}(RuntimeError, msg)
81
- # ^{keyword}^^^^^^^^^^^^^^^^^^^ Redundant `RuntimeError` argument can be removed.
82
+ # ^{keyword}^^^^^^^^^^^^^^^^^^^ Redundant `RuntimeError` argument [...]
82
83
  # RUBY
83
84
  #
84
85
  # %w[has_one has_many].each do |type|
85
86
  # expect_offense(<<~RUBY, type: type)
86
87
  # class Book
87
88
  # %{type} :chapter, foreign_key: 'book_id'
88
- # _{type} ^^^^^^^^^^^^^^^^^^^^^^ Specifying the default value is redundant.
89
+ # _{type} ^^^^^^^^^^^^^^^^^^^^^^ Specifying the default [...]
89
90
  # end
90
91
  # RUBY
91
92
  # end
93
+ #
94
+ # If you need to specify an offense on a blank line, use the empty `^{}` marker:
95
+ #
96
+ # @example `^{}` empty line offense
97
+ #
98
+ # expect_offense(<<~RUBY)
99
+ #
100
+ # ^{} Missing frozen string literal comment.
101
+ # puts 1
102
+ # RUBY
92
103
  module ExpectOffense
93
104
  def format_offense(source, **replacements)
94
105
  replacements.each do |keyword, value|
106
+ value = value.to_s
95
107
  source = source.gsub("%{#{keyword}}", value)
96
108
  .gsub("^{#{keyword}}", '^' * value.size)
97
109
  .gsub("_{#{keyword}}", ' ' * value.size)
@@ -116,14 +128,19 @@ module RuboCop
116
128
  @processed_source = parse_source(expected_annotations.plain_source,
117
129
  file)
118
130
 
119
- raise 'Error parsing example code' unless @processed_source.valid_syntax?
131
+ unless @processed_source.valid_syntax?
132
+ raise 'Error parsing example code: ' \
133
+ "#{@processed_source.diagnostics.map(&:render).join("\n")}"
134
+ end
120
135
 
121
136
  offenses = _investigate(cop, @processed_source)
122
137
  actual_annotations =
123
138
  expected_annotations.with_offense_annotations(offenses)
124
139
 
125
- expect(actual_annotations.to_s).to eq(expected_annotations.to_s)
140
+ expect(actual_annotations).to eq(expected_annotations), ''
126
141
  expect(offenses.map(&:severity).uniq).to eq([severity]) if severity
142
+
143
+ offenses
127
144
  end
128
145
 
129
146
  def expect_correction(correction, loop: true)
@@ -177,7 +194,8 @@ module RuboCop
177
194
 
178
195
  # Parsed representation of code annotated with the `^^^ Message` style
179
196
  class AnnotatedSource
180
- ANNOTATION_PATTERN = /\A\s*\^+ /.freeze
197
+ ANNOTATION_PATTERN = /\A\s*(\^+|\^{}) /.freeze
198
+ ABBREV = "[...]\n"
181
199
 
182
200
  # @param annotated_source [String] string passed to the matchers
183
201
  #
@@ -196,6 +214,7 @@ module RuboCop
196
214
  source << source_line
197
215
  end
198
216
  end
217
+ annotations.each { |a| a[0] = 1 } if source.empty?
199
218
 
200
219
  new(source, annotations)
201
220
  end
@@ -211,6 +230,27 @@ module RuboCop
211
230
  @annotations = annotations.sort.freeze
212
231
  end
213
232
 
233
+ def ==(other)
234
+ other.is_a?(self.class) &&
235
+ other.lines == lines &&
236
+ match_annotations?(other)
237
+ end
238
+
239
+ # Dirty hack: expectations with [...] are rewritten when they match
240
+ # This way the diff is clean.
241
+ def match_annotations?(other)
242
+ annotations.zip(other.annotations) do |(_actual_line, actual_annotation),
243
+ (_expected_line, expected_annotation)|
244
+ if expected_annotation&.end_with?(ABBREV) &&
245
+ actual_annotation.start_with?(expected_annotation[0...-ABBREV.length])
246
+
247
+ expected_annotation.replace(actual_annotation)
248
+ end
249
+ end
250
+
251
+ annotations == other.annotations
252
+ end
253
+
214
254
  # Construct annotated source string (like what we parse)
215
255
  #
216
256
  # Reconstruct a deterministic annotated source string. This is
@@ -243,6 +283,7 @@ module RuboCop
243
283
 
244
284
  reconstructed.join
245
285
  end
286
+ alias inspect to_s
246
287
 
247
288
  # Return the plain source code without annotations
248
289
  #
@@ -261,6 +302,7 @@ module RuboCop
261
302
  offenses.map do |offense|
262
303
  indent = ' ' * offense.column
263
304
  carets = '^' * offense.column_length
305
+ carets = '^{}' if offense.column_length.zero?
264
306
 
265
307
  [offense.line, "#{indent}#{carets} #{offense.message}\n"]
266
308
  end
@@ -268,7 +310,7 @@ module RuboCop
268
310
  self.class.new(lines, offense_annotations)
269
311
  end
270
312
 
271
- private
313
+ protected
272
314
 
273
315
  attr_reader :lines, :annotations
274
316
  end
@@ -12,19 +12,22 @@ RSpec.shared_context 'isolated environment', :isolated_environment do
12
12
  # get mismatched pathnames when loading config files later on.
13
13
  tmpdir = File.realpath(tmpdir)
14
14
 
15
+ virtual_home = File.expand_path(File.join(tmpdir, 'home'))
16
+ Dir.mkdir(virtual_home)
17
+ ENV['HOME'] = virtual_home
18
+ ENV.delete('XDG_CONFIG_HOME')
19
+
20
+ base_dir = example.metadata[:project_inside_home] ? virtual_home : tmpdir
21
+ root = example.metadata[:root]
22
+ working_dir = root ? File.join(base_dir, 'work', root) : File.join(base_dir, 'work')
23
+
15
24
  # Make upwards search for .rubocop.yml files stop at this directory.
16
- RuboCop::FileFinder.root_level = tmpdir
25
+ RuboCop::FileFinder.root_level = working_dir
17
26
 
18
27
  begin
19
- virtual_home = File.expand_path(File.join(tmpdir, 'home'))
20
- Dir.mkdir(virtual_home)
21
- ENV['HOME'] = virtual_home
22
- ENV.delete('XDG_CONFIG_HOME')
23
-
24
- working_dir = File.join(tmpdir, 'work')
25
- Dir.mkdir(working_dir)
28
+ FileUtils.mkdir_p(working_dir)
26
29
 
27
- RuboCop::PathUtil.chdir(working_dir) do
30
+ Dir.chdir(working_dir) do
28
31
  example.run
29
32
  end
30
33
  ensure
@@ -37,12 +40,22 @@ RSpec.shared_context 'isolated environment', :isolated_environment do
37
40
  end
38
41
  end
39
42
 
43
+ RSpec.shared_context 'maintain registry', :restore_registry do
44
+ around(:each) do |example|
45
+ RuboCop::Cop::Registry.with_temporary_global { example.run }
46
+ end
47
+
48
+ def stub_cop_class(name, inherit: RuboCop::Cop::Base, &block)
49
+ klass = Class.new(inherit, &block)
50
+ stub_const(name, klass)
51
+ klass
52
+ end
53
+ end
54
+
40
55
  # This context assumes nothing and defines `cop`, among others.
41
56
  RSpec.shared_context 'config', :config do # rubocop:disable Metrics/BlockLength
42
57
  ### Meant to be overridden at will
43
58
 
44
- let(:source) { 'code = {some: :ruby}' }
45
-
46
59
  let(:cop_class) do
47
60
  unless described_class.is_a?(Class) && described_class < RuboCop::Cop::Base
48
61
  raise 'Specify which cop class to use (e.g `let(:cop_class) { RuboCop::Cop::Base }`, ' \
@@ -94,9 +107,7 @@ RSpec.shared_context 'config', :config do # rubocop:disable Metrics/BlockLength
94
107
  end
95
108
 
96
109
  let(:cop) do
97
- cop_class.new(config, cop_options).tap do |cop|
98
- cop.send :begin_investigation, processed_source
99
- end
110
+ cop_class.new(config, cop_options)
100
111
  end
101
112
  end
102
113
 
@@ -17,6 +17,7 @@ module RuboCop
17
17
  end
18
18
  end
19
19
 
20
+ # @api private
20
21
  MAX_ITERATIONS = 200
21
22
 
22
23
  attr_reader :errors, :warnings
@@ -118,8 +119,7 @@ module RuboCop
118
119
 
119
120
  def file_offenses(file)
120
121
  file_offense_cache(file) do
121
- source = get_processed_source(file)
122
- source, offenses = do_inspection_loop(file, source)
122
+ source, offenses = do_inspection_loop(file)
123
123
  offenses = add_redundant_disables(file, offenses.compact.sort, source)
124
124
  offenses.sort.reject(&:disabled?).freeze
125
125
  end
@@ -159,8 +159,7 @@ module RuboCop
159
159
  # Do one extra inspection loop if any redundant disables were
160
160
  # removed. This is done in order to find rubocop:enable directives that
161
161
  # have now become useless.
162
- _source, new_offenses = do_inspection_loop(file,
163
- get_processed_source(file))
162
+ _source, new_offenses = do_inspection_loop(file)
164
163
  offenses |= new_offenses
165
164
  end
166
165
  end
@@ -213,7 +212,7 @@ module RuboCop
213
212
  @cached_run ||=
214
213
  (@options[:cache] == 'true' ||
215
214
  @options[:cache] != 'false' &&
216
- @config_store.for_dir(Dir.pwd).for_all_cops['UseCache']) &&
215
+ @config_store.for_pwd.for_all_cops['UseCache']) &&
217
216
  # When running --auto-gen-config, there's some processing done in the
218
217
  # cops related to calculating the Max parameters for Metrics cops. We
219
218
  # need to do that processing and cannot use caching.
@@ -232,7 +231,8 @@ module RuboCop
232
231
  cache.save(offenses)
233
232
  end
234
233
 
235
- def do_inspection_loop(file, processed_source)
234
+ def do_inspection_loop(file)
235
+ processed_source = get_processed_source(file)
236
236
  offenses = []
237
237
 
238
238
  # When running with --auto-correct, we need to inspect the file (which
@@ -307,7 +307,7 @@ module RuboCop
307
307
  def mobilized_cop_classes(config)
308
308
  @mobilized_cop_classes ||= {}
309
309
  @mobilized_cop_classes[config.object_id] ||= begin
310
- cop_classes = Cop::Cop.all
310
+ cop_classes = Cop::Registry.all
311
311
 
312
312
  OptionsValidator.new(@options).validate_cop_options
313
313
 
@@ -17,6 +17,9 @@ module RuboCop
17
17
  u\{[^}]*\} | # extended unicode escape
18
18
  . # any other escaped char
19
19
  )/x.freeze
20
+
21
+ private_constant :STRING_ESCAPES, :STRING_ESCAPE_REGEX
22
+
20
23
  class << self
21
24
  def interpret(string)
22
25
  # We currently don't handle \cx, \C-x, and \M-x
@@ -1,10 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'set'
4
-
5
3
  module RuboCop
6
4
  # This class finds target files to inspect by scanning the directory tree
7
5
  # and picking ruby files.
6
+ # @api private
8
7
  class TargetFinder
9
8
  def initialize(config_store, options = {})
10
9
  @config_store = config_store
@@ -114,10 +113,12 @@ module RuboCop
114
113
  end
115
114
 
116
115
  def ruby_extensions
117
- ext_patterns = all_cops_include.select do |pattern|
118
- pattern.start_with?('**/*.')
116
+ @ruby_extensions ||= begin
117
+ ext_patterns = all_cops_include.select do |pattern|
118
+ pattern.start_with?('**/*.')
119
+ end
120
+ ext_patterns.map { |pattern| pattern.sub('**/*', '') }
119
121
  end
120
- ext_patterns.map { |pattern| pattern.sub('**/*', '') }
121
122
  end
122
123
 
123
124
  def ruby_filename?(file)
@@ -125,14 +126,17 @@ module RuboCop
125
126
  end
126
127
 
127
128
  def ruby_filenames
128
- file_patterns = all_cops_include.reject do |pattern|
129
- pattern.start_with?('**/*.')
129
+ @ruby_filenames ||= begin
130
+ file_patterns = all_cops_include.reject do |pattern|
131
+ pattern.start_with?('**/*.')
132
+ end
133
+ file_patterns.map { |pattern| pattern.sub('**/', '') }
130
134
  end
131
- file_patterns.map { |pattern| pattern.sub('**/', '') }
132
135
  end
133
136
 
134
137
  def all_cops_include
135
- @config_store.for('.').for_all_cops['Include'].map(&:to_s)
138
+ @all_cops_include ||=
139
+ @config_store.for_pwd.for_all_cops['Include'].map(&:to_s)
136
140
  end
137
141
 
138
142
  def ruby_executable?(file)
@@ -160,7 +164,7 @@ module RuboCop
160
164
  end
161
165
 
162
166
  def configured_include?(file)
163
- @config_store.for('.').file_to_include?(file)
167
+ @config_store.for_pwd.file_to_include?(file)
164
168
  end
165
169
 
166
170
  def included_file?(file)
@@ -2,6 +2,7 @@
2
2
 
3
3
  module RuboCop
4
4
  # The kind of Ruby that code inspected by RuboCop is written in.
5
+ # @api private
5
6
  class TargetRuby
6
7
  KNOWN_RUBIES = [2.4, 2.5, 2.6, 2.7, 2.8].freeze
7
8
  DEFAULT_VERSION = KNOWN_RUBIES.first
@@ -12,6 +13,7 @@ module RuboCop
12
13
  private_constant :KNOWN_RUBIES, :OBSOLETE_RUBIES
13
14
 
14
15
  # A place where information about a target ruby version is found.
16
+ # @api private
15
17
  class Source
16
18
  attr_reader :version, :name
17
19
 
@@ -26,6 +28,7 @@ module RuboCop
26
28
  end
27
29
 
28
30
  # The target ruby version may be configured in RuboCop's config.
31
+ # @api private
29
32
  class RuboCopConfig < Source
30
33
  def name
31
34
  "`TargetRubyVersion` parameter (in #{@config.smart_loaded_path})"
@@ -39,6 +42,7 @@ module RuboCop
39
42
  end
40
43
 
41
44
  # The target ruby version may be found in a .ruby-version file.
45
+ # @api private
42
46
  class RubyVersionFile < Source
43
47
  FILENAME = '.ruby-version'
44
48
 
@@ -68,6 +72,7 @@ module RuboCop
68
72
  end
69
73
 
70
74
  # The lock file of Bundler may identify the target ruby version.
75
+ # @api private
71
76
  class BundlerLockFile < Source
72
77
  def name
73
78
  "`#{bundler_lock_file_path}`"
@@ -108,6 +113,7 @@ module RuboCop
108
113
  end
109
114
 
110
115
  # If all else fails, a default version will be picked.
116
+ # @api private
111
117
  class Default < Source
112
118
  def name
113
119
  'default'
@@ -3,13 +3,14 @@
3
3
  module RuboCop
4
4
  # This module holds the RuboCop version information.
5
5
  module Version
6
- STRING = '0.87.0'
6
+ STRING = '0.90.0'
7
7
 
8
8
  MSG = '%<version>s (using Parser %<parser_version>s, '\
9
9
  'rubocop-ast %<rubocop_ast_version>s, ' \
10
10
  'running on %<ruby_engine>s %<ruby_version>s %<ruby_platform>s)'
11
11
 
12
- def self.version(debug = false)
12
+ # @api private
13
+ def self.version(debug: false)
13
14
  if debug
14
15
  format(MSG, version: STRING, parser_version: Parser::VERSION,
15
16
  rubocop_ast_version: RuboCop::AST::Version::STRING,
@@ -2,6 +2,7 @@
2
2
 
3
3
  module RuboCop
4
4
  # Find duplicated keys from YAML.
5
+ # @api private
5
6
  module YAMLDuplicationChecker
6
7
  def self.check(yaml_string, filename, &on_duplicated)
7
8
  # Ruby 2.6+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubocop
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.87.0
4
+ version: 0.90.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bozhidar Batsov
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2020-07-06 00:00:00.000000000 Z
13
+ date: 2020-09-01 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: parallel
@@ -94,7 +94,7 @@ dependencies:
94
94
  requirements:
95
95
  - - ">="
96
96
  - !ruby/object:Gem::Version
97
- version: 0.1.0
97
+ version: 0.3.0
98
98
  - - "<"
99
99
  - !ruby/object:Gem::Version
100
100
  version: '1.0'
@@ -104,7 +104,7 @@ dependencies:
104
104
  requirements:
105
105
  - - ">="
106
106
  - !ruby/object:Gem::Version
107
- version: 0.1.0
107
+ version: 0.3.0
108
108
  - - "<"
109
109
  - !ruby/object:Gem::Version
110
110
  version: '1.0'
@@ -178,6 +178,7 @@ files:
178
178
  - assets/logo.png
179
179
  - assets/output.html.erb
180
180
  - bin/console
181
+ - bin/rubocop-profile
181
182
  - bin/setup
182
183
  - config/default.yml
183
184
  - exe/rubocop
@@ -225,6 +226,7 @@ files:
225
226
  - lib/rubocop/cop/correctors/space_corrector.rb
226
227
  - lib/rubocop/cop/correctors/string_literal_corrector.rb
227
228
  - lib/rubocop/cop/correctors/unused_arg_corrector.rb
229
+ - lib/rubocop/cop/documentation.rb
228
230
  - lib/rubocop/cop/force.rb
229
231
  - lib/rubocop/cop/gemspec/duplicated_assignment.rb
230
232
  - lib/rubocop/cop/gemspec/ordered_dependencies.rb
@@ -260,6 +262,7 @@ files:
260
262
  - lib/rubocop/cop/layout/empty_comment.rb
261
263
  - lib/rubocop/cop/layout/empty_line_after_guard_clause.rb
262
264
  - lib/rubocop/cop/layout/empty_line_after_magic_comment.rb
265
+ - lib/rubocop/cop/layout/empty_line_after_multiline_condition.rb
263
266
  - lib/rubocop/cop/layout/empty_line_between_defs.rb
264
267
  - lib/rubocop/cop/layout/empty_lines.rb
265
268
  - lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb
@@ -339,6 +342,7 @@ files:
339
342
  - lib/rubocop/cop/lint/ambiguous_regexp_literal.rb
340
343
  - lib/rubocop/cop/lint/assignment_in_condition.rb
341
344
  - lib/rubocop/cop/lint/big_decimal_new.rb
345
+ - lib/rubocop/cop/lint/binary_operator_with_identical_operands.rb
342
346
  - lib/rubocop/cop/lint/boolean_symbol.rb
343
347
  - lib/rubocop/cop/lint/circular_argument_reference.rb
344
348
  - lib/rubocop/cop/lint/constant_resolution.rb
@@ -347,17 +351,23 @@ files:
347
351
  - lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb
348
352
  - lib/rubocop/cop/lint/disjunctive_assignment_in_constructor.rb
349
353
  - lib/rubocop/cop/lint/duplicate_case_condition.rb
354
+ - lib/rubocop/cop/lint/duplicate_elsif_condition.rb
350
355
  - lib/rubocop/cop/lint/duplicate_hash_key.rb
351
356
  - lib/rubocop/cop/lint/duplicate_methods.rb
357
+ - lib/rubocop/cop/lint/duplicate_require.rb
358
+ - lib/rubocop/cop/lint/duplicate_rescue_exception.rb
352
359
  - lib/rubocop/cop/lint/each_with_object_argument.rb
353
360
  - lib/rubocop/cop/lint/else_layout.rb
361
+ - lib/rubocop/cop/lint/empty_conditional_body.rb
354
362
  - lib/rubocop/cop/lint/empty_ensure.rb
355
363
  - lib/rubocop/cop/lint/empty_expression.rb
364
+ - lib/rubocop/cop/lint/empty_file.rb
356
365
  - lib/rubocop/cop/lint/empty_interpolation.rb
357
366
  - lib/rubocop/cop/lint/empty_when.rb
358
367
  - lib/rubocop/cop/lint/ensure_return.rb
359
368
  - lib/rubocop/cop/lint/erb_new_arguments.rb
360
369
  - lib/rubocop/cop/lint/flip_flop.rb
370
+ - lib/rubocop/cop/lint/float_comparison.rb
361
371
  - lib/rubocop/cop/lint/float_out_of_range.rb
362
372
  - lib/rubocop/cop/lint/format_parameter_mismatch.rb
363
373
  - lib/rubocop/cop/lint/heredoc_method_call_position.rb
@@ -369,6 +379,7 @@ files:
369
379
  - lib/rubocop/cop/lint/literal_in_interpolation.rb
370
380
  - lib/rubocop/cop/lint/loop.rb
371
381
  - lib/rubocop/cop/lint/missing_cop_enable_directive.rb
382
+ - lib/rubocop/cop/lint/missing_super.rb
372
383
  - lib/rubocop/cop/lint/mixed_regexp_capture_types.rb
373
384
  - lib/rubocop/cop/lint/multiple_comparison.rb
374
385
  - lib/rubocop/cop/lint/nested_method_definition.rb
@@ -378,6 +389,7 @@ files:
378
389
  - lib/rubocop/cop/lint/non_local_exit_from_iterator.rb
379
390
  - lib/rubocop/cop/lint/number_conversion.rb
380
391
  - lib/rubocop/cop/lint/ordered_magic_comments.rb
392
+ - lib/rubocop/cop/lint/out_of_range_regexp_ref.rb
381
393
  - lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb
382
394
  - lib/rubocop/cop/lint/percent_string_array.rb
383
395
  - lib/rubocop/cop/lint/percent_symbol_array.rb
@@ -399,6 +411,7 @@ files:
399
411
  - lib/rubocop/cop/lint/safe_navigation_consistency.rb
400
412
  - lib/rubocop/cop/lint/safe_navigation_with_empty.rb
401
413
  - lib/rubocop/cop/lint/script_permission.rb
414
+ - lib/rubocop/cop/lint/self_assignment.rb
402
415
  - lib/rubocop/cop/lint/send_with_mixin_argument.rb
403
416
  - lib/rubocop/cop/lint/shadowed_argument.rb
404
417
  - lib/rubocop/cop/lint/shadowed_exception.rb
@@ -407,17 +420,20 @@ files:
407
420
  - lib/rubocop/cop/lint/suppressed_exception.rb
408
421
  - lib/rubocop/cop/lint/syntax.rb
409
422
  - lib/rubocop/cop/lint/to_json.rb
423
+ - lib/rubocop/cop/lint/top_level_return_with_argument.rb
424
+ - lib/rubocop/cop/lint/trailing_comma_in_attribute_declaration.rb
410
425
  - lib/rubocop/cop/lint/underscore_prefixed_variable_name.rb
411
426
  - lib/rubocop/cop/lint/unified_integer.rb
412
427
  - lib/rubocop/cop/lint/unreachable_code.rb
428
+ - lib/rubocop/cop/lint/unreachable_loop.rb
413
429
  - lib/rubocop/cop/lint/unused_block_argument.rb
414
430
  - lib/rubocop/cop/lint/unused_method_argument.rb
415
431
  - lib/rubocop/cop/lint/uri_escape_unescape.rb
416
432
  - lib/rubocop/cop/lint/uri_regexp.rb
417
433
  - lib/rubocop/cop/lint/useless_access_modifier.rb
418
434
  - lib/rubocop/cop/lint/useless_assignment.rb
419
- - lib/rubocop/cop/lint/useless_comparison.rb
420
435
  - lib/rubocop/cop/lint/useless_else_without_rescue.rb
436
+ - lib/rubocop/cop/lint/useless_method_definition.rb
421
437
  - lib/rubocop/cop/lint/useless_setter_call.rb
422
438
  - lib/rubocop/cop/lint/void.rb
423
439
  - lib/rubocop/cop/message_annotator.rb
@@ -433,6 +449,7 @@ files:
433
449
  - lib/rubocop/cop/metrics/utils/abc_size_calculator.rb
434
450
  - lib/rubocop/cop/metrics/utils/code_length_calculator.rb
435
451
  - lib/rubocop/cop/metrics/utils/iterating_block.rb
452
+ - lib/rubocop/cop/metrics/utils/repeated_csend_discount.rb
436
453
  - lib/rubocop/cop/migration/department_name.rb
437
454
  - lib/rubocop/cop/mixin/alignment.rb
438
455
  - lib/rubocop/cop/mixin/allowed_methods.rb
@@ -443,6 +460,7 @@ files:
443
460
  - lib/rubocop/cop/mixin/check_assignment.rb
444
461
  - lib/rubocop/cop/mixin/check_line_breakable.rb
445
462
  - lib/rubocop/cop/mixin/code_length.rb
463
+ - lib/rubocop/cop/mixin/comments_help.rb
446
464
  - lib/rubocop/cop/mixin/configurable_enforced_style.rb
447
465
  - lib/rubocop/cop/mixin/configurable_formatting.rb
448
466
  - lib/rubocop/cop/mixin/configurable_max.rb
@@ -478,7 +496,6 @@ files:
478
496
  - lib/rubocop/cop/mixin/on_normal_if_unless.rb
479
497
  - lib/rubocop/cop/mixin/ordered_gem_node.rb
480
498
  - lib/rubocop/cop/mixin/parentheses.rb
481
- - lib/rubocop/cop/mixin/parser_diagnostic.rb
482
499
  - lib/rubocop/cop/mixin/percent_array.rb
483
500
  - lib/rubocop/cop/mixin/percent_literal.rb
484
501
  - lib/rubocop/cop/mixin/preceding_following_alignment.rb
@@ -495,11 +512,11 @@ files:
495
512
  - lib/rubocop/cop/mixin/string_literals_help.rb
496
513
  - lib/rubocop/cop/mixin/surrounding_space.rb
497
514
  - lib/rubocop/cop/mixin/target_ruby_version.rb
498
- - lib/rubocop/cop/mixin/too_many_lines.rb
499
515
  - lib/rubocop/cop/mixin/trailing_body.rb
500
516
  - lib/rubocop/cop/mixin/trailing_comma.rb
501
517
  - lib/rubocop/cop/mixin/uncommunicative_name.rb
502
518
  - lib/rubocop/cop/mixin/unused_argument.rb
519
+ - lib/rubocop/cop/mixin/visibility_help.rb
503
520
  - lib/rubocop/cop/naming/accessor_method_name.rb
504
521
  - lib/rubocop/cop/naming/ascii_identifiers.rb
505
522
  - lib/rubocop/cop/naming/binary_operator_parameter_name.rb
@@ -528,6 +545,7 @@ files:
528
545
  - lib/rubocop/cop/style/accessor_grouping.rb
529
546
  - lib/rubocop/cop/style/alias.rb
530
547
  - lib/rubocop/cop/style/and_or.rb
548
+ - lib/rubocop/cop/style/array_coercion.rb
531
549
  - lib/rubocop/cop/style/array_join.rb
532
550
  - lib/rubocop/cop/style/ascii_comments.rb
533
551
  - lib/rubocop/cop/style/attr.rb
@@ -538,14 +556,17 @@ files:
538
556
  - lib/rubocop/cop/style/block_comments.rb
539
557
  - lib/rubocop/cop/style/block_delimiters.rb
540
558
  - lib/rubocop/cop/style/case_equality.rb
559
+ - lib/rubocop/cop/style/case_like_if.rb
541
560
  - lib/rubocop/cop/style/character_literal.rb
542
561
  - lib/rubocop/cop/style/class_and_module_children.rb
543
562
  - lib/rubocop/cop/style/class_check.rb
544
563
  - lib/rubocop/cop/style/class_methods.rb
564
+ - lib/rubocop/cop/style/class_methods_definitions.rb
545
565
  - lib/rubocop/cop/style/class_vars.rb
546
566
  - lib/rubocop/cop/style/collection_methods.rb
547
567
  - lib/rubocop/cop/style/colon_method_call.rb
548
568
  - lib/rubocop/cop/style/colon_method_definition.rb
569
+ - lib/rubocop/cop/style/combinable_loops.rb
549
570
  - lib/rubocop/cop/style/command_literal.rb
550
571
  - lib/rubocop/cop/style/comment_annotation.rb
551
572
  - lib/rubocop/cop/style/commented_keyword.rb
@@ -573,15 +594,19 @@ files:
573
594
  - lib/rubocop/cop/style/eval_with_location.rb
574
595
  - lib/rubocop/cop/style/even_odd.rb
575
596
  - lib/rubocop/cop/style/expand_path_arguments.rb
597
+ - lib/rubocop/cop/style/explicit_block_argument.rb
576
598
  - lib/rubocop/cop/style/exponential_notation.rb
577
599
  - lib/rubocop/cop/style/float_division.rb
578
600
  - lib/rubocop/cop/style/for.rb
579
601
  - lib/rubocop/cop/style/format_string.rb
580
602
  - lib/rubocop/cop/style/format_string_token.rb
581
603
  - lib/rubocop/cop/style/frozen_string_literal_comment.rb
604
+ - lib/rubocop/cop/style/global_std_stream.rb
582
605
  - lib/rubocop/cop/style/global_vars.rb
583
606
  - lib/rubocop/cop/style/guard_clause.rb
607
+ - lib/rubocop/cop/style/hash_as_last_array_item.rb
584
608
  - lib/rubocop/cop/style/hash_each_methods.rb
609
+ - lib/rubocop/cop/style/hash_like_case.rb
585
610
  - lib/rubocop/cop/style/hash_syntax.rb
586
611
  - lib/rubocop/cop/style/hash_transform_keys.rb
587
612
  - lib/rubocop/cop/style/hash_transform_values.rb
@@ -595,6 +620,7 @@ files:
595
620
  - lib/rubocop/cop/style/inline_comment.rb
596
621
  - lib/rubocop/cop/style/inverse_methods.rb
597
622
  - lib/rubocop/cop/style/ip_addresses.rb
623
+ - lib/rubocop/cop/style/keyword_parameters_order.rb
598
624
  - lib/rubocop/cop/style/lambda.rb
599
625
  - lib/rubocop/cop/style/lambda_call.rb
600
626
  - lib/rubocop/cop/style/line_end_concatenation.rb
@@ -604,7 +630,6 @@ files:
604
630
  - lib/rubocop/cop/style/method_call_without_args_parentheses.rb
605
631
  - lib/rubocop/cop/style/method_called_on_do_end_block.rb
606
632
  - lib/rubocop/cop/style/method_def_parentheses.rb
607
- - lib/rubocop/cop/style/method_missing_super.rb
608
633
  - lib/rubocop/cop/style/min_max.rb
609
634
  - lib/rubocop/cop/style/missing_else.rb
610
635
  - lib/rubocop/cop/style/missing_respond_to_missing.rb
@@ -636,6 +661,7 @@ files:
636
661
  - lib/rubocop/cop/style/one_line_conditional.rb
637
662
  - lib/rubocop/cop/style/option_hash.rb
638
663
  - lib/rubocop/cop/style/optional_arguments.rb
664
+ - lib/rubocop/cop/style/optional_boolean_parameter.rb
639
665
  - lib/rubocop/cop/style/or_assignment.rb
640
666
  - lib/rubocop/cop/style/parallel_assignment.rb
641
667
  - lib/rubocop/cop/style/parentheses_around_condition.rb
@@ -653,6 +679,7 @@ files:
653
679
  - lib/rubocop/cop/style/redundant_conditional.rb
654
680
  - lib/rubocop/cop/style/redundant_exception.rb
655
681
  - lib/rubocop/cop/style/redundant_fetch_block.rb
682
+ - lib/rubocop/cop/style/redundant_file_extension_in_require.rb
656
683
  - lib/rubocop/cop/style/redundant_freeze.rb
657
684
  - lib/rubocop/cop/style/redundant_interpolation.rb
658
685
  - lib/rubocop/cop/style/redundant_parentheses.rb
@@ -661,6 +688,7 @@ files:
661
688
  - lib/rubocop/cop/style/redundant_regexp_escape.rb
662
689
  - lib/rubocop/cop/style/redundant_return.rb
663
690
  - lib/rubocop/cop/style/redundant_self.rb
691
+ - lib/rubocop/cop/style/redundant_self_assignment.rb
664
692
  - lib/rubocop/cop/style/redundant_sort.rb
665
693
  - lib/rubocop/cop/style/redundant_sort_by.rb
666
694
  - lib/rubocop/cop/style/regexp_literal.rb
@@ -673,12 +701,15 @@ files:
673
701
  - lib/rubocop/cop/style/semicolon.rb
674
702
  - lib/rubocop/cop/style/send.rb
675
703
  - lib/rubocop/cop/style/signal_exception.rb
704
+ - lib/rubocop/cop/style/single_argument_dig.rb
676
705
  - lib/rubocop/cop/style/single_line_block_params.rb
677
706
  - lib/rubocop/cop/style/single_line_methods.rb
678
707
  - lib/rubocop/cop/style/slicing_with_range.rb
708
+ - lib/rubocop/cop/style/sole_nested_conditional.rb
679
709
  - lib/rubocop/cop/style/special_global_vars.rb
680
710
  - lib/rubocop/cop/style/stabby_lambda_parentheses.rb
681
711
  - lib/rubocop/cop/style/stderr_puts.rb
712
+ - lib/rubocop/cop/style/string_concatenation.rb
682
713
  - lib/rubocop/cop/style/string_hash_keys.rb
683
714
  - lib/rubocop/cop/style/string_literals.rb
684
715
  - lib/rubocop/cop/style/string_literals_in_interpolation.rb
@@ -709,6 +740,7 @@ files:
709
740
  - lib/rubocop/cop/style/yoda_condition.rb
710
741
  - lib/rubocop/cop/style/zero_length_predicate.rb
711
742
  - lib/rubocop/cop/team.rb
743
+ - lib/rubocop/cop/tokens_util.rb
712
744
  - lib/rubocop/cop/util.rb
713
745
  - lib/rubocop/cop/utils/format_string.rb
714
746
  - lib/rubocop/cop/variable_force.rb
@@ -719,9 +751,11 @@ files:
719
751
  - lib/rubocop/cop/variable_force/scope.rb
720
752
  - lib/rubocop/cop/variable_force/variable.rb
721
753
  - lib/rubocop/cop/variable_force/variable_table.rb
754
+ - lib/rubocop/cops_documentation_generator.rb
722
755
  - lib/rubocop/core_ext/string.rb
723
756
  - lib/rubocop/error.rb
724
757
  - lib/rubocop/ext/processed_source.rb
758
+ - lib/rubocop/ext/regexp_node.rb
725
759
  - lib/rubocop/file_finder.rb
726
760
  - lib/rubocop/formatter/auto_gen_config_formatter.rb
727
761
  - lib/rubocop/formatter/base_formatter.rb