rubocop 0.68.1 → 0.69.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 (472) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -3
  3. data/config/default.yml +25 -9
  4. data/lib/rubocop.rb +1 -0
  5. data/lib/rubocop/ast/node.rb +6 -2
  6. data/lib/rubocop/ast/node/array_node.rb +2 -2
  7. data/lib/rubocop/ast/node/block_node.rb +2 -2
  8. data/lib/rubocop/ast/node/for_node.rb +1 -1
  9. data/lib/rubocop/ast/node/hash_node.rb +1 -1
  10. data/lib/rubocop/ast/node/if_node.rb +1 -1
  11. data/lib/rubocop/ast/node/keyword_splat_node.rb +1 -1
  12. data/lib/rubocop/ast/node/mixin/method_dispatch_node.rb +3 -3
  13. data/lib/rubocop/ast/node/mixin/method_identifier_predicates.rb +2 -2
  14. data/lib/rubocop/ast/node/mixin/parameterized_node.rb +1 -1
  15. data/lib/rubocop/ast/node/mixin/predicate_operator_node.rb +4 -4
  16. data/lib/rubocop/ast/node/pair_node.rb +4 -4
  17. data/lib/rubocop/ast/node/until_node.rb +1 -1
  18. data/lib/rubocop/ast/node/when_node.rb +1 -1
  19. data/lib/rubocop/ast/node/while_node.rb +1 -1
  20. data/lib/rubocop/cli.rb +6 -6
  21. data/lib/rubocop/comment_config.rb +6 -6
  22. data/lib/rubocop/config.rb +8 -6
  23. data/lib/rubocop/config_loader.rb +3 -3
  24. data/lib/rubocop/cop/badge.rb +1 -1
  25. data/lib/rubocop/cop/bundler/duplicated_gem.rb +1 -1
  26. data/lib/rubocop/cop/bundler/gem_comment.rb +1 -1
  27. data/lib/rubocop/cop/bundler/insecure_protocol_source.rb +1 -1
  28. data/lib/rubocop/cop/bundler/ordered_gems.rb +1 -1
  29. data/lib/rubocop/cop/correctors/alignment_corrector.rb +2 -2
  30. data/lib/rubocop/cop/correctors/each_to_for_corrector.rb +2 -2
  31. data/lib/rubocop/cop/correctors/for_to_each_corrector.rb +1 -1
  32. data/lib/rubocop/cop/correctors/lambda_literal_to_method_corrector.rb +5 -5
  33. data/lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb +1 -1
  34. data/lib/rubocop/cop/correctors/parentheses_corrector.rb +1 -1
  35. data/lib/rubocop/cop/gemspec/duplicated_assignment.rb +1 -1
  36. data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +0 -1
  37. data/lib/rubocop/cop/gemspec/required_ruby_version.rb +7 -7
  38. data/lib/rubocop/cop/generator.rb +6 -6
  39. data/lib/rubocop/cop/generator/configuration_injector.rb +5 -5
  40. data/lib/rubocop/cop/internal_affairs/node_destructuring.rb +1 -1
  41. data/lib/rubocop/cop/internal_affairs/node_type_predicate.rb +1 -1
  42. data/lib/rubocop/cop/internal_affairs/offense_location_keyword.rb +1 -1
  43. data/lib/rubocop/cop/internal_affairs/redundant_location_argument.rb +1 -1
  44. data/lib/rubocop/cop/internal_affairs/redundant_message_argument.rb +1 -1
  45. data/lib/rubocop/cop/internal_affairs/useless_message_assertion.rb +1 -1
  46. data/lib/rubocop/cop/layout/access_modifier_indentation.rb +2 -2
  47. data/lib/rubocop/cop/layout/align_arguments.rb +2 -2
  48. data/lib/rubocop/cop/layout/align_array.rb +1 -1
  49. data/lib/rubocop/cop/layout/align_hash.rb +3 -3
  50. data/lib/rubocop/cop/layout/align_parameters.rb +2 -2
  51. data/lib/rubocop/cop/layout/block_alignment.rb +4 -4
  52. data/lib/rubocop/cop/layout/block_end_newline.rb +0 -1
  53. data/lib/rubocop/cop/layout/case_indentation.rb +1 -1
  54. data/lib/rubocop/cop/layout/class_structure.rb +2 -2
  55. data/lib/rubocop/cop/layout/closing_heredoc_indentation.rb +4 -4
  56. data/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +3 -3
  57. data/lib/rubocop/cop/layout/comment_indentation.rb +1 -1
  58. data/lib/rubocop/cop/layout/condition_position.rb +1 -1
  59. data/lib/rubocop/cop/layout/def_end_alignment.rb +1 -1
  60. data/lib/rubocop/cop/layout/else_alignment.rb +2 -2
  61. data/lib/rubocop/cop/layout/empty_comment.rb +1 -1
  62. data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +5 -5
  63. data/lib/rubocop/cop/layout/empty_line_after_magic_comment.rb +1 -1
  64. data/lib/rubocop/cop/layout/empty_line_between_defs.rb +2 -2
  65. data/lib/rubocop/cop/layout/empty_lines.rb +1 -1
  66. data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +2 -2
  67. data/lib/rubocop/cop/layout/empty_lines_around_arguments.rb +1 -1
  68. data/lib/rubocop/cop/layout/empty_lines_around_begin_body.rb +1 -1
  69. data/lib/rubocop/cop/layout/empty_lines_around_block_body.rb +1 -1
  70. data/lib/rubocop/cop/layout/empty_lines_around_class_body.rb +1 -1
  71. data/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +1 -1
  72. data/lib/rubocop/cop/layout/empty_lines_around_method_body.rb +1 -1
  73. data/lib/rubocop/cop/layout/empty_lines_around_module_body.rb +1 -1
  74. data/lib/rubocop/cop/layout/end_of_line.rb +2 -2
  75. data/lib/rubocop/cop/layout/extra_spacing.rb +5 -5
  76. data/lib/rubocop/cop/layout/first_array_element_line_break.rb +1 -1
  77. data/lib/rubocop/cop/layout/first_hash_element_line_break.rb +1 -1
  78. data/lib/rubocop/cop/layout/first_method_argument_line_break.rb +1 -1
  79. data/lib/rubocop/cop/layout/first_method_parameter_line_break.rb +1 -1
  80. data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +3 -10
  81. data/lib/rubocop/cop/layout/indent_assignment.rb +1 -1
  82. data/lib/rubocop/cop/layout/indent_first_argument.rb +1 -1
  83. data/lib/rubocop/cop/layout/indent_first_array_element.rb +1 -1
  84. data/lib/rubocop/cop/layout/indent_first_hash_element.rb +1 -1
  85. data/lib/rubocop/cop/layout/indent_first_parameter.rb +2 -2
  86. data/lib/rubocop/cop/layout/indent_heredoc.rb +9 -47
  87. data/lib/rubocop/cop/layout/indentation_consistency.rb +1 -1
  88. data/lib/rubocop/cop/layout/indentation_width.rb +2 -2
  89. data/lib/rubocop/cop/layout/initial_indentation.rb +1 -1
  90. data/lib/rubocop/cop/layout/leading_blank_lines.rb +1 -1
  91. data/lib/rubocop/cop/layout/leading_comment_space.rb +1 -1
  92. data/lib/rubocop/cop/layout/multiline_array_brace_layout.rb +4 -4
  93. data/lib/rubocop/cop/layout/multiline_array_line_breaks.rb +1 -1
  94. data/lib/rubocop/cop/layout/multiline_assignment_layout.rb +2 -2
  95. data/lib/rubocop/cop/layout/multiline_block_layout.rb +2 -2
  96. data/lib/rubocop/cop/layout/multiline_hash_brace_layout.rb +4 -4
  97. data/lib/rubocop/cop/layout/multiline_hash_key_line_breaks.rb +1 -1
  98. data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +1 -1
  99. data/lib/rubocop/cop/layout/multiline_method_call_brace_layout.rb +4 -4
  100. data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +2 -2
  101. data/lib/rubocop/cop/layout/multiline_method_definition_brace_layout.rb +4 -4
  102. data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +2 -2
  103. data/lib/rubocop/cop/layout/space_after_colon.rb +1 -1
  104. data/lib/rubocop/cop/layout/space_after_method_name.rb +2 -2
  105. data/lib/rubocop/cop/layout/space_after_not.rb +1 -1
  106. data/lib/rubocop/cop/layout/space_around_equals_in_parameter_default.rb +1 -1
  107. data/lib/rubocop/cop/layout/space_around_keyword.rb +9 -9
  108. data/lib/rubocop/cop/layout/space_around_operators.rb +1 -1
  109. data/lib/rubocop/cop/layout/space_before_block_braces.rb +2 -2
  110. data/lib/rubocop/cop/layout/space_before_comment.rb +1 -1
  111. data/lib/rubocop/cop/layout/space_before_first_arg.rb +1 -1
  112. data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +4 -3
  113. data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +2 -2
  114. data/lib/rubocop/cop/layout/space_inside_array_percent_literal.rb +1 -1
  115. data/lib/rubocop/cop/layout/space_inside_block_braces.rb +1 -1
  116. data/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +1 -1
  117. data/lib/rubocop/cop/layout/space_inside_parens.rb +2 -2
  118. data/lib/rubocop/cop/layout/space_inside_percent_literal_delimiters.rb +1 -1
  119. data/lib/rubocop/cop/layout/space_inside_range_literal.rb +1 -1
  120. data/lib/rubocop/cop/layout/space_inside_reference_brackets.rb +2 -2
  121. data/lib/rubocop/cop/layout/space_inside_string_interpolation.rb +2 -2
  122. data/lib/rubocop/cop/layout/tab.rb +1 -1
  123. data/lib/rubocop/cop/layout/trailing_blank_lines.rb +1 -1
  124. data/lib/rubocop/cop/layout/trailing_whitespace.rb +1 -1
  125. data/lib/rubocop/cop/lint/ambiguous_block_association.rb +1 -1
  126. data/lib/rubocop/cop/lint/ambiguous_operator.rb +1 -1
  127. data/lib/rubocop/cop/lint/ambiguous_regexp_literal.rb +1 -1
  128. data/lib/rubocop/cop/lint/assignment_in_condition.rb +2 -2
  129. data/lib/rubocop/cop/lint/big_decimal_new.rb +1 -1
  130. data/lib/rubocop/cop/lint/boolean_symbol.rb +1 -1
  131. data/lib/rubocop/cop/lint/circular_argument_reference.rb +1 -1
  132. data/lib/rubocop/cop/lint/debugger.rb +1 -1
  133. data/lib/rubocop/cop/lint/deprecated_class_methods.rb +1 -1
  134. data/lib/rubocop/cop/lint/disjunctive_assignment_in_constructor.rb +1 -1
  135. data/lib/rubocop/cop/lint/duplicate_case_condition.rb +1 -1
  136. data/lib/rubocop/cop/lint/duplicate_methods.rb +1 -1
  137. data/lib/rubocop/cop/lint/duplicated_key.rb +1 -1
  138. data/lib/rubocop/cop/lint/each_with_object_argument.rb +1 -1
  139. data/lib/rubocop/cop/lint/else_layout.rb +1 -1
  140. data/lib/rubocop/cop/lint/empty_ensure.rb +1 -1
  141. data/lib/rubocop/cop/lint/empty_expression.rb +1 -1
  142. data/lib/rubocop/cop/lint/empty_interpolation.rb +1 -1
  143. data/lib/rubocop/cop/lint/empty_when.rb +1 -1
  144. data/lib/rubocop/cop/lint/end_in_method.rb +1 -1
  145. data/lib/rubocop/cop/lint/ensure_return.rb +1 -1
  146. data/lib/rubocop/cop/lint/flip_flop.rb +1 -1
  147. data/lib/rubocop/cop/lint/float_out_of_range.rb +1 -1
  148. data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +7 -8
  149. data/lib/rubocop/cop/lint/handle_exceptions.rb +1 -1
  150. data/lib/rubocop/cop/lint/heredoc_method_call_position.rb +5 -6
  151. data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +5 -5
  152. data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +4 -4
  153. data/lib/rubocop/cop/lint/inherit_exception.rb +22 -1
  154. data/lib/rubocop/cop/lint/interpolation_check.rb +1 -1
  155. data/lib/rubocop/cop/lint/literal_as_condition.rb +1 -1
  156. data/lib/rubocop/cop/lint/literal_in_interpolation.rb +1 -1
  157. data/lib/rubocop/cop/lint/loop.rb +1 -1
  158. data/lib/rubocop/cop/lint/missing_cop_enable_directive.rb +2 -2
  159. data/lib/rubocop/cop/lint/multiple_compare.rb +1 -1
  160. data/lib/rubocop/cop/lint/nested_method_definition.rb +1 -1
  161. data/lib/rubocop/cop/lint/nested_percent_literal.rb +1 -1
  162. data/lib/rubocop/cop/lint/next_without_accumulator.rb +1 -1
  163. data/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +1 -1
  164. data/lib/rubocop/cop/lint/number_conversion.rb +16 -1
  165. data/lib/rubocop/cop/lint/ordered_magic_comments.rb +1 -1
  166. data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +2 -2
  167. data/lib/rubocop/cop/lint/percent_string_array.rb +1 -1
  168. data/lib/rubocop/cop/lint/percent_symbol_array.rb +1 -1
  169. data/lib/rubocop/cop/lint/rand_one.rb +1 -1
  170. data/lib/rubocop/cop/lint/redundant_with_index.rb +2 -2
  171. data/lib/rubocop/cop/lint/redundant_with_object.rb +2 -2
  172. data/lib/rubocop/cop/lint/regexp_as_condition.rb +1 -1
  173. data/lib/rubocop/cop/lint/require_parentheses.rb +1 -1
  174. data/lib/rubocop/cop/lint/rescue_exception.rb +1 -1
  175. data/lib/rubocop/cop/lint/rescue_type.rb +1 -1
  176. data/lib/rubocop/cop/lint/return_in_void_context.rb +2 -2
  177. data/lib/rubocop/cop/lint/safe_navigation_chain.rb +1 -4
  178. data/lib/rubocop/cop/lint/safe_navigation_consistency.rb +2 -2
  179. data/lib/rubocop/cop/lint/safe_navigation_with_empty.rb +1 -1
  180. data/lib/rubocop/cop/lint/script_permission.rb +2 -2
  181. data/lib/rubocop/cop/lint/shadowed_argument.rb +1 -1
  182. data/lib/rubocop/cop/lint/shadowed_exception.rb +1 -1
  183. data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +1 -1
  184. data/lib/rubocop/cop/lint/string_conversion_in_interpolation.rb +2 -2
  185. data/lib/rubocop/cop/lint/to_json.rb +1 -1
  186. data/lib/rubocop/cop/lint/underscore_prefixed_variable_name.rb +1 -1
  187. data/lib/rubocop/cop/lint/unified_integer.rb +3 -1
  188. data/lib/rubocop/cop/lint/unneeded_cop_disable_directive.rb +1 -1
  189. data/lib/rubocop/cop/lint/unneeded_cop_enable_directive.rb +1 -1
  190. data/lib/rubocop/cop/lint/unneeded_require_statement.rb +1 -1
  191. data/lib/rubocop/cop/lint/unneeded_splat_expansion.rb +7 -7
  192. data/lib/rubocop/cop/lint/unreachable_code.rb +1 -1
  193. data/lib/rubocop/cop/lint/unused_method_argument.rb +1 -1
  194. data/lib/rubocop/cop/lint/uri_escape_unescape.rb +1 -1
  195. data/lib/rubocop/cop/lint/uri_regexp.rb +1 -1
  196. data/lib/rubocop/cop/lint/useless_access_modifier.rb +1 -1
  197. data/lib/rubocop/cop/lint/useless_assignment.rb +1 -1
  198. data/lib/rubocop/cop/lint/useless_comparison.rb +1 -1
  199. data/lib/rubocop/cop/lint/useless_else_without_rescue.rb +1 -1
  200. data/lib/rubocop/cop/lint/useless_setter_call.rb +1 -1
  201. data/lib/rubocop/cop/lint/void.rb +6 -6
  202. data/lib/rubocop/cop/metrics/abc_size.rb +1 -1
  203. data/lib/rubocop/cop/metrics/block_length.rb +2 -2
  204. data/lib/rubocop/cop/metrics/cyclomatic_complexity.rb +1 -1
  205. data/lib/rubocop/cop/metrics/line_length.rb +1 -1
  206. data/lib/rubocop/cop/metrics/method_length.rb +1 -1
  207. data/lib/rubocop/cop/metrics/parameter_lists.rb +1 -1
  208. data/lib/rubocop/cop/metrics/perceived_complexity.rb +1 -1
  209. data/lib/rubocop/cop/mixin/alignment.rb +1 -1
  210. data/lib/rubocop/cop/mixin/check_assignment.rb +1 -1
  211. data/lib/rubocop/cop/mixin/empty_lines_around_body.rb +3 -3
  212. data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +1 -1
  213. data/lib/rubocop/cop/mixin/frozen_string_literal.rb +3 -4
  214. data/lib/rubocop/cop/mixin/min_body_length.rb +1 -1
  215. data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +4 -4
  216. data/lib/rubocop/cop/mixin/negative_conditional.rb +1 -1
  217. data/lib/rubocop/cop/mixin/percent_array.rb +2 -2
  218. data/lib/rubocop/cop/mixin/range_help.rb +1 -1
  219. data/lib/rubocop/cop/mixin/rescue_node.rb +1 -2
  220. data/lib/rubocop/cop/mixin/safe_mode.rb +1 -1
  221. data/lib/rubocop/cop/mixin/space_after_punctuation.rb +1 -1
  222. data/lib/rubocop/cop/mixin/space_before_punctuation.rb +1 -1
  223. data/lib/rubocop/cop/mixin/surrounding_space.rb +3 -3
  224. data/lib/rubocop/cop/mixin/too_many_lines.rb +2 -2
  225. data/lib/rubocop/cop/mixin/trailing_comma.rb +1 -1
  226. data/lib/rubocop/cop/mixin/uncommunicative_name.rb +4 -4
  227. data/lib/rubocop/cop/naming/accessor_method_name.rb +2 -2
  228. data/lib/rubocop/cop/naming/ascii_identifiers.rb +1 -1
  229. data/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +1 -1
  230. data/lib/rubocop/cop/naming/class_and_module_camel_case.rb +1 -1
  231. data/lib/rubocop/cop/naming/constant_name.rb +4 -4
  232. data/lib/rubocop/cop/naming/file_name.rb +3 -3
  233. data/lib/rubocop/cop/naming/heredoc_delimiter_case.rb +1 -1
  234. data/lib/rubocop/cop/naming/heredoc_delimiter_naming.rb +1 -1
  235. data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +2 -2
  236. data/lib/rubocop/cop/naming/method_name.rb +1 -1
  237. data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +1 -1
  238. data/lib/rubocop/cop/naming/variable_name.rb +1 -1
  239. data/lib/rubocop/cop/naming/variable_number.rb +1 -1
  240. data/lib/rubocop/cop/rails/action_filter.rb +1 -1
  241. data/lib/rubocop/cop/rails/active_record_aliases.rb +1 -1
  242. data/lib/rubocop/cop/rails/active_record_override.rb +1 -1
  243. data/lib/rubocop/cop/rails/active_support_aliases.rb +1 -1
  244. data/lib/rubocop/cop/rails/application_job.rb +3 -3
  245. data/lib/rubocop/cop/rails/application_record.rb +3 -3
  246. data/lib/rubocop/cop/rails/assert_not.rb +1 -1
  247. data/lib/rubocop/cop/rails/belongs_to.rb +2 -2
  248. data/lib/rubocop/cop/rails/blank.rb +3 -3
  249. data/lib/rubocop/cop/rails/bulk_change_table.rb +4 -4
  250. data/lib/rubocop/cop/rails/create_table_with_timestamps.rb +1 -1
  251. data/lib/rubocop/cop/rails/date.rb +11 -6
  252. data/lib/rubocop/cop/rails/delegate.rb +1 -1
  253. data/lib/rubocop/cop/rails/delegate_allow_blank.rb +1 -1
  254. data/lib/rubocop/cop/rails/dynamic_find_by.rb +1 -1
  255. data/lib/rubocop/cop/rails/enum_uniqueness.rb +1 -1
  256. data/lib/rubocop/cop/rails/environment_comparison.rb +2 -2
  257. data/lib/rubocop/cop/rails/exit.rb +1 -1
  258. data/lib/rubocop/cop/rails/file_path.rb +2 -2
  259. data/lib/rubocop/cop/rails/find_by.rb +1 -1
  260. data/lib/rubocop/cop/rails/find_each.rb +2 -3
  261. data/lib/rubocop/cop/rails/has_and_belongs_to_many.rb +1 -1
  262. data/lib/rubocop/cop/rails/has_many_or_has_one_dependent.rb +1 -1
  263. data/lib/rubocop/cop/rails/http_positional_arguments.rb +1 -1
  264. data/lib/rubocop/cop/rails/http_status.rb +4 -4
  265. data/lib/rubocop/cop/rails/ignored_skip_action_filter_option.rb +1 -1
  266. data/lib/rubocop/cop/rails/inverse_of.rb +2 -2
  267. data/lib/rubocop/cop/rails/lexically_scoped_action_filter.rb +1 -1
  268. data/lib/rubocop/cop/rails/link_to_blank.rb +9 -2
  269. data/lib/rubocop/cop/rails/not_null_column.rb +1 -1
  270. data/lib/rubocop/cop/rails/output.rb +1 -1
  271. data/lib/rubocop/cop/rails/output_safety.rb +2 -2
  272. data/lib/rubocop/cop/rails/pluralization_grammar.rb +1 -1
  273. data/lib/rubocop/cop/rails/presence.rb +1 -1
  274. data/lib/rubocop/cop/rails/present.rb +3 -3
  275. data/lib/rubocop/cop/rails/read_write_attribute.rb +1 -1
  276. data/lib/rubocop/cop/rails/redundant_allow_nil.rb +2 -2
  277. data/lib/rubocop/cop/rails/redundant_receiver_in_with_options.rb +1 -1
  278. data/lib/rubocop/cop/rails/reflection_class_name.rb +1 -1
  279. data/lib/rubocop/cop/rails/refute_methods.rb +1 -1
  280. data/lib/rubocop/cop/rails/relative_date_constant.rb +2 -2
  281. data/lib/rubocop/cop/rails/request_referer.rb +1 -1
  282. data/lib/rubocop/cop/rails/reversible_migration.rb +4 -4
  283. data/lib/rubocop/cop/rails/safe_navigation.rb +2 -6
  284. data/lib/rubocop/cop/rails/save_bang.rb +8 -8
  285. data/lib/rubocop/cop/rails/scope_args.rb +1 -1
  286. data/lib/rubocop/cop/rails/skips_model_validations.rb +1 -1
  287. data/lib/rubocop/cop/rails/time_zone.rb +53 -39
  288. data/lib/rubocop/cop/rails/uniq_before_pluck.rb +3 -3
  289. data/lib/rubocop/cop/rails/unknown_env.rb +2 -2
  290. data/lib/rubocop/cop/rails/validation.rb +1 -1
  291. data/lib/rubocop/cop/registry.rb +1 -1
  292. data/lib/rubocop/cop/security/eval.rb +1 -1
  293. data/lib/rubocop/cop/security/json_load.rb +1 -1
  294. data/lib/rubocop/cop/security/marshal_load.rb +1 -1
  295. data/lib/rubocop/cop/security/open.rb +1 -1
  296. data/lib/rubocop/cop/security/yaml_load.rb +1 -1
  297. data/lib/rubocop/cop/style/alias.rb +3 -3
  298. data/lib/rubocop/cop/style/and_or.rb +1 -1
  299. data/lib/rubocop/cop/style/array_join.rb +1 -1
  300. data/lib/rubocop/cop/style/ascii_comments.rb +1 -1
  301. data/lib/rubocop/cop/style/attr.rb +1 -1
  302. data/lib/rubocop/cop/style/auto_resource_cleanup.rb +1 -1
  303. data/lib/rubocop/cop/style/bare_percent_literals.rb +1 -1
  304. data/lib/rubocop/cop/style/begin_block.rb +1 -1
  305. data/lib/rubocop/cop/style/block_comments.rb +1 -1
  306. data/lib/rubocop/cop/style/block_delimiters.rb +0 -1
  307. data/lib/rubocop/cop/style/braces_around_hash_parameters.rb +1 -1
  308. data/lib/rubocop/cop/style/case_equality.rb +1 -1
  309. data/lib/rubocop/cop/style/character_literal.rb +1 -1
  310. data/lib/rubocop/cop/style/class_and_module_children.rb +5 -5
  311. data/lib/rubocop/cop/style/class_check.rb +1 -1
  312. data/lib/rubocop/cop/style/class_methods.rb +1 -1
  313. data/lib/rubocop/cop/style/class_vars.rb +1 -1
  314. data/lib/rubocop/cop/style/collection_methods.rb +1 -1
  315. data/lib/rubocop/cop/style/colon_method_call.rb +1 -1
  316. data/lib/rubocop/cop/style/colon_method_definition.rb +1 -1
  317. data/lib/rubocop/cop/style/command_literal.rb +2 -2
  318. data/lib/rubocop/cop/style/comment_annotation.rb +2 -2
  319. data/lib/rubocop/cop/style/commented_keyword.rb +1 -1
  320. data/lib/rubocop/cop/style/conditional_assignment.rb +14 -14
  321. data/lib/rubocop/cop/style/constant_visibility.rb +1 -1
  322. data/lib/rubocop/cop/style/copyright.rb +2 -2
  323. data/lib/rubocop/cop/style/date_time.rb +2 -2
  324. data/lib/rubocop/cop/style/def_with_parentheses.rb +1 -1
  325. data/lib/rubocop/cop/style/dir.rb +1 -1
  326. data/lib/rubocop/cop/style/documentation.rb +2 -2
  327. data/lib/rubocop/cop/style/documentation_method.rb +1 -1
  328. data/lib/rubocop/cop/style/double_negation.rb +1 -1
  329. data/lib/rubocop/cop/style/each_for_simple_loop.rb +1 -1
  330. data/lib/rubocop/cop/style/each_with_object.rb +3 -3
  331. data/lib/rubocop/cop/style/empty_block_parameter.rb +1 -1
  332. data/lib/rubocop/cop/style/empty_case_condition.rb +1 -1
  333. data/lib/rubocop/cop/style/empty_else.rb +2 -2
  334. data/lib/rubocop/cop/style/empty_lambda_parameter.rb +1 -1
  335. data/lib/rubocop/cop/style/empty_literal.rb +3 -3
  336. data/lib/rubocop/cop/style/empty_method.rb +2 -2
  337. data/lib/rubocop/cop/style/encoding.rb +2 -2
  338. data/lib/rubocop/cop/style/end_block.rb +1 -1
  339. data/lib/rubocop/cop/style/eval_with_location.rb +3 -3
  340. data/lib/rubocop/cop/style/even_odd.rb +1 -1
  341. data/lib/rubocop/cop/style/expand_path_arguments.rb +3 -3
  342. data/lib/rubocop/cop/style/for.rb +2 -2
  343. data/lib/rubocop/cop/style/format_string.rb +1 -1
  344. data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +5 -21
  345. data/lib/rubocop/cop/style/global_vars.rb +1 -1
  346. data/lib/rubocop/cop/style/guard_clause.rb +3 -3
  347. data/lib/rubocop/cop/style/hash_syntax.rb +3 -3
  348. data/lib/rubocop/cop/style/identical_conditional_branches.rb +1 -1
  349. data/lib/rubocop/cop/style/if_inside_else.rb +2 -2
  350. data/lib/rubocop/cop/style/if_unless_modifier.rb +1 -1
  351. data/lib/rubocop/cop/style/if_unless_modifier_of_if_unless.rb +1 -1
  352. data/lib/rubocop/cop/style/if_with_semicolon.rb +2 -2
  353. data/lib/rubocop/cop/style/implicit_runtime_error.rb +1 -1
  354. data/lib/rubocop/cop/style/infinite_loop.rb +1 -1
  355. data/lib/rubocop/cop/style/inline_comment.rb +1 -1
  356. data/lib/rubocop/cop/style/inverse_methods.rb +7 -1
  357. data/lib/rubocop/cop/style/ip_addresses.rb +1 -1
  358. data/lib/rubocop/cop/style/lambda.rb +2 -2
  359. data/lib/rubocop/cop/style/line_end_concatenation.rb +2 -2
  360. data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +3 -3
  361. data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +1 -1
  362. data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +2 -2
  363. data/lib/rubocop/cop/style/method_def_parentheses.rb +2 -2
  364. data/lib/rubocop/cop/style/method_missing_super.rb +1 -1
  365. data/lib/rubocop/cop/style/min_max.rb +1 -1
  366. data/lib/rubocop/cop/style/missing_else.rb +3 -3
  367. data/lib/rubocop/cop/style/missing_respond_to_missing.rb +1 -1
  368. data/lib/rubocop/cop/style/mixin_grouping.rb +1 -1
  369. data/lib/rubocop/cop/style/mixin_usage.rb +1 -1
  370. data/lib/rubocop/cop/style/module_function.rb +3 -3
  371. data/lib/rubocop/cop/style/multiline_block_chain.rb +2 -2
  372. data/lib/rubocop/cop/style/multiline_if_modifier.rb +1 -1
  373. data/lib/rubocop/cop/style/multiline_if_then.rb +1 -1
  374. data/lib/rubocop/cop/style/multiline_memoization.rb +1 -1
  375. data/lib/rubocop/cop/style/multiline_method_signature.rb +1 -1
  376. data/lib/rubocop/cop/style/multiline_ternary_operator.rb +1 -1
  377. data/lib/rubocop/cop/style/multiple_comparison.rb +1 -1
  378. data/lib/rubocop/cop/style/mutable_constant.rb +3 -3
  379. data/lib/rubocop/cop/style/negated_if.rb +1 -1
  380. data/lib/rubocop/cop/style/negated_unless.rb +89 -0
  381. data/lib/rubocop/cop/style/nested_modifier.rb +4 -4
  382. data/lib/rubocop/cop/style/nested_parenthesized_calls.rb +1 -1
  383. data/lib/rubocop/cop/style/nested_ternary_operator.rb +1 -1
  384. data/lib/rubocop/cop/style/next.rb +5 -5
  385. data/lib/rubocop/cop/style/nil_comparison.rb +2 -2
  386. data/lib/rubocop/cop/style/not.rb +1 -1
  387. data/lib/rubocop/cop/style/numeric_literal_prefix.rb +5 -5
  388. data/lib/rubocop/cop/style/numeric_literals.rb +2 -2
  389. data/lib/rubocop/cop/style/numeric_predicate.rb +2 -10
  390. data/lib/rubocop/cop/style/one_line_conditional.rb +1 -1
  391. data/lib/rubocop/cop/style/option_hash.rb +1 -1
  392. data/lib/rubocop/cop/style/optional_arguments.rb +1 -1
  393. data/lib/rubocop/cop/style/or_assignment.rb +1 -1
  394. data/lib/rubocop/cop/style/parallel_assignment.rb +2 -2
  395. data/lib/rubocop/cop/style/percent_q_literals.rb +2 -2
  396. data/lib/rubocop/cop/style/perl_backrefs.rb +1 -1
  397. data/lib/rubocop/cop/style/preferred_hash_methods.rb +1 -1
  398. data/lib/rubocop/cop/style/proc.rb +1 -1
  399. data/lib/rubocop/cop/style/raise_args.rb +2 -2
  400. data/lib/rubocop/cop/style/random_with_offset.rb +1 -1
  401. data/lib/rubocop/cop/style/redundant_begin.rb +2 -2
  402. data/lib/rubocop/cop/style/redundant_conditional.rb +1 -1
  403. data/lib/rubocop/cop/style/redundant_exception.rb +2 -2
  404. data/lib/rubocop/cop/style/redundant_freeze.rb +1 -1
  405. data/lib/rubocop/cop/style/redundant_parentheses.rb +6 -6
  406. data/lib/rubocop/cop/style/redundant_return.rb +3 -3
  407. data/lib/rubocop/cop/style/redundant_self.rb +2 -2
  408. data/lib/rubocop/cop/style/redundant_sort_by.rb +1 -1
  409. data/lib/rubocop/cop/style/regexp_literal.rb +2 -2
  410. data/lib/rubocop/cop/style/rescue_modifier.rb +1 -1
  411. data/lib/rubocop/cop/style/rescue_standard_error.rb +2 -2
  412. data/lib/rubocop/cop/style/return_nil.rb +2 -2
  413. data/lib/rubocop/cop/style/safe_navigation.rb +2 -7
  414. data/lib/rubocop/cop/style/sample.rb +1 -1
  415. data/lib/rubocop/cop/style/self_assignment.rb +1 -1
  416. data/lib/rubocop/cop/style/semicolon.rb +1 -1
  417. data/lib/rubocop/cop/style/send.rb +1 -1
  418. data/lib/rubocop/cop/style/signal_exception.rb +2 -2
  419. data/lib/rubocop/cop/style/single_line_block_params.rb +1 -1
  420. data/lib/rubocop/cop/style/single_line_methods.rb +1 -1
  421. data/lib/rubocop/cop/style/special_global_vars.rb +5 -5
  422. data/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +2 -2
  423. data/lib/rubocop/cop/style/stderr_puts.rb +0 -1
  424. data/lib/rubocop/cop/style/string_hash_keys.rb +2 -1
  425. data/lib/rubocop/cop/style/string_literals.rb +1 -1
  426. data/lib/rubocop/cop/style/string_methods.rb +1 -1
  427. data/lib/rubocop/cop/style/strip.rb +1 -1
  428. data/lib/rubocop/cop/style/struct_inheritance.rb +1 -1
  429. data/lib/rubocop/cop/style/symbol_array.rb +2 -2
  430. data/lib/rubocop/cop/style/symbol_literal.rb +1 -1
  431. data/lib/rubocop/cop/style/symbol_proc.rb +1 -1
  432. data/lib/rubocop/cop/style/ternary_parentheses.rb +2 -2
  433. data/lib/rubocop/cop/style/trailing_body_on_class.rb +1 -1
  434. data/lib/rubocop/cop/style/trailing_body_on_method_definition.rb +1 -1
  435. data/lib/rubocop/cop/style/trailing_body_on_module.rb +1 -1
  436. data/lib/rubocop/cop/style/trailing_method_end_statement.rb +1 -1
  437. data/lib/rubocop/cop/style/trailing_underscore_variable.rb +2 -2
  438. data/lib/rubocop/cop/style/trivial_accessors.rb +2 -2
  439. data/lib/rubocop/cop/style/unless_else.rb +2 -2
  440. data/lib/rubocop/cop/style/unneeded_capital_w.rb +1 -1
  441. data/lib/rubocop/cop/style/unneeded_condition.rb +4 -4
  442. data/lib/rubocop/cop/style/unneeded_interpolation.rb +3 -3
  443. data/lib/rubocop/cop/style/unneeded_percent_q.rb +7 -7
  444. data/lib/rubocop/cop/style/unneeded_sort.rb +2 -2
  445. data/lib/rubocop/cop/style/unpack_first.rb +1 -1
  446. data/lib/rubocop/cop/style/variable_interpolation.rb +1 -1
  447. data/lib/rubocop/cop/style/when_then.rb +1 -1
  448. data/lib/rubocop/cop/style/while_until_do.rb +1 -1
  449. data/lib/rubocop/cop/style/while_until_modifier.rb +1 -1
  450. data/lib/rubocop/cop/style/word_array.rb +2 -2
  451. data/lib/rubocop/cop/style/yoda_condition.rb +1 -1
  452. data/lib/rubocop/cop/style/zero_length_predicate.rb +2 -2
  453. data/lib/rubocop/cop/util.rb +2 -2
  454. data/lib/rubocop/cop/variable_force/variable_table.rb +1 -1
  455. data/lib/rubocop/core_ext/string.rb +1 -1
  456. data/lib/rubocop/formatter/clang_style_formatter.rb +1 -1
  457. data/lib/rubocop/formatter/disabled_config_formatter.rb +2 -2
  458. data/lib/rubocop/formatter/fuubar_style_formatter.rb +1 -1
  459. data/lib/rubocop/formatter/html_formatter.rb +1 -1
  460. data/lib/rubocop/formatter/progress_formatter.rb +1 -1
  461. data/lib/rubocop/formatter/simple_text_formatter.rb +1 -1
  462. data/lib/rubocop/magic_comment.rb +4 -4
  463. data/lib/rubocop/node_pattern.rb +9 -9
  464. data/lib/rubocop/options.rb +2 -2
  465. data/lib/rubocop/processed_source.rb +3 -5
  466. data/lib/rubocop/rspec/cop_helper.rb +2 -2
  467. data/lib/rubocop/rspec/expect_offense.rb +5 -5
  468. data/lib/rubocop/rspec/shared_contexts.rb +0 -4
  469. data/lib/rubocop/runner.rb +1 -1
  470. data/lib/rubocop/string_interpreter.rb +7 -7
  471. data/lib/rubocop/version.rb +2 -2
  472. metadata +11 -16
@@ -19,7 +19,7 @@ module RuboCop
19
19
  # end
20
20
  #
21
21
  class MultilineMethodSignature < Cop
22
- MSG = 'Avoid multi-line method signatures.'.freeze
22
+ MSG = 'Avoid multi-line method signatures.'
23
23
 
24
24
  def on_def(node)
25
25
  return unless node.arguments?
@@ -25,7 +25,7 @@ module RuboCop
25
25
  # end
26
26
  class MultilineTernaryOperator < Cop
27
27
  MSG = 'Avoid multi-line ternary operators, ' \
28
- 'use `if` or `unless` instead.'.freeze
28
+ 'use `if` or `unless` instead.'
29
29
 
30
30
  def on_if(node)
31
31
  return unless node.ternary? && node.multiline?
@@ -16,7 +16,7 @@ module RuboCop
16
16
  # foo if ['a', 'b', 'c'].include?(a)
17
17
  class MultipleComparison < Cop
18
18
  MSG = 'Avoid comparing a variable with multiple items ' \
19
- 'in a conditional, use `Array#include?` instead.'.freeze
19
+ 'in a conditional, use `Array#include?` instead.'
20
20
 
21
21
  def on_or(node)
22
22
  root_of_or_node = root_of_or_node(node)
@@ -54,7 +54,7 @@ module RuboCop
54
54
  include FrozenStringLiteral
55
55
  include ConfigurableEnforcedStyle
56
56
 
57
- MSG = 'Freeze mutable objects assigned to constants.'.freeze
57
+ MSG = 'Freeze mutable objects assigned to constants.'
58
58
 
59
59
  def on_casgn(node)
60
60
  _scope, _const_name, value = *node
@@ -64,7 +64,7 @@ module RuboCop
64
64
  def on_or_asgn(node)
65
65
  lhs, value = *node
66
66
 
67
- return unless lhs && lhs.casgn_type?
67
+ return unless lhs&.casgn_type?
68
68
 
69
69
  on_assignment(value)
70
70
  end
@@ -118,7 +118,7 @@ module RuboCop
118
118
  end
119
119
 
120
120
  def mutable_literal?(value)
121
- value && value.mutable_literal?
121
+ value&.mutable_literal?
122
122
  end
123
123
 
124
124
  def immutable_literal?(node)
@@ -73,7 +73,7 @@ module RuboCop
73
73
  include NegativeConditional
74
74
 
75
75
  def on_if(node)
76
- return if node.elsif? || node.ternary?
76
+ return if node.unless? || node.elsif? || node.ternary?
77
77
  return if correct_style?(node)
78
78
 
79
79
  check_negative_conditional(node)
@@ -0,0 +1,89 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module Cop
5
+ module Style
6
+ # Checks for uses of unless with a negated condition. Only unless
7
+ # without else are considered. There are three different styles:
8
+ #
9
+ # - both
10
+ # - prefix
11
+ # - postfix
12
+ #
13
+ # @example EnforcedStyle: both (default)
14
+ # # enforces `if` for `prefix` and `postfix` conditionals
15
+ #
16
+ # # bad
17
+ # unless !foo
18
+ # bar
19
+ # end
20
+ #
21
+ # # good
22
+ # if foo
23
+ # bar
24
+ # end
25
+ #
26
+ # # bad
27
+ # bar unless !foo
28
+ #
29
+ # # good
30
+ # bar if foo
31
+ #
32
+ # @example EnforcedStyle: prefix
33
+ # # enforces `if` for just `prefix` conditionals
34
+ #
35
+ # # bad
36
+ # unless !foo
37
+ # bar
38
+ # end
39
+ #
40
+ # # good
41
+ # if foo
42
+ # bar
43
+ # end
44
+ #
45
+ # # good
46
+ # bar unless !foo
47
+ #
48
+ # @example EnforcedStyle: postfix
49
+ # # enforces `if` for just `postfix` conditionals
50
+ #
51
+ # # bad
52
+ # bar unless !foo
53
+ #
54
+ # # good
55
+ # bar if foo
56
+ #
57
+ # # good
58
+ # unless !foo
59
+ # bar
60
+ # end
61
+ class NegatedUnless < Cop
62
+ include ConfigurableEnforcedStyle
63
+ include NegativeConditional
64
+
65
+ def on_if(node)
66
+ return if node.if? || node.elsif? || node.ternary?
67
+ return if correct_style?(node)
68
+
69
+ check_negative_conditional(node)
70
+ end
71
+
72
+ def autocorrect(node)
73
+ ConditionCorrector.correct_negative_condition(node)
74
+ end
75
+
76
+ private
77
+
78
+ def message(node)
79
+ format(MSG, inverse: node.inverse_keyword, current: node.keyword)
80
+ end
81
+
82
+ def correct_style?(node)
83
+ style == :prefix && node.modifier_form? ||
84
+ style == :postfix && !node.modifier_form?
85
+ end
86
+ end
87
+ end
88
+ end
89
+ end
@@ -16,7 +16,7 @@ module RuboCop
16
16
  class NestedModifier < Cop
17
17
  include RangeHelp
18
18
 
19
- MSG = 'Avoid using nested modifiers.'.freeze
19
+ MSG = 'Avoid using nested modifiers.'
20
20
 
21
21
  def on_while(node)
22
22
  check(node)
@@ -39,7 +39,7 @@ module RuboCop
39
39
  end
40
40
 
41
41
  def modifier?(node)
42
- node && node.basic_conditional? && node.modifier_form?
42
+ node&.basic_conditional? && node&.modifier_form?
43
43
  end
44
44
 
45
45
  def autocorrect(node)
@@ -62,13 +62,13 @@ module RuboCop
62
62
  end
63
63
 
64
64
  def replacement_operator(keyword)
65
- keyword == 'if'.freeze ? '&&'.freeze : '||'.freeze
65
+ keyword == 'if' ? '&&' : '||'
66
66
  end
67
67
 
68
68
  def left_hand_operand(node, operator)
69
69
  expr = node.condition.source
70
70
  expr = "(#{expr})" if node.condition.or_type? &&
71
- operator == '&&'.freeze
71
+ operator == '&&'
72
72
  expr
73
73
  end
74
74
 
@@ -15,7 +15,7 @@ module RuboCop
15
15
  class NestedParenthesizedCalls < Cop
16
16
  include RangeHelp
17
17
 
18
- MSG = 'Add parentheses to nested method call `%<source>s`.'.freeze
18
+ MSG = 'Add parentheses to nested method call `%<source>s`.'
19
19
 
20
20
  def on_send(node)
21
21
  return unless node.parenthesized?
@@ -17,7 +17,7 @@ module RuboCop
17
17
  # end
18
18
  class NestedTernaryOperator < Cop
19
19
  MSG = 'Ternary operators must not be nested. Prefer `if` or `else` ' \
20
- 'constructs instead.'.freeze
20
+ 'constructs instead.'
21
21
 
22
22
  def on_if(node)
23
23
  return unless node.ternary?
@@ -51,7 +51,7 @@ module RuboCop
51
51
  include MinBodyLength
52
52
  include RangeHelp
53
53
 
54
- MSG = 'Use `next` to skip iteration.'.freeze
54
+ MSG = 'Use `next` to skip iteration.'
55
55
  EXIT_TYPES = %i[break return].freeze
56
56
 
57
57
  def self.autocorrect_incompatible_with
@@ -125,7 +125,7 @@ module RuboCop
125
125
  end
126
126
 
127
127
  def if_without_else?(node)
128
- node && node.if_type? && !node.ternary? && !node.else?
128
+ node&.if_type? && !node.ternary? && !node.else?
129
129
  end
130
130
 
131
131
  def exit_body_type?(node)
@@ -137,7 +137,7 @@ module RuboCop
137
137
  def offense_node(body)
138
138
  *_, condition = *body
139
139
 
140
- condition && condition.if_type? ? condition : body
140
+ condition&.if_type? ? condition : body
141
141
  end
142
142
 
143
143
  def offense_location(offense_node)
@@ -231,9 +231,9 @@ module RuboCop
231
231
  adjustment = delta + @reindented_lines[lineno]
232
232
  @reindented_lines[lineno] = adjustment
233
233
 
234
- if adjustment > 0
234
+ if adjustment.positive?
235
235
  corrector.remove_leading(buffer.line_range(lineno), adjustment)
236
- elsif adjustment < 0
236
+ elsif adjustment.negative?
237
237
  corrector.insert_before(buffer.line_range(lineno),
238
238
  ' ' * -adjustment)
239
239
  end
@@ -31,8 +31,8 @@ module RuboCop
31
31
  class NilComparison < Cop
32
32
  include ConfigurableEnforcedStyle
33
33
 
34
- PREDICATE_MSG = 'Prefer the use of the `nil?` predicate.'.freeze
35
- EXPLICIT_MSG = 'Prefer the use of the `==` comparison.'.freeze
34
+ PREDICATE_MSG = 'Prefer the use of the `nil?` predicate.'
35
+ EXPLICIT_MSG = 'Prefer the use of the `==` comparison.'
36
36
 
37
37
  def_node_matcher :nil_comparison?, '(send _ {:== :===} nil)'
38
38
  def_node_matcher :nil_check?, '(send _ :nil?)'
@@ -16,7 +16,7 @@ module RuboCop
16
16
  class Not < Cop
17
17
  include RangeHelp
18
18
 
19
- MSG = 'Use `!` instead of `not`.'.freeze
19
+ MSG = 'Use `!` instead of `not`.'
20
20
 
21
21
  OPPOSITE_METHODS = {
22
22
  :== => :!=,
@@ -42,11 +42,11 @@ module RuboCop
42
42
  BINARY_REGEX = /^0B[01]+$/.freeze
43
43
  DECIMAL_REGEX = /^0[dD][0-9]+$/.freeze
44
44
 
45
- OCTAL_ZERO_ONLY_MSG = 'Use 0 for octal literals.'.freeze
46
- OCTAL_MSG = 'Use 0o for octal literals.'.freeze
47
- HEX_MSG = 'Use 0x for hexadecimal literals.'.freeze
48
- BINARY_MSG = 'Use 0b for binary literals.'.freeze
49
- DECIMAL_MSG = 'Do not use prefixes for decimal literals.'.freeze
45
+ OCTAL_ZERO_ONLY_MSG = 'Use 0 for octal literals.'
46
+ OCTAL_MSG = 'Use 0o for octal literals.'
47
+ HEX_MSG = 'Use 0x for hexadecimal literals.'
48
+ BINARY_MSG = 'Use 0b for binary literals.'
49
+ DECIMAL_MSG = 'Do not use prefixes for decimal literals.'
50
50
 
51
51
  def on_int(node)
52
52
  type = literal_type(node)
@@ -31,7 +31,7 @@ module RuboCop
31
31
  include IntegerNode
32
32
 
33
33
  MSG = 'Use underscores(_) as thousands separator and ' \
34
- 'separate every 3 digits with them.'.freeze
34
+ 'separate every 3 digits with them.'
35
35
  DELIMITER_REGEXP = /[eE.]/.freeze
36
36
 
37
37
  def on_int(node)
@@ -97,7 +97,7 @@ module RuboCop
97
97
  .reverse
98
98
  .gsub(/...(?=.)/, '\&_')
99
99
  .reverse
100
- formatted_int.insert(0, '-') if int_part < 0
100
+ formatted_int.insert(0, '-') if int_part.negative?
101
101
  formatted_int
102
102
  end
103
103
 
@@ -45,7 +45,7 @@ module RuboCop
45
45
  include ConfigurableEnforcedStyle
46
46
  include IgnoredMethods
47
47
 
48
- MSG = 'Use `%<prefer>s` instead of `%<current>s`.'.freeze
48
+ MSG = 'Use `%<prefer>s` instead of `%<current>s`.'
49
49
 
50
50
  REPLACEMENTS = {
51
51
  'zero?' => '==',
@@ -86,7 +86,7 @@ module RuboCop
86
86
  predicate(node)
87
87
  end
88
88
 
89
- return unless numeric && operator && replacement_supported?(operator)
89
+ return unless numeric && operator
90
90
 
91
91
  [numeric, replacement(numeric, operator)]
92
92
  end
@@ -112,14 +112,6 @@ module RuboCop
112
112
  node.send_type? && node.binary_operation? && !node.parenthesized?
113
113
  end
114
114
 
115
- def replacement_supported?(operator)
116
- if %i[> <].include?(operator)
117
- target_ruby_version >= 2.3
118
- else
119
- true
120
- end
121
- end
122
-
123
115
  def invert
124
116
  lambda do |comparison, numeric|
125
117
  comparison = { :> => :<, :< => :> }[comparison] || comparison
@@ -26,7 +26,7 @@ module RuboCop
26
26
  include OnNormalIfUnless
27
27
 
28
28
  MSG = 'Favor the ternary operator (`?:`) ' \
29
- 'over `%<keyword>s/then/else/end` constructs.'.freeze
29
+ 'over `%<keyword>s/then/else/end` constructs.'
30
30
 
31
31
  def on_normal_if_unless(node)
32
32
  return unless node.single_line? && node.else_branch
@@ -20,7 +20,7 @@ module RuboCop
20
20
  # # ...
21
21
  # end
22
22
  class OptionHash < Cop
23
- MSG = 'Prefer keyword arguments to options hashes.'.freeze
23
+ MSG = 'Prefer keyword arguments to options hashes.'
24
24
 
25
25
  def_node_matcher :option_hash, <<-PATTERN
26
26
  (args ... $(optarg [#suspicious_name? _] (hash)))
@@ -19,7 +19,7 @@ module RuboCop
19
19
  # end
20
20
  class OptionalArguments < Cop
21
21
  MSG = 'Optional arguments should appear at the end ' \
22
- 'of the argument list.'.freeze
22
+ 'of the argument list.'
23
23
 
24
24
  def on_def(node)
25
25
  each_misplaced_optional_arg(node.arguments) do |argument|
@@ -27,7 +27,7 @@ module RuboCop
27
27
  # # good - set name to 'Bozhidar', only if it's nil or false
28
28
  # name ||= 'Bozhidar'
29
29
  class OrAssignment < Cop
30
- MSG = 'Use the double pipe equals operator `||=` instead.'.freeze
30
+ MSG = 'Use the double pipe equals operator `||=` instead.'
31
31
 
32
32
  def_node_matcher :ternary_assignment?, <<-PATTERN
33
33
  ({lvasgn ivasgn cvasgn gvasgn} _var
@@ -25,7 +25,7 @@ module RuboCop
25
25
  class ParallelAssignment < Cop
26
26
  include RescueNode
27
27
 
28
- MSG = 'Do not use parallel assignment.'.freeze
28
+ MSG = 'Do not use parallel assignment.'
29
29
 
30
30
  def on_masgn(node)
31
31
  lhs, rhs = *node
@@ -229,7 +229,7 @@ module RuboCop
229
229
  # If the parallel assignment uses a rescue modifier and it is the
230
230
  # only contents of a method, then we want to make use of the
231
231
  # implicit begin
232
- if node.parent.parent && node.parent.parent.def_type?
232
+ if node.parent.parent&.def_type?
233
233
  super + def_correction(rescue_result)
234
234
  else
235
235
  begin_correction(rescue_result)
@@ -30,8 +30,8 @@ module RuboCop
30
30
  include ConfigurableEnforcedStyle
31
31
 
32
32
  LOWER_CASE_Q_MSG = 'Do not use `%Q` unless interpolation is ' \
33
- 'needed. Use `%q`.'.freeze
34
- UPPER_CASE_Q_MSG = 'Use `%Q` instead of `%q`.'.freeze
33
+ 'needed. Use `%q`.'
34
+ UPPER_CASE_Q_MSG = 'Use `%Q` instead of `%q`.'
35
35
 
36
36
  def on_str(node)
37
37
  process(node, '%Q', '%q')
@@ -13,7 +13,7 @@ module RuboCop
13
13
  # # good
14
14
  # puts Regexp.last_match(1)
15
15
  class PerlBackrefs < Cop
16
- MSG = 'Avoid the use of Perl-style backrefs.'.freeze
16
+ MSG = 'Avoid the use of Perl-style backrefs.'
17
17
 
18
18
  def on_nth_ref(node)
19
19
  add_offense(node)
@@ -28,7 +28,7 @@ module RuboCop
28
28
  class PreferredHashMethods < Cop
29
29
  include ConfigurableEnforcedStyle
30
30
 
31
- MSG = 'Use `Hash#%<prefer>s` instead of `Hash#%<current>s`.'.freeze
31
+ MSG = 'Use `Hash#%<prefer>s` instead of `Hash#%<current>s`.'
32
32
 
33
33
  OFFENDING_SELECTORS = {
34
34
  short: %i[has_key? has_value?],
@@ -14,7 +14,7 @@ module RuboCop
14
14
  # p = proc { |n| puts n }
15
15
  #
16
16
  class Proc < Cop
17
- MSG = 'Use `proc` instead of `Proc.new`.'.freeze
17
+ MSG = 'Use `proc` instead of `Proc.new`.'
18
18
 
19
19
  def_node_matcher :proc_new?,
20
20
  '(block $(send (const nil? :Proc) :new) ...)'
@@ -36,9 +36,9 @@ module RuboCop
36
36
  include ConfigurableEnforcedStyle
37
37
 
38
38
  EXPLODED_MSG = 'Provide an exception class and message ' \
39
- 'as arguments to `%<method>s`.'.freeze
39
+ 'as arguments to `%<method>s`.'
40
40
  COMPACT_MSG = 'Provide an exception object ' \
41
- 'as an argument to `%<method>s`.'.freeze
41
+ 'as an argument to `%<method>s`.'
42
42
 
43
43
  def on_send(node)
44
44
  return unless node.command?(:raise) || node.command?(:fail)