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
@@ -14,7 +14,7 @@ module RuboCop
14
14
  # # good
15
15
  # scope :something, -> { where(something: true) }
16
16
  class ScopeArgs < Cop
17
- MSG = 'Use `lambda`/`proc` instead of a plain method call.'.freeze
17
+ MSG = 'Use `lambda`/`proc` instead of a plain method call.'
18
18
 
19
19
  def_node_matcher :scope?, '(send nil? :scope _ $send)'
20
20
 
@@ -36,7 +36,7 @@ module RuboCop
36
36
  # user.touch
37
37
  #
38
38
  class SkipsModelValidations < Cop
39
- MSG = 'Avoid using `%<method>s` because it skips validations.'.freeze
39
+ MSG = 'Avoid using `%<method>s` because it skips validations.'
40
40
 
41
41
  METHODS_WITH_ARGUMENTS = %w[decrement!
42
42
  decrement_counter
@@ -6,7 +6,7 @@ module RuboCop
6
6
  # This cop checks for the use of Time methods without zone.
7
7
  #
8
8
  # Built on top of Ruby on Rails style guide (https://github.com/rubocop-hq/rails-style-guide#time)
9
- # and the article http://danilenko.org/2012/7/6/rails_timezones/ .
9
+ # and the article http://danilenko.org/2012/7/6/rails_timezones/
10
10
  #
11
11
  # Two styles are supported for this cop. When EnforcedStyle is 'strict'
12
12
  # then only use of Time.zone is allowed.
@@ -47,52 +47,69 @@ module RuboCop
47
47
  include ConfigurableEnforcedStyle
48
48
 
49
49
  MSG = 'Do not use `%<current>s` without zone. Use `%<prefer>s` ' \
50
- 'instead.'.freeze
50
+ 'instead.'
51
51
 
52
52
  MSG_ACCEPTABLE = 'Do not use `%<current>s` without zone. ' \
53
- 'Use one of %<prefer>s instead.'.freeze
53
+ 'Use one of %<prefer>s instead.'
54
54
 
55
55
  MSG_LOCALTIME = 'Do not use `Time.localtime` without ' \
56
- 'offset or zone.'.freeze
56
+ 'offset or zone.'
57
57
 
58
- MSG_CURRENT = 'Do not use `%<current>s`. Use `Time.zone.now` ' \
59
- 'instead.'.freeze
60
-
61
- TIMECLASS = %i[Time DateTime].freeze
58
+ TIMECLASSES = %i[Time DateTime].freeze
62
59
 
63
60
  GOOD_METHODS = %i[zone zone_default find_zone find_zone!].freeze
64
61
 
65
- DANGEROUS_METHODS = %i[now local new
66
- parse at current].freeze
62
+ DANGEROUS_METHODS = %i[now local new parse at current].freeze
67
63
 
68
- ACCEPTED_METHODS = %i[in_time_zone utc getlocal
69
- xmlschema iso8601 jisx0301 rfc3339
70
- httpdate to_i to_f].freeze
64
+ ACCEPTED_METHODS = %i[in_time_zone utc getlocal xmlschema iso8601
65
+ jisx0301 rfc3339 httpdate to_i to_f].freeze
71
66
 
72
67
  def on_const(node)
73
68
  mod, klass = *node
74
- # we should only check core class
75
- # (`DateTime`/`Time` or `::Date`/`::DateTime`)
69
+ # we should only check core classes
70
+ # (`DateTime`, `Time`, `::DateTime` or `::Time`)
76
71
  return unless (mod.nil? || mod.cbase_type?) && method_send?(node)
77
72
 
78
- check_time_node(klass, node.parent) if TIMECLASS.include?(klass)
73
+ check_time_node(klass, node.parent) if TIMECLASSES.include?(klass)
79
74
  end
80
75
 
81
76
  def autocorrect(node)
82
77
  lambda do |corrector|
83
- if acceptable?
84
- corrector.insert_after(node.source_range, '.in_time_zone')
85
- else
86
- corrector.insert_after(node.children[0].source_range, '.zone')
78
+ # add `.zone`: `Time.at` => `Time.zone.at`
79
+ corrector.insert_after(node.children[0].source_range, '.zone')
80
+ # replace `Time.zone.current` => `Time.zone.now`
81
+ if node.method_name == :current
82
+ corrector.replace(node.loc.selector, 'now')
83
+ end
84
+ # prefer `Time` over `DateTime` class
85
+ if strict?
86
+ corrector.replace(node.children.first.source_range, 'Time')
87
87
  end
88
+ remove_redundant_in_time_zone(corrector, node)
88
89
  end
89
90
  end
90
91
 
91
92
  private
92
93
 
94
+ # remove redundant `.in_time_zone` from `Time.zone.now.in_time_zone`
95
+ def remove_redundant_in_time_zone(corrector, node)
96
+ time_methods_called = extract_method_chain(node)
97
+ return unless time_methods_called.include?(:in_time_zone) ||
98
+ time_methods_called.include?(:zone)
99
+
100
+ while node&.send_type?
101
+ if node.children.last == :in_time_zone
102
+ in_time_zone_with_dot =
103
+ node.loc.selector.adjust(begin_pos: -1)
104
+ corrector.remove(in_time_zone_with_dot)
105
+ end
106
+ node = node.parent
107
+ end
108
+ end
109
+
93
110
  def check_time_node(klass, node)
94
111
  chain = extract_method_chain(node)
95
- return if danger_chain?(chain)
112
+ return if not_danger_chain?(chain)
96
113
 
97
114
  return check_localtime(node) if need_check_localtime?(chain)
98
115
 
@@ -105,17 +122,13 @@ module RuboCop
105
122
  add_offense(node, location: :selector, message: message)
106
123
  end
107
124
 
108
- # rubocop:disable Metrics/MethodLength
109
125
  def build_message(klass, method_name, node)
110
- if acceptable?
126
+ if flexible?
111
127
  format(
112
128
  MSG_ACCEPTABLE,
113
129
  current: "#{klass}.#{method_name}",
114
130
  prefer: acceptable_methods(klass, method_name, node).join(', ')
115
131
  )
116
- elsif method_name == 'current'
117
- format(MSG_CURRENT,
118
- current: "#{klass}.#{method_name}")
119
132
  else
120
133
  safe_method_name = safe_method(method_name, node)
121
134
  format(MSG,
@@ -123,7 +136,6 @@ module RuboCop
123
136
  prefer: "Time.zone.#{safe_method_name}")
124
137
  end
125
138
  end
126
- # rubocop:enable Metrics/MethodLength
127
139
 
128
140
  def extract_method_chain(node)
129
141
  chain = []
@@ -141,32 +153,30 @@ module RuboCop
141
153
  if (receiver.is_a? RuboCop::AST::Node) && !receiver.cbase_type?
142
154
  method_from_time_class?(receiver)
143
155
  else
144
- TIMECLASS.include? method_name
156
+ TIMECLASSES.include?(method_name)
145
157
  end
146
158
  end
147
159
 
148
160
  # checks that parent node of send_type
149
161
  # and receiver is the given node
150
162
  def method_send?(node)
151
- return false unless node.parent && node.parent.send_type?
163
+ return false unless node.parent&.send_type?
152
164
 
153
165
  node.parent.receiver == node
154
166
  end
155
167
 
156
168
  def safe_method(method_name, node)
157
- return method_name unless method_name == 'new'
158
-
159
- if node.arguments?
160
- 'local'
169
+ if %w[new current].include?(method_name)
170
+ node.arguments? ? 'local' : 'now'
161
171
  else
162
- 'now'
172
+ method_name
163
173
  end
164
174
  end
165
175
 
166
176
  def check_localtime(node)
167
177
  selector_node = node
168
178
 
169
- while node && node.send_type?
179
+ while node&.send_type?
170
180
  break if node.method_name == :localtime
171
181
 
172
182
  node = node.parent
@@ -178,20 +188,24 @@ module RuboCop
178
188
  location: :selector, message: MSG_LOCALTIME)
179
189
  end
180
190
 
181
- def danger_chain?(chain)
191
+ def not_danger_chain?(chain)
182
192
  (chain & DANGEROUS_METHODS).empty? || !(chain & good_methods).empty?
183
193
  end
184
194
 
185
195
  def need_check_localtime?(chain)
186
- acceptable? && chain.include?(:localtime)
196
+ flexible? && chain.include?(:localtime)
187
197
  end
188
198
 
189
- def acceptable?
199
+ def flexible?
190
200
  style == :flexible
191
201
  end
192
202
 
203
+ def strict?
204
+ style == :strict
205
+ end
206
+
193
207
  def good_methods
194
- if style == :strict
208
+ if strict?
195
209
  GOOD_METHODS
196
210
  else
197
211
  GOOD_METHODS + [:current] + ACCEPTED_METHODS
@@ -46,10 +46,10 @@ module RuboCop
46
46
  include ConfigurableEnforcedStyle
47
47
  include RangeHelp
48
48
 
49
- MSG = 'Use `%<method>s` before `pluck`.'.freeze
50
- NEWLINE = "\n".freeze
49
+ MSG = 'Use `%<method>s` before `pluck`.'
50
+ NEWLINE = "\n"
51
51
  PATTERN = '[!^block (send (send %<type>s :pluck ...) ' \
52
- '${:uniq :distinct} ...)]'.freeze
52
+ '${:uniq :distinct} ...)]'
53
53
 
54
54
  def_node_matcher :conservative_node_match,
55
55
  format(PATTERN, type: 'const')
@@ -15,9 +15,9 @@ module RuboCop
15
15
  class UnknownEnv < Cop
16
16
  include NameSimilarity
17
17
 
18
- MSG = 'Unknown environment `%<name>s`.'.freeze
18
+ MSG = 'Unknown environment `%<name>s`.'
19
19
  MSG_SIMILAR = 'Unknown environment `%<name>s`. ' \
20
- 'Did you mean `%<similar>s`?'.freeze
20
+ 'Did you mean `%<similar>s`?'
21
21
 
22
22
  def_node_matcher :unknown_environment?, <<-PATTERN
23
23
  (send
@@ -34,7 +34,7 @@ module RuboCop
34
34
  #
35
35
  class Validation < Cop
36
36
  MSG = 'Prefer the new style validations `%<prefer>s` over ' \
37
- '`%<current>s`.'.freeze
37
+ '`%<current>s`.'
38
38
 
39
39
  TYPES = %w[
40
40
  acceptance
@@ -6,7 +6,7 @@ module RuboCop
6
6
  # refer to two or more cops under different departments
7
7
  class AmbiguousCopName < RuboCop::Error
8
8
  MSG = 'Ambiguous cop name `%<name>s` used in %<origin>s needs ' \
9
- 'department qualifier. Did you mean %<options>s?'.freeze
9
+ 'department qualifier. Did you mean %<options>s?'
10
10
 
11
11
  def initialize(name, origin, badges)
12
12
  super(
@@ -12,7 +12,7 @@ module RuboCop
12
12
  # eval(something)
13
13
  # binding.eval(something)
14
14
  class Eval < Cop
15
- MSG = 'The use of `eval` is a serious security risk.'.freeze
15
+ MSG = 'The use of `eval` is a serious security risk.'
16
16
 
17
17
  def_node_matcher :eval?, <<-PATTERN
18
18
  (send {nil? (send nil? :binding)} :eval $!str ...)
@@ -23,7 +23,7 @@ module RuboCop
23
23
  # JSON.parse("{}")
24
24
  #
25
25
  class JSONLoad < Cop
26
- MSG = 'Prefer `JSON.parse` over `JSON.%<method>s`.'.freeze
26
+ MSG = 'Prefer `JSON.parse` over `JSON.%<method>s`.'
27
27
 
28
28
  def_node_matcher :json_load, <<-PATTERN
29
29
  (send (const {nil? cbase} :JSON) ${:load :restore} ...)
@@ -19,7 +19,7 @@ module RuboCop
19
19
  # Marshal.load(Marshal.dump({}))
20
20
  #
21
21
  class MarshalLoad < Cop
22
- MSG = 'Avoid using `Marshal.%<method>s`.'.freeze
22
+ MSG = 'Avoid using `Marshal.%<method>s`.'
23
23
 
24
24
  def_node_matcher :marshal_load, <<-PATTERN
25
25
  (send (const {nil? cbase} :Marshal) ${:load :restore}
@@ -20,7 +20,7 @@ module RuboCop
20
20
  # IO.popen(something)
21
21
  # URI.parse(something).open
22
22
  class Open < Cop
23
- MSG = 'The use of `Kernel#open` is a serious security risk.'.freeze
23
+ MSG = 'The use of `Kernel#open` is a serious security risk.'
24
24
 
25
25
  def_node_matcher :open?, <<-PATTERN
26
26
  (send nil? :open $!str ...)
@@ -16,7 +16,7 @@ module RuboCop
16
16
  # YAML.dump("foo")
17
17
  #
18
18
  class YAMLLoad < Cop
19
- MSG = 'Prefer using `YAML.safe_load` over `YAML.load`.'.freeze
19
+ MSG = 'Prefer using `YAML.safe_load` over `YAML.load`.'
20
20
 
21
21
  def_node_matcher :yaml_load, <<-PATTERN
22
22
  (send (const {nil? cbase} :YAML) :load ...)
@@ -25,11 +25,11 @@ module RuboCop
25
25
  class Alias < Cop
26
26
  include ConfigurableEnforcedStyle
27
27
 
28
- MSG_ALIAS = 'Use `alias_method` instead of `alias`.'.freeze
28
+ MSG_ALIAS = 'Use `alias_method` instead of `alias`.'
29
29
  MSG_ALIAS_METHOD = 'Use `alias` instead of `alias_method` ' \
30
- '%<current>s.'.freeze
30
+ '%<current>s.'
31
31
  MSG_SYMBOL_ARGS = 'Use `alias %<prefer>s` instead of ' \
32
- '`alias %<current>s`.'.freeze
32
+ '`alias %<current>s`.'
33
33
 
34
34
  def on_send(node)
35
35
  return unless node.command?(:alias_method)
@@ -40,7 +40,7 @@ module RuboCop
40
40
  include ConfigurableEnforcedStyle
41
41
  include RangeHelp
42
42
 
43
- MSG = 'Use `%<prefer>s` instead of `%<current>s`.'.freeze
43
+ MSG = 'Use `%<prefer>s` instead of `%<current>s`.'
44
44
 
45
45
  def on_and(node)
46
46
  process_logical_operator(node) if style == :always
@@ -18,7 +18,7 @@ module RuboCop
18
18
  # %w(foo bar baz).join(",")
19
19
  #
20
20
  class ArrayJoin < Cop
21
- MSG = 'Favor `Array#join` over `Array#*`.'.freeze
21
+ MSG = 'Favor `Array#join` over `Array#*`.'
22
22
 
23
23
  def_node_matcher :join_candidate?, '(send $array :* $str)'
24
24
 
@@ -18,7 +18,7 @@ module RuboCop
18
18
  class AsciiComments < Cop
19
19
  include RangeHelp
20
20
 
21
- MSG = 'Use only ascii symbols in comments.'.freeze
21
+ MSG = 'Use only ascii symbols in comments.'
22
22
 
23
23
  def investigate(processed_source)
24
24
  processed_source.each_comment do |comment|
@@ -17,7 +17,7 @@ module RuboCop
17
17
  class Attr < Cop
18
18
  include RangeHelp
19
19
 
20
- MSG = 'Do not use `attr`. Use `%<replacement>s` instead.'.freeze
20
+ MSG = 'Do not use `attr`. Use `%<replacement>s` instead.'
21
21
 
22
22
  def on_send(node)
23
23
  return unless node.command?(:attr) && node.arguments?
@@ -17,7 +17,7 @@ module RuboCop
17
17
  # # ...
18
18
  # end
19
19
  class AutoResourceCleanup < Cop
20
- MSG = 'Use the block version of `%<class>s.%<method>s`.'.freeze
20
+ MSG = 'Use the block version of `%<class>s.%<method>s`.'
21
21
 
22
22
  TARGET_METHODS = {
23
23
  File: :open
@@ -26,7 +26,7 @@ module RuboCop
26
26
  class BarePercentLiterals < Cop
27
27
  include ConfigurableEnforcedStyle
28
28
 
29
- MSG = 'Use `%%%<good>s` instead of `%%%<bad>s`.'.freeze
29
+ MSG = 'Use `%%%<good>s` instead of `%%%<bad>s`.'
30
30
 
31
31
  def on_dstr(node)
32
32
  check(node)
@@ -11,7 +11,7 @@ module RuboCop
11
11
  # BEGIN { test }
12
12
  #
13
13
  class BeginBlock < Cop
14
- MSG = 'Avoid the use of `BEGIN` blocks.'.freeze
14
+ MSG = 'Avoid the use of `BEGIN` blocks.'
15
15
 
16
16
  def on_preexe(node)
17
17
  add_offense(node, location: :keyword)
@@ -19,7 +19,7 @@ module RuboCop
19
19
  class BlockComments < Cop
20
20
  include RangeHelp
21
21
 
22
- MSG = 'Do not use block comments.'.freeze
22
+ MSG = 'Do not use block comments.'
23
23
  BEGIN_LENGTH = "=begin\n".length
24
24
  END_LENGTH = "\n=end".length
25
25
 
@@ -111,7 +111,6 @@ module RuboCop
111
111
  include IgnoredMethods
112
112
 
113
113
  ALWAYS_BRACES_MESSAGE = 'Prefer `{...}` over `do...end` for blocks.'
114
- .freeze
115
114
 
116
115
  def on_send(node)
117
116
  return unless node.arguments?
@@ -43,7 +43,7 @@ module RuboCop
43
43
  include ConfigurableEnforcedStyle
44
44
  include RangeHelp
45
45
 
46
- MSG = '%<type>s curly braces around a hash parameter.'.freeze
46
+ MSG = '%<type>s curly braces around a hash parameter.'
47
47
 
48
48
  def on_send(node)
49
49
  return if node.assignment_method? || node.operator_method?
@@ -17,7 +17,7 @@ module RuboCop
17
17
  # some_string =~ /something/
18
18
  #
19
19
  class CaseEquality < Cop
20
- MSG = 'Avoid the use of the case equality operator `===`.'.freeze
20
+ MSG = 'Avoid the use of the case equality operator `===`.'
21
21
 
22
22
  def_node_matcher :case_equality?, '(send _ :=== _)'
23
23
 
@@ -18,7 +18,7 @@ module RuboCop
18
18
  include StringHelp
19
19
 
20
20
  MSG = 'Do not use the character literal - ' \
21
- 'use string literal instead.'.freeze
21
+ 'use string literal instead.'
22
22
 
23
23
  def offense?(node)
24
24
  # we don't register an offense for things like ?\C-\M-d
@@ -26,9 +26,9 @@ module RuboCop
26
26
  include RangeHelp
27
27
 
28
28
  NESTED_MSG = 'Use nested module/class definitions instead of ' \
29
- 'compact style.'.freeze
29
+ 'compact style.'
30
30
  COMPACT_MSG = 'Use compact module/class definition instead of ' \
31
- 'nested style.'.freeze
31
+ 'nested style.'
32
32
 
33
33
  def on_class(node)
34
34
  return if node.parent_class && style != :nested
@@ -68,20 +68,20 @@ module RuboCop
68
68
  end
69
69
 
70
70
  def replace_keyword_with_module(corrector, node)
71
- corrector.replace(node.loc.keyword, 'module'.freeze)
71
+ corrector.replace(node.loc.keyword, 'module')
72
72
  end
73
73
 
74
74
  def split_on_double_colon(corrector, node, padding)
75
75
  children_definition = node.children.first
76
76
  range = range_between(children_definition.loc.double_colon.begin_pos,
77
77
  children_definition.loc.double_colon.end_pos)
78
- replacement = "\n#{padding}#{node.loc.keyword.source} ".freeze
78
+ replacement = "\n#{padding}#{node.loc.keyword.source} "
79
79
 
80
80
  corrector.replace(range, replacement)
81
81
  end
82
82
 
83
83
  def add_trailing_end(corrector, node, padding)
84
- replacement = "#{padding}end\n#{leading_spaces(node)}end".freeze
84
+ replacement = "#{padding}end\n#{leading_spaces(node)}end"
85
85
  corrector.replace(node.loc.end, replacement)
86
86
  end
87
87