rubocop 0.71.0 → 0.75.1

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 (280) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +5 -8
  3. data/bin/console +1 -0
  4. data/config/default.yml +84 -488
  5. data/lib/rubocop.rb +16 -54
  6. data/lib/rubocop/ast/builder.rb +2 -0
  7. data/lib/rubocop/ast/node.rb +9 -15
  8. data/lib/rubocop/ast/node/float_node.rb +12 -0
  9. data/lib/rubocop/ast/node/int_node.rb +12 -0
  10. data/lib/rubocop/ast/node/mixin/method_dispatch_node.rb +4 -4
  11. data/lib/rubocop/ast/node/mixin/numeric_node.rb +21 -0
  12. data/lib/rubocop/ast/node/resbody_node.rb +1 -6
  13. data/lib/rubocop/ast/traversal.rb +3 -3
  14. data/lib/rubocop/cached_data.rb +1 -1
  15. data/lib/rubocop/comment_config.rb +3 -2
  16. data/lib/rubocop/config.rb +21 -508
  17. data/lib/rubocop/config_loader.rb +22 -8
  18. data/lib/rubocop/config_loader_resolver.rb +2 -16
  19. data/lib/rubocop/config_obsoletion.rb +213 -0
  20. data/lib/rubocop/config_validator.rb +239 -0
  21. data/lib/rubocop/cop/autocorrect_logic.rb +71 -1
  22. data/lib/rubocop/cop/bundler/insecure_protocol_source.rb +1 -1
  23. data/lib/rubocop/cop/bundler/ordered_gems.rb +1 -1
  24. data/lib/rubocop/cop/commissioner.rb +3 -9
  25. data/lib/rubocop/cop/cop.rb +39 -12
  26. data/lib/rubocop/cop/corrector.rb +2 -3
  27. data/lib/rubocop/cop/correctors/alignment_corrector.rb +43 -17
  28. data/lib/rubocop/cop/correctors/empty_line_corrector.rb +2 -2
  29. data/lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb +2 -2
  30. data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +1 -1
  31. data/lib/rubocop/cop/gemspec/duplicated_assignment.rb +2 -2
  32. data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +1 -1
  33. data/lib/rubocop/cop/gemspec/required_ruby_version.rb +1 -1
  34. data/lib/rubocop/cop/gemspec/ruby_version_globals_usage.rb +55 -0
  35. data/lib/rubocop/cop/generator.rb +4 -4
  36. data/lib/rubocop/cop/generator/configuration_injector.rb +9 -4
  37. data/lib/rubocop/cop/generator/require_file_injector.rb +1 -1
  38. data/lib/rubocop/cop/internal_affairs/node_destructuring.rb +2 -2
  39. data/lib/rubocop/cop/internal_affairs/node_type_predicate.rb +1 -1
  40. data/lib/rubocop/cop/internal_affairs/offense_location_keyword.rb +2 -2
  41. data/lib/rubocop/cop/internal_affairs/redundant_location_argument.rb +1 -1
  42. data/lib/rubocop/cop/internal_affairs/redundant_message_argument.rb +2 -2
  43. data/lib/rubocop/cop/internal_affairs/useless_message_assertion.rb +2 -2
  44. data/lib/rubocop/cop/layout/block_alignment.rb +3 -3
  45. data/lib/rubocop/cop/layout/class_structure.rb +2 -2
  46. data/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +1 -1
  47. data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +22 -7
  48. data/lib/rubocop/cop/layout/empty_line_after_magic_comment.rb +2 -2
  49. data/lib/rubocop/cop/layout/empty_lines_around_class_body.rb +2 -2
  50. data/lib/rubocop/cop/layout/extra_spacing.rb +14 -59
  51. data/lib/rubocop/cop/layout/indent_assignment.rb +10 -1
  52. data/lib/rubocop/cop/layout/indent_first_argument.rb +7 -3
  53. data/lib/rubocop/cop/layout/indent_first_parameter.rb +7 -3
  54. data/lib/rubocop/cop/layout/indent_heredoc.rb +4 -4
  55. data/lib/rubocop/cop/layout/indentation_consistency.rb +13 -12
  56. data/lib/rubocop/cop/layout/indentation_width.rb +28 -10
  57. data/lib/rubocop/cop/layout/leading_comment_space.rb +28 -0
  58. data/lib/rubocop/cop/layout/multiline_block_layout.rb +24 -2
  59. data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +18 -4
  60. data/lib/rubocop/cop/layout/space_around_block_parameters.rb +5 -1
  61. data/lib/rubocop/cop/layout/space_around_operators.rb +42 -23
  62. data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +1 -1
  63. data/lib/rubocop/cop/layout/space_inside_block_braces.rb +21 -2
  64. data/lib/rubocop/cop/layout/space_inside_string_interpolation.rb +24 -40
  65. data/lib/rubocop/cop/layout/tab.rb +10 -22
  66. data/lib/rubocop/cop/lint/assignment_in_condition.rb +17 -4
  67. data/lib/rubocop/cop/lint/big_decimal_new.rb +1 -1
  68. data/lib/rubocop/cop/lint/debugger.rb +4 -6
  69. data/lib/rubocop/cop/lint/duplicate_methods.rb +3 -3
  70. data/lib/rubocop/cop/lint/each_with_object_argument.rb +1 -1
  71. data/lib/rubocop/cop/lint/empty_interpolation.rb +4 -4
  72. data/lib/rubocop/cop/lint/erb_new_arguments.rb +57 -1
  73. data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +11 -37
  74. data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +1 -1
  75. data/lib/rubocop/cop/lint/inherit_exception.rb +1 -1
  76. data/lib/rubocop/cop/lint/literal_in_interpolation.rb +7 -8
  77. data/lib/rubocop/cop/lint/multiple_compare.rb +1 -1
  78. data/lib/rubocop/cop/lint/nested_method_definition.rb +3 -3
  79. data/lib/rubocop/cop/lint/next_without_accumulator.rb +1 -1
  80. data/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +1 -1
  81. data/lib/rubocop/cop/lint/number_conversion.rb +4 -4
  82. data/lib/rubocop/cop/lint/rand_one.rb +1 -1
  83. data/lib/rubocop/cop/lint/redundant_with_index.rb +1 -1
  84. data/lib/rubocop/cop/lint/redundant_with_object.rb +1 -1
  85. data/lib/rubocop/cop/lint/safe_navigation_chain.rb +5 -5
  86. data/lib/rubocop/cop/lint/safe_navigation_with_empty.rb +1 -1
  87. data/lib/rubocop/cop/lint/send_with_mixin_argument.rb +91 -0
  88. data/lib/rubocop/cop/lint/string_conversion_in_interpolation.rb +6 -6
  89. data/lib/rubocop/cop/lint/unified_integer.rb +1 -1
  90. data/lib/rubocop/cop/lint/unneeded_cop_disable_directive.rb +1 -1
  91. data/lib/rubocop/cop/lint/unneeded_require_statement.rb +1 -1
  92. data/lib/rubocop/cop/lint/unneeded_splat_expansion.rb +7 -2
  93. data/lib/rubocop/cop/lint/unreachable_code.rb +1 -1
  94. data/lib/rubocop/cop/lint/unused_block_argument.rb +22 -6
  95. data/lib/rubocop/cop/lint/unused_method_argument.rb +23 -5
  96. data/lib/rubocop/cop/lint/uri_escape_unescape.rb +1 -1
  97. data/lib/rubocop/cop/lint/uri_regexp.rb +2 -2
  98. data/lib/rubocop/cop/lint/useless_access_modifier.rb +6 -6
  99. data/lib/rubocop/cop/lint/useless_setter_call.rb +1 -1
  100. data/lib/rubocop/cop/lint/void.rb +3 -22
  101. data/lib/rubocop/cop/message_annotator.rb +16 -7
  102. data/lib/rubocop/cop/metrics/class_length.rb +1 -1
  103. data/lib/rubocop/cop/metrics/line_length.rb +6 -0
  104. data/lib/rubocop/cop/metrics/module_length.rb +1 -1
  105. data/lib/rubocop/cop/metrics/parameter_lists.rb +1 -1
  106. data/lib/rubocop/cop/migration/department_name.rb +44 -0
  107. data/lib/rubocop/cop/mixin/alignment.rb +1 -1
  108. data/lib/rubocop/cop/mixin/def_node.rb +1 -1
  109. data/lib/rubocop/cop/mixin/documentation_comment.rb +0 -2
  110. data/lib/rubocop/cop/mixin/empty_parameter.rb +1 -1
  111. data/lib/rubocop/cop/mixin/enforce_superclass.rb +4 -4
  112. data/lib/rubocop/cop/mixin/frozen_string_literal.rb +1 -1
  113. data/lib/rubocop/cop/mixin/interpolation.rb +27 -0
  114. data/lib/rubocop/cop/mixin/method_complexity.rb +1 -1
  115. data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +3 -3
  116. data/lib/rubocop/cop/mixin/preceding_following_alignment.rb +87 -0
  117. data/lib/rubocop/cop/mixin/safe_mode.rb +2 -0
  118. data/lib/rubocop/cop/mixin/surrounding_space.rb +7 -5
  119. data/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +1 -1
  120. data/lib/rubocop/cop/naming/constant_name.rb +2 -2
  121. data/lib/rubocop/cop/naming/method_name.rb +12 -1
  122. data/lib/rubocop/cop/naming/predicate_name.rb +1 -1
  123. data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +21 -20
  124. data/lib/rubocop/cop/naming/variable_name.rb +1 -0
  125. data/lib/rubocop/cop/offense.rb +18 -7
  126. data/lib/rubocop/cop/registry.rb +22 -1
  127. data/lib/rubocop/cop/security/eval.rb +1 -1
  128. data/lib/rubocop/cop/security/json_load.rb +1 -1
  129. data/lib/rubocop/cop/security/marshal_load.rb +1 -1
  130. data/lib/rubocop/cop/security/open.rb +1 -1
  131. data/lib/rubocop/cop/security/yaml_load.rb +1 -1
  132. data/lib/rubocop/cop/style/access_modifier_declarations.rb +1 -0
  133. data/lib/rubocop/cop/style/alias.rb +1 -1
  134. data/lib/rubocop/cop/style/block_delimiters.rb +2 -1
  135. data/lib/rubocop/cop/style/braces_around_hash_parameters.rb +29 -10
  136. data/lib/rubocop/cop/style/class_and_module_children.rb +1 -1
  137. data/lib/rubocop/cop/style/colon_method_call.rb +1 -1
  138. data/lib/rubocop/cop/style/commented_keyword.rb +16 -30
  139. data/lib/rubocop/cop/style/conditional_assignment.rb +8 -9
  140. data/lib/rubocop/cop/style/constant_visibility.rb +14 -3
  141. data/lib/rubocop/cop/style/date_time.rb +3 -3
  142. data/lib/rubocop/cop/style/dir.rb +1 -1
  143. data/lib/rubocop/cop/style/documentation_method.rb +45 -1
  144. data/lib/rubocop/cop/style/double_cop_disable_directive.rb +55 -0
  145. data/lib/rubocop/cop/style/each_for_simple_loop.rb +1 -1
  146. data/lib/rubocop/cop/style/each_with_object.rb +1 -1
  147. data/lib/rubocop/cop/style/eval_with_location.rb +2 -2
  148. data/lib/rubocop/cop/style/even_odd.rb +1 -1
  149. data/lib/rubocop/cop/style/expand_path_arguments.rb +4 -4
  150. data/lib/rubocop/cop/style/float_division.rb +94 -0
  151. data/lib/rubocop/cop/style/format_string.rb +13 -9
  152. data/lib/rubocop/cop/style/format_string_token.rb +18 -69
  153. data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +18 -33
  154. data/lib/rubocop/cop/style/guard_clause.rb +39 -10
  155. data/lib/rubocop/cop/style/hash_syntax.rb +2 -2
  156. data/lib/rubocop/cop/style/if_inside_else.rb +42 -0
  157. data/lib/rubocop/cop/style/if_unless_modifier.rb +51 -15
  158. data/lib/rubocop/cop/style/infinite_loop.rb +1 -1
  159. data/lib/rubocop/cop/style/inverse_methods.rb +2 -2
  160. data/lib/rubocop/cop/style/lambda.rb +0 -2
  161. data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +32 -26
  162. data/lib/rubocop/cop/style/min_max.rb +1 -1
  163. data/lib/rubocop/cop/style/mixin_usage.rb +12 -2
  164. data/lib/rubocop/cop/style/multiline_memoization.rb +1 -1
  165. data/lib/rubocop/cop/style/multiline_when_then.rb +55 -0
  166. data/lib/rubocop/cop/style/multiple_comparison.rb +1 -1
  167. data/lib/rubocop/cop/style/mutable_constant.rb +3 -3
  168. data/lib/rubocop/cop/style/nested_modifier.rb +18 -2
  169. data/lib/rubocop/cop/style/numeric_predicate.rb +3 -3
  170. data/lib/rubocop/cop/style/option_hash.rb +1 -1
  171. data/lib/rubocop/cop/style/or_assignment.rb +8 -3
  172. data/lib/rubocop/cop/style/parentheses_around_condition.rb +15 -1
  173. data/lib/rubocop/cop/style/random_with_offset.rb +6 -6
  174. data/lib/rubocop/cop/style/redundant_conditional.rb +2 -2
  175. data/lib/rubocop/cop/style/redundant_exception.rb +2 -2
  176. data/lib/rubocop/cop/style/redundant_freeze.rb +1 -1
  177. data/lib/rubocop/cop/style/redundant_parentheses.rb +15 -6
  178. data/lib/rubocop/cop/style/redundant_return.rb +12 -0
  179. data/lib/rubocop/cop/style/redundant_self.rb +18 -1
  180. data/lib/rubocop/cop/style/redundant_sort_by.rb +1 -1
  181. data/lib/rubocop/cop/style/rescue_modifier.rb +24 -0
  182. data/lib/rubocop/cop/style/rescue_standard_error.rb +2 -2
  183. data/lib/rubocop/cop/style/return_nil.rb +1 -1
  184. data/lib/rubocop/cop/style/safe_navigation.rb +19 -2
  185. data/lib/rubocop/cop/style/sample.rb +1 -1
  186. data/lib/rubocop/cop/style/semicolon.rb +11 -0
  187. data/lib/rubocop/cop/style/single_line_methods.rb +8 -1
  188. data/lib/rubocop/cop/style/stderr_puts.rb +1 -1
  189. data/lib/rubocop/cop/style/string_hash_keys.rb +2 -2
  190. data/lib/rubocop/cop/style/strip.rb +1 -1
  191. data/lib/rubocop/cop/style/struct_inheritance.rb +3 -3
  192. data/lib/rubocop/cop/style/symbol_proc.rb +1 -1
  193. data/lib/rubocop/cop/style/ternary_parentheses.rb +32 -3
  194. data/lib/rubocop/cop/style/trailing_method_end_statement.rb +4 -6
  195. data/lib/rubocop/cop/style/trivial_accessors.rb +1 -1
  196. data/lib/rubocop/cop/style/unneeded_sort.rb +1 -1
  197. data/lib/rubocop/cop/style/unpack_first.rb +1 -1
  198. data/lib/rubocop/cop/style/variable_interpolation.rb +6 -16
  199. data/lib/rubocop/cop/style/word_array.rb +2 -2
  200. data/lib/rubocop/cop/style/zero_length_predicate.rb +6 -6
  201. data/lib/rubocop/cop/team.rb +15 -14
  202. data/lib/rubocop/cop/utils/format_string.rb +128 -0
  203. data/lib/rubocop/cop/variable_force/variable.rb +15 -2
  204. data/lib/rubocop/core_ext/string.rb +0 -24
  205. data/lib/rubocop/error.rb +23 -0
  206. data/lib/rubocop/formatter/clang_style_formatter.rb +8 -3
  207. data/lib/rubocop/formatter/emacs_style_formatter.rb +22 -9
  208. data/lib/rubocop/formatter/file_list_formatter.rb +1 -1
  209. data/lib/rubocop/formatter/formatter_set.rb +16 -15
  210. data/lib/rubocop/formatter/pacman_formatter.rb +80 -0
  211. data/lib/rubocop/formatter/simple_text_formatter.rb +16 -4
  212. data/lib/rubocop/formatter/tap_formatter.rb +17 -4
  213. data/lib/rubocop/magic_comment.rb +4 -0
  214. data/lib/rubocop/node_pattern.rb +2 -2
  215. data/lib/rubocop/options.rb +21 -17
  216. data/lib/rubocop/path_util.rb +1 -1
  217. data/lib/rubocop/processed_source.rb +6 -1
  218. data/lib/rubocop/rspec/cop_helper.rb +0 -1
  219. data/lib/rubocop/rspec/expect_offense.rb +4 -1
  220. data/lib/rubocop/rspec/shared_contexts.rb +12 -17
  221. data/lib/rubocop/rspec/support.rb +0 -1
  222. data/lib/rubocop/runner.rb +14 -25
  223. data/lib/rubocop/target_finder.rb +6 -4
  224. data/lib/rubocop/version.rb +1 -1
  225. data/lib/rubocop/yaml_duplication_checker.rb +8 -2
  226. metadata +17 -92
  227. data/lib/rubocop/cop/mixin/ignored_method_patterns.rb +0 -19
  228. data/lib/rubocop/cop/mixin/target_rails_version.rb +0 -16
  229. data/lib/rubocop/cop/rails/action_filter.rb +0 -117
  230. data/lib/rubocop/cop/rails/active_record_aliases.rb +0 -48
  231. data/lib/rubocop/cop/rails/active_record_override.rb +0 -82
  232. data/lib/rubocop/cop/rails/active_support_aliases.rb +0 -69
  233. data/lib/rubocop/cop/rails/application_job.rb +0 -40
  234. data/lib/rubocop/cop/rails/application_record.rb +0 -40
  235. data/lib/rubocop/cop/rails/assert_not.rb +0 -44
  236. data/lib/rubocop/cop/rails/belongs_to.rb +0 -102
  237. data/lib/rubocop/cop/rails/blank.rb +0 -164
  238. data/lib/rubocop/cop/rails/bulk_change_table.rb +0 -289
  239. data/lib/rubocop/cop/rails/create_table_with_timestamps.rb +0 -91
  240. data/lib/rubocop/cop/rails/date.rb +0 -161
  241. data/lib/rubocop/cop/rails/delegate.rb +0 -132
  242. data/lib/rubocop/cop/rails/delegate_allow_blank.rb +0 -37
  243. data/lib/rubocop/cop/rails/dynamic_find_by.rb +0 -91
  244. data/lib/rubocop/cop/rails/enum_uniqueness.rb +0 -45
  245. data/lib/rubocop/cop/rails/environment_comparison.rb +0 -68
  246. data/lib/rubocop/cop/rails/exit.rb +0 -67
  247. data/lib/rubocop/cop/rails/file_path.rb +0 -108
  248. data/lib/rubocop/cop/rails/find_by.rb +0 -55
  249. data/lib/rubocop/cop/rails/find_each.rb +0 -51
  250. data/lib/rubocop/cop/rails/has_and_belongs_to_many.rb +0 -25
  251. data/lib/rubocop/cop/rails/has_many_or_has_one_dependent.rb +0 -106
  252. data/lib/rubocop/cop/rails/http_positional_arguments.rb +0 -117
  253. data/lib/rubocop/cop/rails/http_status.rb +0 -179
  254. data/lib/rubocop/cop/rails/ignored_skip_action_filter_option.rb +0 -94
  255. data/lib/rubocop/cop/rails/inverse_of.rb +0 -246
  256. data/lib/rubocop/cop/rails/lexically_scoped_action_filter.rb +0 -175
  257. data/lib/rubocop/cop/rails/link_to_blank.rb +0 -98
  258. data/lib/rubocop/cop/rails/not_null_column.rb +0 -67
  259. data/lib/rubocop/cop/rails/output.rb +0 -49
  260. data/lib/rubocop/cop/rails/output_safety.rb +0 -99
  261. data/lib/rubocop/cop/rails/pluralization_grammar.rb +0 -107
  262. data/lib/rubocop/cop/rails/presence.rb +0 -124
  263. data/lib/rubocop/cop/rails/present.rb +0 -153
  264. data/lib/rubocop/cop/rails/read_write_attribute.rb +0 -74
  265. data/lib/rubocop/cop/rails/redundant_allow_nil.rb +0 -111
  266. data/lib/rubocop/cop/rails/redundant_receiver_in_with_options.rb +0 -136
  267. data/lib/rubocop/cop/rails/reflection_class_name.rb +0 -37
  268. data/lib/rubocop/cop/rails/refute_methods.rb +0 -76
  269. data/lib/rubocop/cop/rails/relative_date_constant.rb +0 -93
  270. data/lib/rubocop/cop/rails/request_referer.rb +0 -56
  271. data/lib/rubocop/cop/rails/reversible_migration.rb +0 -286
  272. data/lib/rubocop/cop/rails/safe_navigation.rb +0 -87
  273. data/lib/rubocop/cop/rails/save_bang.rb +0 -316
  274. data/lib/rubocop/cop/rails/scope_args.rb +0 -29
  275. data/lib/rubocop/cop/rails/skips_model_validations.rb +0 -87
  276. data/lib/rubocop/cop/rails/time_zone.rb +0 -238
  277. data/lib/rubocop/cop/rails/uniq_before_pluck.rb +0 -105
  278. data/lib/rubocop/cop/rails/unknown_env.rb +0 -63
  279. data/lib/rubocop/cop/rails/validation.rb +0 -109
  280. data/lib/rubocop/rspec/shared_examples.rb +0 -59
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cbaa6a7da185f890ae7fbe520da9e4a7c701526c6b59128434a7a4a305706aa5
4
- data.tar.gz: 3f040c8c4f0e0325f79327767e254b4367488740ceeb42e7ed11a837f12b7dee
3
+ metadata.gz: 354a14aa737b4743d04d65393e8caae409513d2302b31aca36090441100f1bdb
4
+ data.tar.gz: 7bdbb625ae97e5e0f1a5ca6bfe0d93c71ac4a86a566ba13b987a293949486e51
5
5
  SHA512:
6
- metadata.gz: 604bb0adb5459672c490398a4599274f02ec7fa5669ab2caadee7f6178c53b3d3622114fb9faffd767ddf4ec2c8e62023069657f1acd42c587aa1e1d5cd8431e
7
- data.tar.gz: 6a9413fd59a1e9d2ce3f016c54a481ef758fb441bb16af29e6d86b43a18e7daa39f1306618bdd7168552af91064c065e70c381813c8489670d1137151944eaef
6
+ metadata.gz: bf54a562c567c28f118f5bf6bf0a9fb9e5987351559a001f80de025cb08793cd546731e80d3690dcce3ce8e0eda96381563ae307a5b0df303322c75331b8f14b
7
+ data.tar.gz: 76fb85901be4d90de0697874bf0bea52c2a23e2b39fa9607ec797d6768465c4f903bc2645ebf41a504f526064aee2e0000f7bbd2701735787425770682b79ec8
data/README.md CHANGED
@@ -9,6 +9,7 @@
9
9
  [![Patreon](https://img.shields.io/badge/patreon-donate-orange.svg)](https://www.patreon.com/bbatsov)
10
10
  [![OpenCollective](https://opencollective.com/rubocop/backers/badge.svg)](#open-collective-backers)
11
11
  [![OpenCollective](https://opencollective.com/rubocop/sponsors/badge.svg)](#open-collective-sponsors)
12
+ [![Tidelift](https://tidelift.com/badges/package/rubygems/rubocop)](https://tidelift.com/subscription/pkg/rubygems-rubocop?utm_source=rubygems-rubocop&utm_medium=referral&utm_campaign=readme)
12
13
 
13
14
  <p align="center">
14
15
  <img src="https://raw.githubusercontent.com/rubocop-hq/rubocop/master/logo/rubo-logo-horizontal.png" alt="RuboCop Logo"/>
@@ -20,7 +21,7 @@
20
21
  **RuboCop** is a Ruby static code analyzer and code formatter. Out of
21
22
  the box it will enforce many of the guidelines outlined in the
22
23
  community [Ruby Style
23
- Guide](https://github.com/rubocop-hq/ruby-style-guide).
24
+ Guide](https://rubystyle.guide).
24
25
 
25
26
  RuboCop is extremely flexible and most aspects of its behavior can be tweaked via various
26
27
  [configuration options](https://github.com/rubocop-hq/rubocop/blob/master/config/default.yml).
@@ -52,7 +53,7 @@ haven't reached version 1.0 yet). To prevent an unwanted RuboCop update you
52
53
  might want to use a conservative version lock in your `Gemfile`:
53
54
 
54
55
  ```rb
55
- gem 'rubocop', '~> 0.71.0', require: false
56
+ gem 'rubocop', '~> 0.75.1', require: false
56
57
  ```
57
58
 
58
59
  ## Quickstart
@@ -64,9 +65,9 @@ $ cd my/cool/ruby/project
64
65
  $ rubocop
65
66
  ```
66
67
 
67
- ## Official manual
68
+ ## Documentation
68
69
 
69
- You can read a ton more about RuboCop in its [official manual](https://docs.rubocop.org).
70
+ You can read a lot more about RuboCop in its [official docs](https://docs.rubocop.org).
70
71
 
71
72
  ## Compatibility
72
73
 
@@ -75,10 +76,6 @@ RuboCop supports the following Ruby implementations:
75
76
  * MRI 2.3+
76
77
  * JRuby 9.1+
77
78
 
78
- The Rails cops support the following versions:
79
-
80
- * Rails 4.0+
81
-
82
79
  ## Team
83
80
 
84
81
  Here's a list of RuboCop's core developers:
@@ -1,6 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
+ require 'bundler/setup'
4
5
  require 'pry'
5
6
  require 'rubocop'
6
7
 
@@ -73,7 +73,7 @@ AllCops:
73
73
  DisplayStyleGuide: false
74
74
  # When specifying style guide URLs, any paths and/or fragments will be
75
75
  # evaluated relative to the base URL.
76
- StyleGuideBaseURL: https://github.com/rubocop-hq/ruby-style-guide
76
+ StyleGuideBaseURL: https://rubystyle.guide
77
77
  # Extra details are not displayed in offense messages by default. Change
78
78
  # behavior by overriding ExtraDetails, or by giving the
79
79
  # `-E/--extra-details` option.
@@ -125,14 +125,6 @@ AllCops:
125
125
  # from the lock file.) If the Ruby version is still unresolved, RuboCop will
126
126
  # use the oldest officially supported Ruby version (currently Ruby 2.3).
127
127
  TargetRubyVersion: ~
128
- # What version of Rails is the inspected code using? If a value is specified
129
- # for TargetRailsVersion then it is used. Acceptable values are specificed
130
- # as a float (i.e. 5.1); the patch version of Rails should not be included.
131
- # If TargetRailsVersion is not set, RuboCop will parse the Gemfile.lock or
132
- # gems.locked file to find the version of Rails that has been bound to the
133
- # application. If neither of those files exist, RuboCop will use Rails 5.0
134
- # as the default.
135
- TargetRailsVersion: ~
136
128
 
137
129
  #################### Bundler ###############################
138
130
 
@@ -203,6 +195,13 @@ Gemspec/RequiredRubyVersion:
203
195
  VersionAdded: '0.52'
204
196
  Include:
205
197
  - '**/*.gemspec'
198
+ -
199
+ Gemspec/RubyVersionGlobalsUsage:
200
+ Description: Checks usage of RUBY_VERSION in gemspec.
201
+ Enabled: true
202
+ VersionAdded: '0.72'
203
+ Include:
204
+ - '**/*.gemspec'
206
205
 
207
206
  #################### Layout ###########################
208
207
 
@@ -778,8 +777,8 @@ Layout/IndentationConsistency:
778
777
  StyleGuide: '#spaces-indentation'
779
778
  Enabled: true
780
779
  VersionAdded: '0.49'
781
- # The difference between `rails` and `normal` is that the `rails` style
782
- # prescribes that in classes and modules the `protected` and `private`
780
+ # The difference between `indented` and `normal` is that the `indented_internal_methods`
781
+ # style prescribes that in classes and modules the `protected` and `private`
783
782
  # modifier keywords shall be indented the same as public methods and that
784
783
  # protected and private members shall be indented one step more than the
785
784
  # modifiers. Other than that, both styles mean that entities on the same
@@ -787,9 +786,9 @@ Layout/IndentationConsistency:
787
786
  EnforcedStyle: normal
788
787
  SupportedStyles:
789
788
  - normal
790
- - rails
789
+ - indented_internal_methods
791
790
  Reference:
792
- # A reference to `EnforcedStyle: rails`.
791
+ # A reference to `EnforcedStyle: indented_internal_methods`.
793
792
  - https://edgeguides.rubyonrails.org/contributing_to_ruby_on_rails.html#follow-the-coding-conventions
794
793
 
795
794
  Layout/IndentationWidth:
@@ -817,6 +816,8 @@ Layout/LeadingCommentSpace:
817
816
  StyleGuide: '#hash-space'
818
817
  Enabled: true
819
818
  VersionAdded: '0.49'
819
+ VersionChanged: '0.73'
820
+ AllowDoxygenCommentStyle: false
820
821
 
821
822
  Layout/MultilineArrayBraceLayout:
822
823
  Description: >-
@@ -1349,7 +1350,7 @@ Lint/ErbNewArguments:
1349
1350
  VersionAdded: '0.56'
1350
1351
 
1351
1352
  Lint/FlipFlop:
1352
- Description: 'Checks for flip-flops'
1353
+ Description: 'Checks for flip-flops.'
1353
1354
  StyleGuide: '#no-flip-flops'
1354
1355
  Enabled: true
1355
1356
  VersionAdded: '0.16'
@@ -1407,7 +1408,7 @@ Lint/InheritException:
1407
1408
  - standard_error
1408
1409
 
1409
1410
  Lint/InterpolationCheck:
1410
- Description: 'Raise warning for interpolation in single q strs'
1411
+ Description: 'Raise warning for interpolation in single q strs.'
1411
1412
  Enabled: true
1412
1413
  VersionAdded: '0.50'
1413
1414
 
@@ -1431,7 +1432,7 @@ Lint/Loop:
1431
1432
  VersionAdded: '0.9'
1432
1433
 
1433
1434
  Lint/MissingCopEnableDirective:
1434
- Description: 'Checks for a `# rubocop:enable` after `# rubocop:disable`'
1435
+ Description: 'Checks for a `# rubocop:enable` after `# rubocop:disable`.'
1435
1436
  Enabled: true
1436
1437
  VersionAdded: '0.52'
1437
1438
  # Maximum number of consecutive lines the cop can be disabled for.
@@ -1590,6 +1591,11 @@ Lint/ScriptPermission:
1590
1591
  VersionAdded: '0.49'
1591
1592
  VersionChanged: '0.50'
1592
1593
 
1594
+ Lint/SendWithMixinArgument:
1595
+ Description: 'Checks for `send` method when using mixin.'
1596
+ Enabled: true
1597
+ VersionAdded: '0.75'
1598
+
1593
1599
  Lint/ShadowedArgument:
1594
1600
  Description: 'Avoid reassigning arguments before they were used.'
1595
1601
  Enabled: true
@@ -1619,7 +1625,7 @@ Lint/StringConversionInInterpolation:
1619
1625
  VersionChanged: '0.20'
1620
1626
 
1621
1627
  Lint/Syntax:
1622
- Description: 'Checks syntax error'
1628
+ Description: 'Checks syntax error.'
1623
1629
  Enabled: true
1624
1630
  VersionAdded: '0.9'
1625
1631
 
@@ -1635,7 +1641,7 @@ Lint/UnderscorePrefixedVariableName:
1635
1641
  AllowKeywordBlockArguments: false
1636
1642
 
1637
1643
  Lint/UnifiedInteger:
1638
- Description: 'Use Integer instead of Fixnum or Bignum'
1644
+ Description: 'Use Integer instead of Fixnum or Bignum.'
1639
1645
  Enabled: true
1640
1646
  VersionAdded: '0.43'
1641
1647
 
@@ -1658,9 +1664,10 @@ Lint/UnneededRequireStatement:
1658
1664
  VersionAdded: '0.51'
1659
1665
 
1660
1666
  Lint/UnneededSplatExpansion:
1661
- Description: 'Checks for splat unnecessarily being called on literals'
1667
+ Description: 'Checks for splat unnecessarily being called on literals.'
1662
1668
  Enabled: true
1663
1669
  VersionAdded: '0.43'
1670
+ VersionChanged: '0.74'
1664
1671
 
1665
1672
  Lint/UnreachableCode:
1666
1673
  Description: 'Unreachable code.'
@@ -1744,7 +1751,7 @@ Metrics/AbcSize:
1744
1751
  branches, and conditions.
1745
1752
  Reference:
1746
1753
  - http://c2.com/cgi/wiki?AbcMetric
1747
- - https://en.wikipedia.org/wiki/ABC_Software_Metric'
1754
+ - https://en.wikipedia.org/wiki/ABC_Software_Metric
1748
1755
  Enabled: true
1749
1756
  VersionAdded: '0.27'
1750
1757
  VersionChanged: '0.66'
@@ -1767,7 +1774,7 @@ Metrics/BlockLength:
1767
1774
  - '**/*.gemspec'
1768
1775
 
1769
1776
  Metrics/BlockNesting:
1770
- Description: 'Avoid excessive block nesting'
1777
+ Description: 'Avoid excessive block nesting.'
1771
1778
  StyleGuide: '#three-is-the-number-thou-shalt-count'
1772
1779
  Enabled: true
1773
1780
  VersionAdded: '0.25'
@@ -1808,7 +1815,7 @@ Metrics/LineLength:
1808
1815
  - https
1809
1816
  # The IgnoreCopDirectives option causes the LineLength rule to ignore cop
1810
1817
  # directives like '# rubocop: enable ...' when calculating a line's length.
1811
- IgnoreCopDirectives: false
1818
+ IgnoreCopDirectives: true
1812
1819
  # The IgnoredPatterns option is a list of !ruby/regexp and/or string
1813
1820
  # elements. Strings will be converted to Regexp objects. A line that matches
1814
1821
  # any regular expression listed in this option will be ignored by LineLength.
@@ -1847,6 +1854,14 @@ Metrics/PerceivedComplexity:
1847
1854
  VersionAdded: '0.25'
1848
1855
  Max: 7
1849
1856
 
1857
+ ################## Migration #############################
1858
+
1859
+ Migration/DepartmentName:
1860
+ Description: >-
1861
+ Check that cop names in rubocop:disable (etc) comments are
1862
+ given with department name.
1863
+ Enabled: false
1864
+
1850
1865
  #################### Naming ##############################
1851
1866
 
1852
1867
  Naming/AccessorMethodName:
@@ -1982,6 +1997,13 @@ Naming/MethodName:
1982
1997
  SupportedStyles:
1983
1998
  - snake_case
1984
1999
  - camelCase
2000
+ # Method names matching patterns are always allowed.
2001
+ #
2002
+ # IgnoredPatterns:
2003
+ # - '\A\s*onSelectionBulkChange\s*'
2004
+ # - '\A\s*onSelectionCleared\s*'
2005
+ #
2006
+ IgnoredPatterns: []
1985
2007
 
1986
2008
  Naming/PredicateName:
1987
2009
  Description: 'Check the names of predicate methods.'
@@ -2078,461 +2100,6 @@ Naming/VariableNumber:
2078
2100
  - normalcase
2079
2101
  - non_integer
2080
2102
 
2081
- #################### Rails #################################
2082
-
2083
- # By default, the rails cops are not run. Override in project or home
2084
- # directory .rubocop.yml files, or by giving the -R/--rails option.
2085
- Rails:
2086
- Enabled: false
2087
-
2088
- Rails/ActionFilter:
2089
- Description: 'Enforces consistent use of action filter methods.'
2090
- Enabled: true
2091
- VersionAdded: '0.19'
2092
- EnforcedStyle: action
2093
- SupportedStyles:
2094
- - action
2095
- - filter
2096
- Include:
2097
- - app/controllers/**/*.rb
2098
-
2099
- Rails/ActiveRecordAliases:
2100
- Description: >-
2101
- Avoid Active Record aliases:
2102
- Use `update` instead of `update_attributes`.
2103
- Use `update!` instead of `update_attributes!`.
2104
- Enabled: true
2105
- VersionAdded: '0.53'
2106
-
2107
- Rails/ActiveRecordOverride:
2108
- Description: >-
2109
- Check for overriding Active Record methods instead of using
2110
- callbacks.
2111
- Enabled: true
2112
- VersionAdded: '0.67'
2113
- Include:
2114
- - app/models/**/*.rb
2115
-
2116
- Rails/ActiveSupportAliases:
2117
- Description: >-
2118
- Avoid ActiveSupport aliases of standard ruby methods:
2119
- `String#starts_with?`, `String#ends_with?`,
2120
- `Array#append`, `Array#prepend`.
2121
- Enabled: true
2122
- VersionAdded: '0.48'
2123
-
2124
- Rails/ApplicationJob:
2125
- Description: 'Check that jobs subclass ApplicationJob.'
2126
- Enabled: true
2127
- VersionAdded: '0.49'
2128
-
2129
- Rails/ApplicationRecord:
2130
- Description: 'Check that models subclass ApplicationRecord.'
2131
- Enabled: true
2132
- VersionAdded: '0.49'
2133
-
2134
- Rails/AssertNot:
2135
- Description: 'Use `assert_not` instead of `assert !`.'
2136
- Enabled: true
2137
- VersionAdded: '0.56'
2138
- Include:
2139
- - '**/test/**/*'
2140
-
2141
- Rails/BelongsTo:
2142
- Description: >-
2143
- Use `optional: true` instead of `required: false` for
2144
- `belongs_to` relations'
2145
- Enabled: true
2146
- VersionAdded: '0.62'
2147
-
2148
- Rails/Blank:
2149
- Description: 'Enforces use of `blank?`.'
2150
- Enabled: true
2151
- VersionAdded: '0.48'
2152
- VersionChanged: '0.67'
2153
- # Convert usages of `nil? || empty?` to `blank?`
2154
- NilOrEmpty: true
2155
- # Convert usages of `!present?` to `blank?`
2156
- NotPresent: true
2157
- # Convert usages of `unless present?` to `if blank?`
2158
- UnlessPresent: true
2159
-
2160
- Rails/BulkChangeTable:
2161
- Description: 'Check whether alter queries are combinable.'
2162
- Enabled: true
2163
- VersionAdded: '0.57'
2164
- Database: null
2165
- SupportedDatabases:
2166
- - mysql
2167
- - postgresql
2168
- Include:
2169
- - db/migrate/*.rb
2170
-
2171
- Rails/CreateTableWithTimestamps:
2172
- Description: >-
2173
- Checks the migration for which timestamps are not included
2174
- when creating a new table.
2175
- Enabled: true
2176
- VersionAdded: '0.52'
2177
- Include:
2178
- - db/migrate/*.rb
2179
-
2180
- Rails/Date:
2181
- Description: >-
2182
- Checks the correct usage of date aware methods,
2183
- such as Date.today, Date.current etc.
2184
- Enabled: true
2185
- VersionAdded: '0.30'
2186
- VersionChanged: '0.33'
2187
- # The value `strict` disallows usage of `Date.today`, `Date.current`,
2188
- # `Date#to_time` etc.
2189
- # The value `flexible` allows usage of `Date.current`, `Date.yesterday`, etc
2190
- # (but not `Date.today`) which are overridden by ActiveSupport to handle current
2191
- # time zone.
2192
- EnforcedStyle: flexible
2193
- SupportedStyles:
2194
- - strict
2195
- - flexible
2196
-
2197
- Rails/Delegate:
2198
- Description: 'Prefer delegate method for delegations.'
2199
- Enabled: true
2200
- VersionAdded: '0.21'
2201
- VersionChanged: '0.50'
2202
- # When set to true, using the target object as a prefix of the
2203
- # method name without using the `delegate` method will be a
2204
- # violation. When set to false, this case is legal.
2205
- EnforceForPrefixed: true
2206
-
2207
- Rails/DelegateAllowBlank:
2208
- Description: 'Do not use allow_blank as an option to delegate.'
2209
- Enabled: true
2210
- VersionAdded: '0.44'
2211
-
2212
- Rails/DynamicFindBy:
2213
- Description: 'Use `find_by` instead of dynamic `find_by_*`.'
2214
- StyleGuide: 'https://github.com/rubocop-hq/rails-style-guide#find_by'
2215
- Enabled: true
2216
- VersionAdded: '0.44'
2217
- Whitelist:
2218
- - find_by_sql
2219
-
2220
- Rails/EnumUniqueness:
2221
- Description: 'Avoid duplicate integers in hash-syntax `enum` declaration.'
2222
- Enabled: true
2223
- VersionAdded: '0.46'
2224
- Include:
2225
- - app/models/**/*.rb
2226
-
2227
- Rails/EnvironmentComparison:
2228
- Description: "Favor `Rails.env.production?` over `Rails.env == 'production'`"
2229
- Enabled: true
2230
- VersionAdded: '0.52'
2231
-
2232
- Rails/Exit:
2233
- Description: >-
2234
- Favor `fail`, `break`, `return`, etc. over `exit` in
2235
- application or library code outside of Rake files to avoid
2236
- exits during unit testing or running in production.
2237
- Enabled: true
2238
- VersionAdded: '0.41'
2239
- Include:
2240
- - app/**/*.rb
2241
- - config/**/*.rb
2242
- - lib/**/*.rb
2243
- Exclude:
2244
- - lib/**/*.rake
2245
-
2246
- Rails/FilePath:
2247
- Description: 'Use `Rails.root.join` for file path joining.'
2248
- Enabled: true
2249
- VersionAdded: '0.47'
2250
- VersionChanged: '0.57'
2251
- EnforcedStyle: arguments
2252
- SupportedStyles:
2253
- - slashes
2254
- - arguments
2255
-
2256
- Rails/FindBy:
2257
- Description: 'Prefer find_by over where.first.'
2258
- StyleGuide: 'https://github.com/rubocop-hq/rails-style-guide#find_by'
2259
- Enabled: true
2260
- VersionAdded: '0.30'
2261
- Include:
2262
- - app/models/**/*.rb
2263
-
2264
- Rails/FindEach:
2265
- Description: 'Prefer all.find_each over all.find.'
2266
- StyleGuide: 'https://github.com/rubocop-hq/rails-style-guide#find-each'
2267
- Enabled: true
2268
- VersionAdded: '0.30'
2269
- Include:
2270
- - app/models/**/*.rb
2271
-
2272
- Rails/HasAndBelongsToMany:
2273
- Description: 'Prefer has_many :through to has_and_belongs_to_many.'
2274
- StyleGuide: 'https://github.com/rubocop-hq/rails-style-guide#has-many-through'
2275
- Enabled: true
2276
- VersionAdded: '0.12'
2277
- Include:
2278
- - app/models/**/*.rb
2279
-
2280
- Rails/HasManyOrHasOneDependent:
2281
- Description: 'Define the dependent option to the has_many and has_one associations.'
2282
- StyleGuide: 'https://github.com/rubocop-hq/rails-style-guide#has_many-has_one-dependent-option'
2283
- Enabled: true
2284
- VersionAdded: '0.50'
2285
- Include:
2286
- - app/models/**/*.rb
2287
-
2288
- Rails/HttpPositionalArguments:
2289
- Description: 'Use keyword arguments instead of positional arguments in http method calls.'
2290
- Enabled: true
2291
- VersionAdded: '0.44'
2292
- Include:
2293
- - 'spec/**/*'
2294
- - 'test/**/*'
2295
-
2296
- Rails/HttpStatus:
2297
- Description: 'Enforces use of symbolic or numeric value to define HTTP status.'
2298
- Enabled: true
2299
- VersionAdded: '0.54'
2300
- EnforcedStyle: symbolic
2301
- SupportedStyles:
2302
- - numeric
2303
- - symbolic
2304
-
2305
- Rails/IgnoredSkipActionFilterOption:
2306
- Description: 'Checks that `if` and `only` (or `except`) are not used together as options of `skip_*` action filter.'
2307
- Reference: 'https://api.rubyonrails.org/classes/AbstractController/Callbacks/ClassMethods.html#method-i-_normalize_callback_options'
2308
- Enabled: true
2309
- VersionAdded: '0.63'
2310
- Include:
2311
- - app/controllers/**/*.rb
2312
-
2313
- Rails/InverseOf:
2314
- Description: 'Checks for associations where the inverse cannot be determined automatically.'
2315
- Enabled: true
2316
- VersionAdded: '0.52'
2317
- Include:
2318
- - app/models/**/*.rb
2319
-
2320
- Rails/LexicallyScopedActionFilter:
2321
- Description: "Checks that methods specified in the filter's `only` or `except` options are explicitly defined in the controller."
2322
- StyleGuide: 'https://github.com/rubocop-hq/rails-style-guide#lexically-scoped-action-filter'
2323
- Enabled: true
2324
- Safe: false
2325
- VersionAdded: '0.52'
2326
- Include:
2327
- - app/controllers/**/*.rb
2328
-
2329
- Rails/LinkToBlank:
2330
- Description: 'Checks that `link_to` with a `target: "_blank"` have a `rel: "noopener"` option passed to them.'
2331
- Reference:
2332
- - https://mathiasbynens.github.io/rel-noopener/
2333
- - https://html.spec.whatwg.org/multipage/links.html#link-type-noopener
2334
- - https://html.spec.whatwg.org/multipage/links.html#link-type-noreferrer
2335
- Enabled: true
2336
- VersionAdded: '0.62'
2337
-
2338
- Rails/NotNullColumn:
2339
- Description: 'Do not add a NOT NULL column without a default value'
2340
- Enabled: true
2341
- VersionAdded: '0.43'
2342
- Include:
2343
- - db/migrate/*.rb
2344
-
2345
- Rails/Output:
2346
- Description: 'Checks for calls to puts, print, etc.'
2347
- Enabled: true
2348
- VersionAdded: '0.15'
2349
- VersionChanged: '0.19'
2350
- Include:
2351
- - app/**/*.rb
2352
- - config/**/*.rb
2353
- - db/**/*.rb
2354
- - lib/**/*.rb
2355
-
2356
- Rails/OutputSafety:
2357
- Description: 'The use of `html_safe` or `raw` may be a security risk.'
2358
- Enabled: true
2359
- VersionAdded: '0.41'
2360
-
2361
- Rails/PluralizationGrammar:
2362
- Description: 'Checks for incorrect grammar when using methods like `3.day.ago`.'
2363
- Enabled: true
2364
- VersionAdded: '0.35'
2365
-
2366
- Rails/Presence:
2367
- Description: 'Checks code that can be written more easily using `Object#presence` defined by Active Support.'
2368
- Enabled: true
2369
- VersionAdded: '0.52'
2370
-
2371
- Rails/Present:
2372
- Description: 'Enforces use of `present?`.'
2373
- Enabled: true
2374
- VersionAdded: '0.48'
2375
- VersionChanged: '0.67'
2376
- # Convert usages of `!nil? && !empty?` to `present?`
2377
- NotNilAndNotEmpty: true
2378
- # Convert usages of `!blank?` to `present?`
2379
- NotBlank: true
2380
- # Convert usages of `unless blank?` to `if present?`
2381
- UnlessBlank: true
2382
-
2383
- Rails/ReadWriteAttribute:
2384
- Description: >-
2385
- Checks for read_attribute(:attr) and
2386
- write_attribute(:attr, val).
2387
- StyleGuide: 'https://github.com/rubocop-hq/rails-style-guide#read-attribute'
2388
- Enabled: true
2389
- VersionAdded: '0.20'
2390
- VersionChanged: '0.29'
2391
- Include:
2392
- - app/models/**/*.rb
2393
-
2394
- Rails/RedundantAllowNil:
2395
- Description: >-
2396
- Finds redundant use of `allow_nil` when `allow_blank` is set to
2397
- certain values in model validations.
2398
- Enabled: true
2399
- VersionAdded: '0.67'
2400
- Include:
2401
- - app/models/**/*.rb
2402
-
2403
- Rails/RedundantReceiverInWithOptions:
2404
- Description: 'Checks for redundant receiver in `with_options`.'
2405
- Enabled: true
2406
- VersionAdded: '0.52'
2407
-
2408
- Rails/ReflectionClassName:
2409
- Description: 'Use a string for `class_name` option value in the definition of a reflection.'
2410
- Enabled: true
2411
- VersionAdded: '0.64'
2412
-
2413
- Rails/RefuteMethods:
2414
- Description: 'Use `assert_not` methods instead of `refute` methods.'
2415
- Enabled: true
2416
- VersionAdded: '0.56'
2417
- Include:
2418
- - '**/test/**/*'
2419
-
2420
- Rails/RelativeDateConstant:
2421
- Description: 'Do not assign relative date to constants.'
2422
- Enabled: true
2423
- VersionAdded: '0.48'
2424
- VersionChanged: '0.59'
2425
- AutoCorrect: false
2426
-
2427
- Rails/RequestReferer:
2428
- Description: 'Use consistent syntax for request.referer.'
2429
- Enabled: true
2430
- VersionAdded: '0.41'
2431
- EnforcedStyle: referer
2432
- SupportedStyles:
2433
- - referer
2434
- - referrer
2435
-
2436
- Rails/ReversibleMigration:
2437
- Description: 'Checks whether the change method of the migration file is reversible.'
2438
- StyleGuide: 'https://github.com/rubocop-hq/rails-style-guide#reversible-migration'
2439
- Reference: 'https://api.rubyonrails.org/classes/ActiveRecord/Migration/CommandRecorder.html'
2440
- Enabled: true
2441
- VersionAdded: '0.47'
2442
- Include:
2443
- - db/migrate/*.rb
2444
-
2445
- Rails/SafeNavigation:
2446
- Description: "Use Ruby's safe navigation operator (`&.`) instead of `try!`"
2447
- Enabled: true
2448
- VersionAdded: '0.43'
2449
- # This will convert usages of `try` to use safe navigation as well as `try!`.
2450
- # `try` and `try!` work slightly differently. `try!` and safe navigation will
2451
- # both raise a `NoMethodError` if the receiver of the method call does not
2452
- # implement the intended method. `try` will not raise an exception for this.
2453
- ConvertTry: false
2454
-
2455
- Rails/SaveBang:
2456
- Description: 'Identifies possible cases where Active Record save! or related should be used.'
2457
- StyleGuide: 'https://github.com/rubocop-hq/rails-style-guide#save-bang'
2458
- Enabled: false
2459
- VersionAdded: '0.42'
2460
- VersionChanged: '0.59'
2461
- AllowImplicitReturn: true
2462
- AllowedReceivers: []
2463
-
2464
- Rails/ScopeArgs:
2465
- Description: 'Checks the arguments of ActiveRecord scopes.'
2466
- Enabled: true
2467
- VersionAdded: '0.19'
2468
- Include:
2469
- - app/models/**/*.rb
2470
-
2471
- Rails/SkipsModelValidations:
2472
- Description: >-
2473
- Use methods that skips model validations with caution.
2474
- See reference for more information.
2475
- Reference: 'https://guides.rubyonrails.org/active_record_validations.html#skipping-validations'
2476
- Enabled: true
2477
- VersionAdded: '0.47'
2478
- VersionChanged: '0.60'
2479
- Blacklist:
2480
- - decrement!
2481
- - decrement_counter
2482
- - increment!
2483
- - increment_counter
2484
- - toggle!
2485
- - touch
2486
- - update_all
2487
- - update_attribute
2488
- - update_column
2489
- - update_columns
2490
- - update_counters
2491
- Whitelist: []
2492
-
2493
- Rails/TimeZone:
2494
- Description: 'Checks the correct usage of time zone aware methods.'
2495
- StyleGuide: 'https://github.com/rubocop-hq/rails-style-guide#time'
2496
- Reference: 'http://danilenko.org/2012/7/6/rails_timezones'
2497
- Enabled: true
2498
- Safe: false
2499
- VersionAdded: '0.30'
2500
- VersionChanged: '0.68'
2501
- # The value `strict` means that `Time` should be used with `zone`.
2502
- # The value `flexible` allows usage of `in_time_zone` instead of `zone`.
2503
- EnforcedStyle: flexible
2504
- SupportedStyles:
2505
- - strict
2506
- - flexible
2507
-
2508
- Rails/UniqBeforePluck:
2509
- Description: 'Prefer the use of uniq or distinct before pluck.'
2510
- Enabled: true
2511
- VersionAdded: '0.40'
2512
- VersionChanged: '0.47'
2513
- EnforcedStyle: conservative
2514
- SupportedStyles:
2515
- - conservative
2516
- - aggressive
2517
- AutoCorrect: false
2518
-
2519
- Rails/UnknownEnv:
2520
- Description: 'Use correct environment name.'
2521
- Enabled: true
2522
- VersionAdded: '0.51'
2523
- Environments:
2524
- - development
2525
- - test
2526
- - production
2527
-
2528
- Rails/Validation:
2529
- Description: 'Use validates :attribute, hash of validations.'
2530
- Enabled: true
2531
- VersionAdded: '0.9'
2532
- VersionChanged: '0.41'
2533
- Include:
2534
- - app/models/**/*.rb
2535
-
2536
2103
  #################### Security ##############################
2537
2104
 
2538
2105
  Security/Eval:
@@ -2589,7 +2156,7 @@ Style/AccessModifierDeclarations:
2589
2156
 
2590
2157
  Style/Alias:
2591
2158
  Description: 'Use alias instead of alias_method.'
2592
- StyleGuide: '#alias-method'
2159
+ StyleGuide: '#alias-method-lexically'
2593
2160
  Enabled: true
2594
2161
  VersionAdded: '0.9'
2595
2162
  VersionChanged: '0.36'
@@ -3011,6 +2578,11 @@ Style/DocumentationMethod:
3011
2578
  - 'test/**/*'
3012
2579
  RequireForNonPublicMethods: false
3013
2580
 
2581
+ Style/DoubleCopDisableDirective:
2582
+ Description: 'Checks for double rubocop:disable comments on a single line.'
2583
+ Enabled: true
2584
+ VersionAdded: '0.73'
2585
+
3014
2586
  Style/DoubleNegation:
3015
2587
  Description: 'Checks for uses of double negation (!!).'
3016
2588
  StyleGuide: '#no-bang-bang'
@@ -3095,7 +2667,7 @@ Style/EvalWithLocation:
3095
2667
  VersionAdded: '0.52'
3096
2668
 
3097
2669
  Style/EvenOdd:
3098
- Description: 'Favor the use of Integer#even? && Integer#odd?'
2670
+ Description: 'Favor the use of `Integer#even?` && `Integer#odd?`.'
3099
2671
  StyleGuide: '#predicate-methods'
3100
2672
  Enabled: true
3101
2673
  VersionAdded: '0.12'
@@ -3106,6 +2678,19 @@ Style/ExpandPathArguments:
3106
2678
  Enabled: true
3107
2679
  VersionAdded: '0.53'
3108
2680
 
2681
+ Style/FloatDivision:
2682
+ Description: 'For performing float division, coerce one side only.'
2683
+ StyleGuide: '#float-division'
2684
+ Reference: 'https://github.com/rubocop-hq/ruby-style-guide/issues/628'
2685
+ Enabled: true
2686
+ VersionAdded: '0.72'
2687
+ EnforcedStyle: single_coerce
2688
+ SupportedStyles:
2689
+ - left_coerce
2690
+ - right_coerce
2691
+ - single_coerce
2692
+ - fdiv
2693
+
3109
2694
  Style/For:
3110
2695
  Description: 'Checks use of for or each in multiline loops.'
3111
2696
  StyleGuide: '#no-for-loops'
@@ -3141,7 +2726,7 @@ Style/FormatStringToken:
3141
2726
  - template
3142
2727
  - unannotated
3143
2728
  VersionAdded: '0.49'
3144
- VersionChanged: '0.52'
2729
+ VersionChanged: '0.75'
3145
2730
 
3146
2731
  Style/FrozenStringLiteralComment:
3147
2732
  Description: >-
@@ -3171,7 +2756,7 @@ Style/GlobalVars:
3171
2756
  AllowedVariables: []
3172
2757
 
3173
2758
  Style/GuardClause:
3174
- Description: 'Check for conditionals that can be replaced with guard clauses'
2759
+ Description: 'Check for conditionals that can be replaced with guard clauses.'
3175
2760
  StyleGuide: '#no-nested-conditionals'
3176
2761
  Enabled: true
3177
2762
  VersionAdded: '0.20'
@@ -3214,6 +2799,7 @@ Style/IdenticalConditionalBranches:
3214
2799
  Style/IfInsideElse:
3215
2800
  Description: 'Finds if nodes inside else, which can be converted to elsif.'
3216
2801
  Enabled: true
2802
+ AllowIfModifier: false
3217
2803
  VersionAdded: '0.36'
3218
2804
 
3219
2805
  Style/IfUnlessModifier:
@@ -3333,6 +2919,7 @@ Style/MethodCallWithArgsParentheses:
3333
2919
  VersionChanged: '0.61'
3334
2920
  IgnoreMacros: true
3335
2921
  IgnoredMethods: []
2922
+ IgnoredPatterns: []
3336
2923
  IncludedMacros: []
3337
2924
  AllowParenthesesInMultilineCall: false
3338
2925
  AllowParenthesesInChaining: false
@@ -3379,7 +2966,7 @@ Style/MethodMissingSuper:
3379
2966
  Style/MinMax:
3380
2967
  Description: >-
3381
2968
  Use `Enumerable#minmax` instead of `Enumerable#min`
3382
- and `Enumerable#max` in conjunction.'
2969
+ and `Enumerable#max` in conjunction.
3383
2970
  Enabled: true
3384
2971
  VersionAdded: '0.50'
3385
2972
 
@@ -3389,7 +2976,7 @@ Style/MissingElse:
3389
2976
  If enabled, it is recommended that
3390
2977
  Style/UnlessElse and Style/EmptyElse be enabled.
3391
2978
  This will conflict with Style/EmptyElse if
3392
- Style/EmptyElse is configured to style "both"
2979
+ Style/EmptyElse is configured to style "both".
3393
2980
  Enabled: false
3394
2981
  VersionAdded: '0.30'
3395
2982
  VersionChanged: '0.38'
@@ -3483,6 +3070,12 @@ Style/MultilineTernaryOperator:
3483
3070
  Enabled: true
3484
3071
  VersionAdded: '0.9'
3485
3072
 
3073
+ Style/MultilineWhenThen:
3074
+ Description: 'Do not use then for multi-line when statement.'
3075
+ StyleGuide: '#no-then'
3076
+ Enabled: true
3077
+ VersionAdded: '0.73'
3078
+
3486
3079
  Style/MultipleComparison:
3487
3080
  Description: >-
3488
3081
  Avoid comparing a variable with multiple items in a conditional,
@@ -3701,7 +3294,7 @@ Style/OptionHash:
3701
3294
  Style/OptionalArguments:
3702
3295
  Description: >-
3703
3296
  Checks for optional arguments that do not appear at the end
3704
- of the argument list
3297
+ of the argument list.
3705
3298
  StyleGuide: '#optional-arguments'
3706
3299
  Enabled: true
3707
3300
  VersionAdded: '0.33'
@@ -3733,7 +3326,7 @@ Style/ParenthesesAroundCondition:
3733
3326
  AllowInMultilineConditions: false
3734
3327
 
3735
3328
  Style/PercentLiteralDelimiters:
3736
- Description: 'Use `%`-literal delimiters consistently'
3329
+ Description: 'Use `%`-literal delimiters consistently.'
3737
3330
  StyleGuide: '#percent-literal-braces'
3738
3331
  Enabled: true
3739
3332
  VersionAdded: '0.19'
@@ -4014,6 +3607,8 @@ Style/StringHashKeys:
4014
3607
  StyleGuide: '#symbols-as-keys'
4015
3608
  Enabled: false
4016
3609
  VersionAdded: '0.52'
3610
+ VersionChanged: '0.75'
3611
+ Safe: false
4017
3612
 
4018
3613
  Style/StringLiterals:
4019
3614
  Description: 'Checks if uses of quotes match the configured preference.'
@@ -4265,7 +3860,7 @@ Style/UnneededSort:
4265
3860
  Style/UnpackFirst:
4266
3861
  Description: >-
4267
3862
  Checks for accessing the first element of `String#unpack`
4268
- instead of using `unpack1`
3863
+ instead of using `unpack1`.
4269
3864
  Enabled: true
4270
3865
  VersionAdded: '0.54'
4271
3866
 
@@ -4316,7 +3911,7 @@ Style/WordArray:
4316
3911
  # whose element count is greater than or equal to `MinSize`.
4317
3912
  MinSize: 2
4318
3913
  # The regular expression `WordRegex` decides what is considered a word.
4319
- WordRegex: !ruby/regexp '/\A[\p{Word}\n\t]+\z/'
3914
+ WordRegex: !ruby/regexp '/\A(?:\p{Word}|\p{Word}-\p{Word}|\n|\t)+\z/'
4320
3915
 
4321
3916
  Style/YodaCondition:
4322
3917
  Description: 'Forbid or enforce yoda conditions.'
@@ -4332,8 +3927,9 @@ Style/YodaCondition:
4332
3927
  - require_for_all_comparison_operators
4333
3928
  # enforce yoda only for equality operators: `!=` and `==`
4334
3929
  - require_for_equality_operators_only
3930
+ Safe: false
4335
3931
  VersionAdded: '0.49'
4336
- VersionChanged: '0.63'
3932
+ VersionChanged: '0.75'
4337
3933
 
4338
3934
  Style/ZeroLengthPredicate:
4339
3935
  Description: 'Use #empty? when testing for objects of length 0.'