rubocop 0.68.1 → 0.69.0

Sign up to get free protection for your applications and to get access to all the features.
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)