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
@@ -53,7 +53,7 @@ module RuboCop
53
53
  # # good
54
54
  # delegate :bar, to: :foo, prefix: true
55
55
  class Delegate < Cop
56
- MSG = 'Use `delegate` to define delegations.'.freeze
56
+ MSG = 'Use `delegate` to define delegations.'
57
57
 
58
58
  def_node_matcher :delegate?, <<-PATTERN
59
59
  (def _method_name _args
@@ -14,7 +14,7 @@ module RuboCop
14
14
  # # good
15
15
  # delegate :foo, to: :bar, allow_nil: true
16
16
  class DelegateAllowBlank < Cop
17
- MSG = '`allow_blank` is not a valid option, use `allow_nil`.'.freeze
17
+ MSG = '`allow_blank` is not a valid option, use `allow_nil`.'
18
18
 
19
19
  def_node_matcher :allow_blank_option, <<-PATTERN
20
20
  (send nil? :delegate _ (hash <$(pair (sym :allow_blank) true) ...>))
@@ -26,7 +26,7 @@ module RuboCop
26
26
  # # good
27
27
  # User.find_by!(email: email)
28
28
  class DynamicFindBy < Cop
29
- MSG = 'Use `%<static_name>s` instead of dynamic `%<method>s`.'.freeze
29
+ MSG = 'Use `%<static_name>s` instead of dynamic `%<method>s`.'
30
30
  METHOD_PATTERN = /^find_by_(.+?)(!)?$/.freeze
31
31
 
32
32
  def on_send(node)
@@ -21,7 +21,7 @@ module RuboCop
21
21
  include Duplication
22
22
 
23
23
  MSG = 'Duplicate value `%<value>s` found in `%<enum>s` ' \
24
- 'enum declaration.'.freeze
24
+ 'enum declaration.'
25
25
 
26
26
  def_node_matcher :enum_declaration, <<-PATTERN
27
27
  (send nil? :enum (hash (pair (_ $_) ${array hash})))
@@ -16,10 +16,10 @@ module RuboCop
16
16
  # # good
17
17
  # Rails.env.production?
18
18
  class EnvironmentComparison < Cop
19
- MSG = "Favor `Rails.env.%<env>s?` over `Rails.env == '%<env>s'`.".freeze
19
+ MSG = "Favor `Rails.env.%<env>s?` over `Rails.env == '%<env>s'`."
20
20
 
21
21
  SYM_MSG = 'Do not compare `Rails.env` with a symbol, it will always ' \
22
- 'evaluate to `false`.'.freeze
22
+ 'evaluate to `false`.'
23
23
 
24
24
  def_node_matcher :environment_str_comparison?, <<-PATTERN
25
25
  (send
@@ -26,7 +26,7 @@ module RuboCop
26
26
  class Exit < Cop
27
27
  include ConfigurableEnforcedStyle
28
28
 
29
- MSG = 'Do not use `exit` in Rails applications.'.freeze
29
+ MSG = 'Do not use `exit` in Rails applications.'
30
30
  TARGET_METHODS = %i[exit exit!].freeze
31
31
  EXPLICIT_RECEIVERS = %i[Kernel Process].freeze
32
32
 
@@ -30,9 +30,9 @@ module RuboCop
30
30
  include RangeHelp
31
31
 
32
32
  MSG_SLASHES = 'Please use `Rails.root.join(\'path/to\')` ' \
33
- 'instead.'.freeze
33
+ 'instead.'
34
34
  MSG_ARGUMENTS = 'Please use `Rails.root.join(\'path\', \'to\')` ' \
35
- 'instead.'.freeze
35
+ 'instead.'
36
36
 
37
37
  def_node_matcher :file_join_nodes?, <<-PATTERN
38
38
  (send (const nil? :File) :join ...)
@@ -16,7 +16,7 @@ module RuboCop
16
16
  class FindBy < Cop
17
17
  include RangeHelp
18
18
 
19
- MSG = 'Use `find_by` instead of `where.%<method>s`.'.freeze
19
+ MSG = 'Use `find_by` instead of `where.%<method>s`.'
20
20
  TARGET_SELECTORS = %i[first take].freeze
21
21
 
22
22
  def_node_matcher :where_first?, <<-PATTERN
@@ -13,7 +13,7 @@ module RuboCop
13
13
  # # good
14
14
  # User.all.find_each
15
15
  class FindEach < Cop
16
- MSG = 'Use `find_each` instead of `each`.'.freeze
16
+ MSG = 'Use `find_each` instead of `each`.'
17
17
 
18
18
  SCOPE_METHODS = %i[
19
19
  all eager_load includes joins left_joins left_outer_joins not preload
@@ -22,8 +22,7 @@ module RuboCop
22
22
  IGNORED_METHODS = %i[order limit select].freeze
23
23
 
24
24
  def on_send(node)
25
- return unless node.receiver &&
26
- node.receiver.send_type? &&
25
+ return unless node.receiver&.send_type? &&
27
26
  node.method?(:each)
28
27
 
29
28
  return unless SCOPE_METHODS.include?(node.receiver.method_name)
@@ -12,7 +12,7 @@ module RuboCop
12
12
  # # good
13
13
  # # has_many :ingredients, through: :recipe_ingredients
14
14
  class HasAndBelongsToMany < Cop
15
- MSG = 'Prefer `has_many :through` to `has_and_belongs_to_many`.'.freeze
15
+ MSG = 'Prefer `has_many :through` to `has_and_belongs_to_many`.'
16
16
 
17
17
  def on_send(node)
18
18
  return unless node.command?(:has_and_belongs_to_many)
@@ -21,7 +21,7 @@ module RuboCop
21
21
  # has_many :patients, through: :appointments
22
22
  # end
23
23
  class HasManyOrHasOneDependent < Cop
24
- MSG = 'Specify a `:dependent` option.'.freeze
24
+ MSG = 'Specify a `:dependent` option.'
25
25
 
26
26
  def_node_search :active_resource_class?, <<-PATTERN
27
27
  (const (const nil? :ActiveResource) :Base)
@@ -20,7 +20,7 @@ module RuboCop
20
20
  extend TargetRailsVersion
21
21
 
22
22
  MSG = 'Use keyword arguments instead of ' \
23
- 'positional arguments for http call: `%<verb>s`.'.freeze
23
+ 'positional arguments for http call: `%<verb>s`.'
24
24
  KEYWORD_ARGS = %i[
25
25
  method params session body flash xhr as headers env
26
26
  ].freeze
@@ -89,9 +89,9 @@ module RuboCop
89
89
  # :nodoc:
90
90
  class SymbolicStyleChecker
91
91
  MSG = 'Prefer `%<prefer>s` over `%<current>s` ' \
92
- 'to define HTTP status code.'.freeze
92
+ 'to define HTTP status code.'
93
93
  DEFAULT_MSG = 'Prefer `symbolic` over `numeric` ' \
94
- 'to define HTTP status code.'.freeze
94
+ 'to define HTTP status code.'
95
95
 
96
96
  attr_reader :node
97
97
  def initialize(node)
@@ -133,9 +133,9 @@ module RuboCop
133
133
  # :nodoc:
134
134
  class NumericStyleChecker
135
135
  MSG = 'Prefer `%<prefer>s` over `%<current>s` ' \
136
- 'to define HTTP status code.'.freeze
136
+ 'to define HTTP status code.'
137
137
  DEFAULT_MSG = 'Prefer `numeric` over `symbolic` ' \
138
- 'to define HTTP status code.'.freeze
138
+ 'to define HTTP status code.'
139
139
  PERMITTED_STATUS = %i[error success missing redirect].freeze
140
140
 
141
141
  attr_reader :node
@@ -38,7 +38,7 @@ module RuboCop
38
38
  #
39
39
  # @see https://api.rubyonrails.org/classes/AbstractController/Callbacks/ClassMethods.html#method-i-_normalize_callback_options
40
40
  class IgnoredSkipActionFilterOption < Cop
41
- MSG = <<-MSG.strip_indent.chomp.freeze
41
+ MSG = <<~MSG.chomp.freeze
42
42
  `%<ignore>s` option will be ignored when `%<prefer>s` and `%<ignore>s` are used together.
43
43
  MSG
44
44
 
@@ -133,9 +133,9 @@ module RuboCop
133
133
 
134
134
  minimum_target_rails_version 4.1
135
135
 
136
- SPECIFY_MSG = 'Specify an `:inverse_of` option.'.freeze
136
+ SPECIFY_MSG = 'Specify an `:inverse_of` option.'
137
137
  NIL_MSG = 'You specified `inverse_of: nil`, you probably meant to ' \
138
- 'use `inverse_of: false`.'.freeze
138
+ 'use `inverse_of: false`.'
139
139
 
140
140
  def_node_matcher :association_recv_arguments, <<-PATTERN
141
141
  (send $_ {:has_many :has_one :belongs_to} _ $...)
@@ -83,7 +83,7 @@ module RuboCop
83
83
  # end
84
84
  # end
85
85
  class LexicallyScopedActionFilter < Cop
86
- MSG = '%<action>s not explicitly defined on the %<type>s.'.freeze
86
+ MSG = '%<action>s not explicitly defined on the %<type>s.'
87
87
 
88
88
  FILTERS = %w[
89
89
  :after_action
@@ -8,14 +8,20 @@ module RuboCop
8
8
  # risk as the loaded page will have control over the previous page
9
9
  # and could change its location for phishing purposes.
10
10
  #
11
+ # The option `rel: 'noreferrer'` also blocks this behavior
12
+ # and removes the http-referrer header.
13
+ #
11
14
  # @example
12
15
  # # bad
13
16
  # link_to 'Click here', url, target: '_blank'
14
17
  #
15
18
  # # good
16
19
  # link_to 'Click here', url, target: '_blank', rel: 'noopener'
20
+ #
21
+ # # good
22
+ # link_to 'Click here', url, target: '_blank', rel: 'noreferrer'
17
23
  class LinkToBlank < Cop
18
- MSG = 'Specify a `:rel` option containing noopener.'.freeze
24
+ MSG = 'Specify a `:rel` option containing noopener.'
19
25
 
20
26
  def_node_matcher :blank_target?, <<-PATTERN
21
27
  (pair {(sym :target) (str "target")} {(str "_blank") (sym :_blank)})
@@ -83,7 +89,8 @@ module RuboCop
83
89
  def contains_noopener?(value)
84
90
  return false unless value
85
91
 
86
- value.to_s.split(' ').include?('noopener')
92
+ rel_array = value.to_s.split(' ')
93
+ rel_array.include?('noopener') || rel_array.include?('noreferrer')
87
94
  end
88
95
  end
89
96
  end
@@ -17,7 +17,7 @@ module RuboCop
17
17
  # add_reference :products, :category
18
18
  # add_reference :products, :category, null: false, default: 1
19
19
  class NotNullColumn < Cop
20
- MSG = 'Do not add a NOT NULL column without a default value.'.freeze
20
+ MSG = 'Do not add a NOT NULL column without a default value.'
21
21
 
22
22
  def_node_matcher :add_not_null_column?, <<-PATTERN
23
23
  (send nil? :add_column _ _ _ (hash $...))
@@ -15,7 +15,7 @@ module RuboCop
15
15
  # Rails.logger.debug 'A debug message'
16
16
  class Output < Cop
17
17
  MSG = 'Do not write to stdout. ' \
18
- "Use Rails's logger if you want to log.".freeze
18
+ "Use Rails's logger if you want to log."
19
19
 
20
20
  def_node_matcher :output?, <<-PATTERN
21
21
  (send nil? {:ap :p :pp :pretty_print :print :puts} ...)
@@ -63,7 +63,7 @@ module RuboCop
63
63
  # # => ActiveSupport::SafeBuffer
64
64
  # # "&lt;b&gt;hi&lt;/b&gt; <span>&lt;b&gt;hi&lt;/b&gt;</span>"
65
65
  class OutputSafety < Cop
66
- MSG = 'Tagging a string as html safe may be a security risk.'.freeze
66
+ MSG = 'Tagging a string as html safe may be a security risk.'
67
67
 
68
68
  def on_send(node)
69
69
  return if non_interpolated_string?(node)
@@ -79,7 +79,7 @@ module RuboCop
79
79
  private
80
80
 
81
81
  def non_interpolated_string?(node)
82
- node.receiver && node.receiver.str_type? && !node.receiver.dstr_type?
82
+ node.receiver&.str_type? && !node.receiver.dstr_type?
83
83
  end
84
84
 
85
85
  def looks_like_rails_html_safe?(node)
@@ -26,7 +26,7 @@ module RuboCop
26
26
 
27
27
  PLURAL_DURATION_METHODS = SINGULAR_DURATION_METHODS.invert.freeze
28
28
 
29
- MSG = 'Prefer `%<number>s.%<correct>s`.'.freeze
29
+ MSG = 'Prefer `%<number>s.%<correct>s`.'
30
30
 
31
31
  def on_send(node)
32
32
  return unless duration_method?(node.method_name)
@@ -38,7 +38,7 @@ module RuboCop
38
38
  # # good
39
39
  # a.presence || b
40
40
  class Presence < Cop
41
- MSG = 'Use `%<prefer>s` instead of `%<current>s`.'.freeze
41
+ MSG = 'Use `%<prefer>s` instead of `%<current>s`.'
42
42
 
43
43
  def_node_matcher :redundant_receiver_and_other, <<-PATTERN
44
44
  {
@@ -44,11 +44,11 @@ module RuboCop
44
44
  # # good
45
45
  # something if foo.present?
46
46
  class Present < Cop
47
- MSG_NOT_BLANK = 'Use `%<prefer>s` instead of `%<current>s`.'.freeze
47
+ MSG_NOT_BLANK = 'Use `%<prefer>s` instead of `%<current>s`.'
48
48
  MSG_EXISTS_AND_NOT_EMPTY = 'Use `%<prefer>s` instead of ' \
49
- '`%<current>s`.'.freeze
49
+ '`%<current>s`.'
50
50
  MSG_UNLESS_BLANK = 'Use `if %<prefer>s` instead of ' \
51
- '`%<current>s`.'.freeze
51
+ '`%<current>s`.'
52
52
 
53
53
  def_node_matcher :exists_and_not_empty?, <<-PATTERN
54
54
  (and
@@ -24,7 +24,7 @@ module RuboCop
24
24
  # x = self[:attr]
25
25
  # self[:attr] = val
26
26
  class ReadWriteAttribute < Cop
27
- MSG = 'Prefer `%<prefer>s` over `%<current>s`.'.freeze
27
+ MSG = 'Prefer `%<prefer>s` over `%<current>s`.'
28
28
 
29
29
  def_node_matcher :read_write_attribute?, <<-PATTERN
30
30
  {
@@ -31,9 +31,9 @@ module RuboCop
31
31
 
32
32
  MSG_SAME =
33
33
  '`allow_nil` is redundant when `allow_blank` has the same value.'
34
- .freeze
34
+
35
35
  MSG_ALLOW_NIL_FALSE =
36
- '`allow_nil: false` is redundant when `allow_blank` is true.'.freeze
36
+ '`allow_nil: false` is redundant when `allow_blank` is true.'
37
37
 
38
38
  def on_send(node)
39
39
  return unless node.method_name == :validates
@@ -60,7 +60,7 @@ module RuboCop
60
60
 
61
61
  minimum_target_rails_version 4.2
62
62
 
63
- MSG = 'Redundant receiver in `with_options`.'.freeze
63
+ MSG = 'Redundant receiver in `with_options`.'
64
64
 
65
65
  def_node_matcher :with_options?, <<-PATTERN
66
66
  (block
@@ -14,7 +14,7 @@ module RuboCop
14
14
  # # good
15
15
  # has_many :accounts, class_name: 'Account'
16
16
  class ReflectionClassName < Cop
17
- MSG = 'Use a string value for `class_name`.'.freeze
17
+ MSG = 'Use a string value for `class_name`.'
18
18
 
19
19
  def_node_matcher :association_with_reflection, <<-PATTERN
20
20
  (send nil? {:has_many :has_one :belongs_to} _
@@ -18,7 +18,7 @@ module RuboCop
18
18
  # assert_not_equal true, false
19
19
  #
20
20
  class RefuteMethods < Cop
21
- MSG = 'Prefer `%<assert_method>s` over `%<refute_method>s`.'.freeze
21
+ MSG = 'Prefer `%<assert_method>s` over `%<refute_method>s`.'
22
22
 
23
23
  CORRECTIONS = {
24
24
  refute: 'assert_not',
@@ -22,7 +22,7 @@ module RuboCop
22
22
  include RangeHelp
23
23
 
24
24
  MSG = 'Do not assign %<method_name>s to constants as it ' \
25
- 'will be evaluated only once.'.freeze
25
+ 'will be evaluated only once.'
26
26
 
27
27
  def on_casgn(node)
28
28
  relative_date_assignment?(node) do |method_name|
@@ -33,7 +33,7 @@ module RuboCop
33
33
  def on_masgn(node)
34
34
  lhs, rhs = *node
35
35
 
36
- return unless rhs && rhs.array_type?
36
+ return unless rhs&.array_type?
37
37
 
38
38
  lhs.children.zip(rhs.children).each do |(name, value)|
39
39
  next unless name.casgn_type?
@@ -23,7 +23,7 @@ module RuboCop
23
23
  include ConfigurableEnforcedStyle
24
24
 
25
25
  MSG = 'Use `request.%<prefer>s` instead of ' \
26
- '`request.%<current>s`.'.freeze
26
+ '`request.%<current>s`.'
27
27
 
28
28
  def_node_matcher :referer?, <<-PATTERN
29
29
  (send (send nil? :request) {:referer :referrer})
@@ -126,7 +126,7 @@ module RuboCop
126
126
  #
127
127
  # @see https://api.rubyonrails.org/classes/ActiveRecord/Migration/CommandRecorder.html
128
128
  class ReversibleMigration < Cop
129
- MSG = '%<action>s is not reversible.'.freeze
129
+ MSG = '%<action>s is not reversible.'
130
130
  IRREVERSIBLE_CHANGE_TABLE_CALLS = %i[
131
131
  change change_default remove
132
132
  ].freeze
@@ -140,7 +140,7 @@ module RuboCop
140
140
  PATTERN
141
141
 
142
142
  def_node_matcher :change_column_default_call, <<-PATTERN
143
- (send nil? :change_column_default _ _ $...)
143
+ (send nil? :change_column_default {[(sym _) (sym _)] (splat _)} $...)
144
144
  PATTERN
145
145
 
146
146
  def_node_matcher :remove_column_call, <<-PATTERN
@@ -195,7 +195,7 @@ module RuboCop
195
195
 
196
196
  def check_change_column_default_node(node)
197
197
  change_column_default_call(node) do |args|
198
- unless all_hash_key?(args.first, :from, :to)
198
+ unless all_hash_key?(args.last, :from, :to)
199
199
  add_offense(
200
200
  node,
201
201
  message: format(
@@ -272,7 +272,7 @@ module RuboCop
272
272
  end
273
273
 
274
274
  def all_hash_key?(args, *keys)
275
- return false unless args && args.hash_type?
275
+ return false unless args&.hash_type?
276
276
 
277
277
  hash_keys = args.keys.map do |key|
278
278
  key.children.first.to_sym
@@ -4,8 +4,7 @@ module RuboCop
4
4
  module Cop
5
5
  module Rails
6
6
  # This cop converts usages of `try!` to `&.`. It can also be configured
7
- # to convert `try`. It will convert code to use safe navigation if the
8
- # target Ruby version is set to 2.3+
7
+ # to convert `try`. It will convert code to use safe navigation.
9
8
  #
10
9
  # @example
11
10
  # # ConvertTry: false
@@ -40,17 +39,14 @@ module RuboCop
40
39
  # foo&.bar(baz)
41
40
  # foo&.bar { |e| e.baz }
42
41
  class SafeNavigation < Cop
43
- extend TargetRubyVersion
44
42
  include RangeHelp
45
43
 
46
- MSG = 'Use safe navigation (`&.`) instead of `%<try>s`.'.freeze
44
+ MSG = 'Use safe navigation (`&.`) instead of `%<try>s`.'
47
45
 
48
46
  def_node_matcher :try_call, <<-PATTERN
49
47
  (send !nil? ${:try :try!} $_ ...)
50
48
  PATTERN
51
49
 
52
- minimum_target_ruby_version 2.3
53
-
54
50
  def on_send(node)
55
51
  try_call(node) do |try_method, dispatch|
56
52
  return if try_method == :try && !cop_config['ConvertTry']
@@ -100,12 +100,12 @@ module RuboCop
100
100
  include NegativeConditional
101
101
 
102
102
  MSG = 'Use `%<prefer>s` instead of `%<current>s` if the return ' \
103
- 'value is not checked.'.freeze
103
+ 'value is not checked.'
104
104
  CREATE_MSG = (MSG +
105
105
  ' Or check `persisted?` on model returned from ' \
106
106
  '`%<current>s`.').freeze
107
107
  CREATE_CONDITIONAL_MSG = '`%<current>s` returns a model which is ' \
108
- 'always truthy.'.freeze
108
+ 'always truthy.'
109
109
 
110
110
  CREATE_PERSIST_METHODS = %i[create
111
111
  first_or_create find_or_create_by].freeze
@@ -129,7 +129,7 @@ module RuboCop
129
129
  def check_assignment(assignment)
130
130
  node = right_assignment_node(assignment)
131
131
 
132
- return unless node && node.send_type?
132
+ return unless node&.send_type?
133
133
  return unless persist_method?(node, CREATE_PERSIST_METHODS)
134
134
  return if persisted_referenced?(assignment)
135
135
 
@@ -167,7 +167,7 @@ module RuboCop
167
167
  def right_assignment_node(assignment)
168
168
  node = assignment.node.child_nodes.first
169
169
 
170
- return node unless node && node.block_type?
170
+ return node unless node&.block_type?
171
171
 
172
172
  node.send_node
173
173
  end
@@ -195,17 +195,17 @@ module RuboCop
195
195
 
196
196
  def hash_parent(node)
197
197
  pair = node.parent
198
- return unless pair && pair.pair_type?
198
+ return unless pair&.pair_type?
199
199
 
200
200
  hash = pair.parent
201
- return unless hash && hash.hash_type?
201
+ return unless hash&.hash_type?
202
202
 
203
203
  hash
204
204
  end
205
205
 
206
206
  def array_parent(node)
207
207
  array = node.parent
208
- return unless array && array.array_type?
208
+ return unless array&.array_type?
209
209
 
210
210
  array
211
211
  end
@@ -293,7 +293,7 @@ module RuboCop
293
293
 
294
294
  def return_value_assigned?(node)
295
295
  assignment = assignable_node(node).parent
296
- assignment && assignment.lvasgn_type?
296
+ assignment&.lvasgn_type?
297
297
  end
298
298
 
299
299
  def persist_method?(node, methods = PERSIST_METHODS)