rubocop 0.76.0 → 0.83.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (289) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +1 -1
  3. data/README.md +6 -6
  4. data/config/default.yml +466 -306
  5. data/lib/rubocop/ast/builder.rb +45 -42
  6. data/lib/rubocop/ast/node/array_node.rb +13 -0
  7. data/lib/rubocop/ast/node/block_node.rb +7 -1
  8. data/lib/rubocop/ast/node/case_match_node.rb +56 -0
  9. data/lib/rubocop/ast/node/def_node.rb +11 -0
  10. data/lib/rubocop/ast/node/forward_args_node.rb +18 -0
  11. data/lib/rubocop/ast/node/mixin/method_dispatch_node.rb +8 -0
  12. data/lib/rubocop/ast/node/regexp_node.rb +2 -4
  13. data/lib/rubocop/ast/node/send_node.rb +4 -0
  14. data/lib/rubocop/ast/node.rb +13 -20
  15. data/lib/rubocop/ast/traversal.rb +29 -10
  16. data/lib/rubocop/cli/command/auto_genenerate_config.rb +105 -0
  17. data/lib/rubocop/cli/command/base.rb +33 -0
  18. data/lib/rubocop/cli/command/execute_runner.rb +76 -0
  19. data/lib/rubocop/cli/command/init_dotfile.rb +45 -0
  20. data/lib/rubocop/cli/command/show_cops.rb +80 -0
  21. data/lib/rubocop/cli/command/version.rb +17 -0
  22. data/lib/rubocop/cli/command.rb +21 -0
  23. data/lib/rubocop/cli/environment.rb +21 -0
  24. data/lib/rubocop/cli.rb +20 -233
  25. data/lib/rubocop/comment_config.rb +6 -1
  26. data/lib/rubocop/config.rb +41 -11
  27. data/lib/rubocop/config_loader.rb +54 -44
  28. data/lib/rubocop/config_loader_resolver.rb +28 -1
  29. data/lib/rubocop/config_obsoletion.rb +67 -11
  30. data/lib/rubocop/config_validator.rb +74 -99
  31. data/lib/rubocop/cop/autocorrect_logic.rb +7 -4
  32. data/lib/rubocop/cop/badge.rb +5 -5
  33. data/lib/rubocop/cop/bundler/gem_comment.rb +4 -4
  34. data/lib/rubocop/cop/bundler/insecure_protocol_source.rb +3 -3
  35. data/lib/rubocop/cop/cop.rb +21 -0
  36. data/lib/rubocop/cop/corrector.rb +48 -24
  37. data/lib/rubocop/cop/correctors/alignment_corrector.rb +2 -2
  38. data/lib/rubocop/cop/correctors/condition_corrector.rb +1 -2
  39. data/lib/rubocop/cop/correctors/empty_line_corrector.rb +1 -1
  40. data/lib/rubocop/cop/correctors/lambda_literal_to_method_corrector.rb +3 -3
  41. data/lib/rubocop/cop/correctors/line_break_corrector.rb +2 -2
  42. data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +1 -1
  43. data/lib/rubocop/cop/correctors/space_corrector.rb +1 -2
  44. data/lib/rubocop/cop/correctors/string_literal_corrector.rb +2 -2
  45. data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +1 -1
  46. data/lib/rubocop/cop/generator/configuration_injector.rb +1 -1
  47. data/lib/rubocop/cop/generator.rb +6 -6
  48. data/lib/rubocop/cop/internal_affairs/method_name_equal.rb +59 -0
  49. data/lib/rubocop/cop/internal_affairs/offense_location_keyword.rb +1 -1
  50. data/lib/rubocop/cop/internal_affairs.rb +1 -0
  51. data/lib/rubocop/cop/layout/{align_arguments.rb → argument_alignment.rb} +1 -1
  52. data/lib/rubocop/cop/layout/array_alignment.rb +82 -0
  53. data/lib/rubocop/cop/layout/{indent_assignment.rb → assignment_indentation.rb} +1 -1
  54. data/lib/rubocop/cop/layout/block_end_newline.rb +5 -3
  55. data/lib/rubocop/cop/layout/condition_position.rb +12 -2
  56. data/lib/rubocop/cop/layout/dot_position.rb +1 -1
  57. data/lib/rubocop/cop/layout/else_alignment.rb +8 -0
  58. data/lib/rubocop/cop/layout/empty_line_between_defs.rb +2 -1
  59. data/lib/rubocop/cop/layout/empty_lines_around_attribute_accessor.rb +68 -0
  60. data/lib/rubocop/cop/layout/end_of_line.rb +2 -2
  61. data/lib/rubocop/cop/layout/extra_spacing.rb +1 -1
  62. data/lib/rubocop/cop/layout/{indent_first_argument.rb → first_argument_indentation.rb} +5 -5
  63. data/lib/rubocop/cop/layout/{indent_first_array_element.rb → first_array_element_indentation.rb} +20 -14
  64. data/lib/rubocop/cop/layout/{indent_first_hash_element.rb → first_hash_element_indentation.rb} +4 -4
  65. data/lib/rubocop/cop/layout/{indent_first_parameter.rb → first_parameter_indentation.rb} +3 -3
  66. data/lib/rubocop/cop/layout/{align_hash.rb → hash_alignment.rb} +10 -6
  67. data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +2 -2
  68. data/lib/rubocop/cop/layout/{indent_heredoc.rb → heredoc_indentation.rb} +7 -7
  69. data/lib/rubocop/cop/layout/{tab.rb → indentation_style.rb} +48 -6
  70. data/lib/rubocop/cop/layout/leading_comment_space.rb +34 -3
  71. data/lib/rubocop/cop/layout/{leading_blank_lines.rb → leading_empty_lines.rb} +1 -1
  72. data/lib/rubocop/cop/{metrics → layout}/line_length.rb +72 -110
  73. data/lib/rubocop/cop/layout/multiline_block_layout.rb +15 -6
  74. data/lib/rubocop/cop/layout/multiline_hash_brace_layout.rb +0 -4
  75. data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +1 -1
  76. data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +1 -1
  77. data/lib/rubocop/cop/layout/multiline_operation_indentation.rb +13 -4
  78. data/lib/rubocop/cop/layout/{align_parameters.rb → parameter_alignment.rb} +1 -1
  79. data/lib/rubocop/cop/layout/space_around_block_parameters.rb +3 -3
  80. data/lib/rubocop/cop/layout/space_around_keyword.rb +12 -0
  81. data/lib/rubocop/cop/layout/space_around_method_call_operator.rb +133 -0
  82. data/lib/rubocop/cop/layout/space_around_operators.rb +69 -9
  83. data/lib/rubocop/cop/layout/space_before_block_braces.rb +17 -0
  84. data/lib/rubocop/cop/layout/space_before_first_arg.rb +8 -0
  85. data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +1 -1
  86. data/lib/rubocop/cop/layout/space_inside_block_braces.rb +2 -2
  87. data/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +2 -9
  88. data/lib/rubocop/cop/layout/space_inside_range_literal.rb +2 -2
  89. data/lib/rubocop/cop/layout/{trailing_blank_lines.rb → trailing_empty_lines.rb} +1 -1
  90. data/lib/rubocop/cop/layout/trailing_whitespace.rb +2 -2
  91. data/lib/rubocop/cop/lint/ambiguous_operator.rb +38 -0
  92. data/lib/rubocop/cop/lint/ambiguous_regexp_literal.rb +14 -0
  93. data/lib/rubocop/cop/lint/boolean_symbol.rb +12 -0
  94. data/lib/rubocop/cop/lint/debugger.rb +2 -2
  95. data/lib/rubocop/cop/lint/disjunctive_assignment_in_constructor.rb +1 -1
  96. data/lib/rubocop/cop/lint/{duplicated_key.rb → duplicate_hash_key.rb} +1 -1
  97. data/lib/rubocop/cop/lint/duplicate_methods.rb +1 -5
  98. data/lib/rubocop/cop/lint/each_with_object_argument.rb +1 -1
  99. data/lib/rubocop/cop/lint/empty_when.rb +29 -6
  100. data/lib/rubocop/cop/lint/ensure_return.rb +18 -1
  101. data/lib/rubocop/cop/lint/erb_new_arguments.rb +1 -1
  102. data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +1 -1
  103. data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +1 -1
  104. data/lib/rubocop/cop/lint/inherit_exception.rb +1 -1
  105. data/lib/rubocop/cop/lint/interpolation_check.rb +1 -1
  106. data/lib/rubocop/cop/lint/literal_as_condition.rb +10 -13
  107. data/lib/rubocop/cop/lint/literal_in_interpolation.rb +1 -1
  108. data/lib/rubocop/cop/lint/loop.rb +6 -4
  109. data/lib/rubocop/cop/lint/{multiple_compare.rb → multiple_comparison.rb} +2 -2
  110. data/lib/rubocop/cop/lint/nested_method_definition.rb +2 -2
  111. data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +89 -0
  112. data/lib/rubocop/cop/lint/number_conversion.rb +1 -1
  113. data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +21 -9
  114. data/lib/rubocop/cop/lint/percent_string_array.rb +2 -2
  115. data/lib/rubocop/cop/lint/raise_exception.rb +75 -0
  116. data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +4 -9
  117. data/lib/rubocop/cop/lint/redundant_cop_enable_directive.rb +13 -8
  118. data/lib/rubocop/cop/lint/redundant_splat_expansion.rb +1 -1
  119. data/lib/rubocop/cop/lint/{string_conversion_in_interpolation.rb → redundant_string_coercion.rb} +2 -2
  120. data/lib/rubocop/cop/lint/redundant_with_index.rb +2 -2
  121. data/lib/rubocop/cop/lint/redundant_with_object.rb +2 -2
  122. data/lib/rubocop/cop/lint/safe_navigation_chain.rb +1 -1
  123. data/lib/rubocop/cop/lint/struct_new_override.rb +58 -0
  124. data/lib/rubocop/cop/lint/{handle_exceptions.rb → suppressed_exception.rb} +13 -29
  125. data/lib/rubocop/cop/lint/unified_integer.rb +0 -2
  126. data/lib/rubocop/cop/lint/unused_method_argument.rb +32 -6
  127. data/lib/rubocop/cop/lint/uri_regexp.rb +4 -4
  128. data/lib/rubocop/cop/lint/useless_access_modifier.rb +69 -23
  129. data/lib/rubocop/cop/lint/useless_assignment.rb +3 -2
  130. data/lib/rubocop/cop/lint/useless_else_without_rescue.rb +5 -0
  131. data/lib/rubocop/cop/lint/useless_setter_call.rb +5 -1
  132. data/lib/rubocop/cop/metrics/method_length.rb +1 -1
  133. data/lib/rubocop/cop/migration/department_name.rb +47 -6
  134. data/lib/rubocop/cop/mixin/alignment.rb +1 -1
  135. data/lib/rubocop/cop/mixin/configurable_enforced_style.rb +4 -0
  136. data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +6 -1
  137. data/lib/rubocop/cop/mixin/frozen_string_literal.rb +14 -5
  138. data/lib/rubocop/cop/mixin/{hash_alignment.rb → hash_alignment_styles.rb} +1 -1
  139. data/lib/rubocop/cop/mixin/hash_transform_method.rb +178 -0
  140. data/lib/rubocop/cop/mixin/line_length_help.rb +89 -0
  141. data/lib/rubocop/cop/mixin/method_complexity.rb +5 -0
  142. data/lib/rubocop/cop/mixin/nil_methods.rb +4 -4
  143. data/lib/rubocop/cop/mixin/parser_diagnostic.rb +1 -1
  144. data/lib/rubocop/cop/mixin/rational_literal.rb +18 -0
  145. data/lib/rubocop/cop/mixin/statement_modifier.rb +9 -24
  146. data/lib/rubocop/cop/mixin/target_ruby_version.rb +5 -1
  147. data/lib/rubocop/cop/mixin/trailing_comma.rb +9 -13
  148. data/lib/rubocop/cop/naming/{uncommunicative_block_param_name.rb → block_parameter_name.rb} +3 -3
  149. data/lib/rubocop/cop/naming/class_and_module_camel_case.rb +1 -1
  150. data/lib/rubocop/cop/naming/constant_name.rb +2 -1
  151. data/lib/rubocop/cop/naming/heredoc_delimiter_naming.rb +6 -6
  152. data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +1 -1
  153. data/lib/rubocop/cop/naming/method_name.rb +26 -0
  154. data/lib/rubocop/cop/naming/{uncommunicative_method_param_name.rb → method_parameter_name.rb} +4 -4
  155. data/lib/rubocop/cop/naming/predicate_name.rb +6 -6
  156. data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +1 -1
  157. data/lib/rubocop/cop/offense.rb +11 -0
  158. data/lib/rubocop/cop/registry.rb +15 -3
  159. data/lib/rubocop/cop/style/access_modifier_declarations.rb +26 -6
  160. data/lib/rubocop/cop/style/alias.rb +5 -5
  161. data/lib/rubocop/cop/style/and_or.rb +5 -6
  162. data/lib/rubocop/cop/style/array_join.rb +2 -2
  163. data/lib/rubocop/cop/style/attr.rb +8 -0
  164. data/lib/rubocop/cop/style/block_delimiters.rb +60 -1
  165. data/lib/rubocop/cop/style/case_equality.rb +24 -1
  166. data/lib/rubocop/cop/style/character_literal.rb +2 -2
  167. data/lib/rubocop/cop/style/collection_methods.rb +2 -0
  168. data/lib/rubocop/cop/style/conditional_assignment.rb +10 -10
  169. data/lib/rubocop/cop/style/copyright.rb +1 -1
  170. data/lib/rubocop/cop/style/dir.rb +1 -1
  171. data/lib/rubocop/cop/style/disable_cops_within_source_code_directive.rb +49 -0
  172. data/lib/rubocop/cop/style/documentation.rb +43 -5
  173. data/lib/rubocop/cop/style/double_cop_disable_directive.rb +1 -1
  174. data/lib/rubocop/cop/style/each_for_simple_loop.rb +1 -1
  175. data/lib/rubocop/cop/style/each_with_object.rb +3 -3
  176. data/lib/rubocop/cop/style/empty_method.rb +1 -5
  177. data/lib/rubocop/cop/style/end_block.rb +6 -0
  178. data/lib/rubocop/cop/style/eval_with_location.rb +1 -1
  179. data/lib/rubocop/cop/style/even_odd.rb +2 -2
  180. data/lib/rubocop/cop/style/expand_path_arguments.rb +3 -3
  181. data/lib/rubocop/cop/style/exponential_notation.rb +119 -0
  182. data/lib/rubocop/cop/style/format_string.rb +2 -2
  183. data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +89 -11
  184. data/lib/rubocop/cop/style/guard_clause.rb +28 -4
  185. data/lib/rubocop/cop/style/hash_each_methods.rb +89 -0
  186. data/lib/rubocop/cop/style/hash_syntax.rb +3 -5
  187. data/lib/rubocop/cop/style/hash_transform_keys.rb +83 -0
  188. data/lib/rubocop/cop/style/hash_transform_values.rb +80 -0
  189. data/lib/rubocop/cop/style/if_unless_modifier.rb +61 -6
  190. data/lib/rubocop/cop/style/if_with_semicolon.rb +16 -0
  191. data/lib/rubocop/cop/style/infinite_loop.rb +1 -1
  192. data/lib/rubocop/cop/style/inverse_methods.rb +9 -5
  193. data/lib/rubocop/cop/style/ip_addresses.rb +4 -4
  194. data/lib/rubocop/cop/style/lambda.rb +3 -2
  195. data/lib/rubocop/cop/style/lambda_call.rb +1 -21
  196. data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +169 -0
  197. data/lib/rubocop/cop/style/method_call_with_args_parentheses/require_parentheses.rb +54 -0
  198. data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +7 -205
  199. data/lib/rubocop/cop/style/mixin_grouping.rb +2 -2
  200. data/lib/rubocop/cop/style/module_function.rb +58 -12
  201. data/lib/rubocop/cop/style/multiline_if_modifier.rb +1 -1
  202. data/lib/rubocop/cop/style/multiline_memoization.rb +1 -1
  203. data/lib/rubocop/cop/style/multiline_method_signature.rb +1 -1
  204. data/lib/rubocop/cop/style/multiline_when_then.rb +21 -2
  205. data/lib/rubocop/cop/style/mutable_constant.rb +2 -4
  206. data/lib/rubocop/cop/style/nested_parenthesized_calls.rb +9 -9
  207. data/lib/rubocop/cop/style/next.rb +7 -7
  208. data/lib/rubocop/cop/style/nil_comparison.rb +1 -1
  209. data/lib/rubocop/cop/style/non_nil_check.rb +4 -4
  210. data/lib/rubocop/cop/style/not.rb +1 -1
  211. data/lib/rubocop/cop/style/numeric_literal_prefix.rb +1 -1
  212. data/lib/rubocop/cop/style/numeric_literals.rb +8 -4
  213. data/lib/rubocop/cop/style/numeric_predicate.rb +5 -4
  214. data/lib/rubocop/cop/style/one_line_conditional.rb +4 -3
  215. data/lib/rubocop/cop/style/option_hash.rb +3 -3
  216. data/lib/rubocop/cop/style/optional_arguments.rb +1 -1
  217. data/lib/rubocop/cop/style/or_assignment.rb +4 -3
  218. data/lib/rubocop/cop/style/percent_literal_delimiters.rb +7 -7
  219. data/lib/rubocop/cop/style/percent_q_literals.rb +1 -1
  220. data/lib/rubocop/cop/style/perl_backrefs.rb +2 -2
  221. data/lib/rubocop/cop/style/proc.rb +1 -1
  222. data/lib/rubocop/cop/style/raise_args.rb +1 -1
  223. data/lib/rubocop/cop/style/random_with_offset.rb +3 -3
  224. data/lib/rubocop/cop/style/redundant_condition.rb +18 -6
  225. data/lib/rubocop/cop/style/redundant_conditional.rb +1 -1
  226. data/lib/rubocop/cop/style/redundant_exception.rb +3 -3
  227. data/lib/rubocop/cop/style/redundant_interpolation.rb +2 -2
  228. data/lib/rubocop/cop/style/redundant_parentheses.rb +3 -3
  229. data/lib/rubocop/cop/style/redundant_percent_q.rb +2 -2
  230. data/lib/rubocop/cop/style/redundant_return.rb +7 -15
  231. data/lib/rubocop/cop/style/redundant_self.rb +1 -1
  232. data/lib/rubocop/cop/style/redundant_sort.rb +3 -3
  233. data/lib/rubocop/cop/style/rescue_modifier.rb +1 -1
  234. data/lib/rubocop/cop/style/return_nil.rb +1 -1
  235. data/lib/rubocop/cop/style/safe_navigation.rb +1 -1
  236. data/lib/rubocop/cop/style/self_assignment.rb +1 -1
  237. data/lib/rubocop/cop/style/slicing_with_range.rb +39 -0
  238. data/lib/rubocop/cop/style/special_global_vars.rb +1 -1
  239. data/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +1 -4
  240. data/lib/rubocop/cop/style/string_hash_keys.rb +1 -1
  241. data/lib/rubocop/cop/style/symbol_array.rb +3 -3
  242. data/lib/rubocop/cop/style/symbol_literal.rb +2 -2
  243. data/lib/rubocop/cop/style/ternary_parentheses.rb +2 -3
  244. data/lib/rubocop/cop/style/trailing_comma_in_arguments.rb +35 -22
  245. data/lib/rubocop/cop/style/trailing_comma_in_array_literal.rb +41 -0
  246. data/lib/rubocop/cop/style/trailing_comma_in_block_args.rb +88 -0
  247. data/lib/rubocop/cop/style/trailing_comma_in_hash_literal.rb +44 -0
  248. data/lib/rubocop/cop/style/trailing_underscore_variable.rb +7 -1
  249. data/lib/rubocop/cop/style/trivial_accessors.rb +6 -6
  250. data/lib/rubocop/cop/style/unpack_first.rb +0 -4
  251. data/lib/rubocop/cop/style/variable_interpolation.rb +1 -1
  252. data/lib/rubocop/cop/style/while_until_modifier.rb +2 -2
  253. data/lib/rubocop/cop/style/word_array.rb +1 -1
  254. data/lib/rubocop/cop/style/yoda_condition.rb +16 -1
  255. data/lib/rubocop/cop/style/zero_length_predicate.rb +1 -1
  256. data/lib/rubocop/cop/team.rb +5 -0
  257. data/lib/rubocop/cop/util.rb +24 -0
  258. data/lib/rubocop/cop/variable_force/assignment.rb +1 -0
  259. data/lib/rubocop/cop/variable_force/scope.rb +1 -0
  260. data/lib/rubocop/cop/variable_force/variable.rb +1 -0
  261. data/lib/rubocop/cop/variable_force.rb +4 -1
  262. data/lib/rubocop/formatter/base_formatter.rb +2 -2
  263. data/lib/rubocop/formatter/clang_style_formatter.rb +0 -2
  264. data/lib/rubocop/formatter/formatter_set.rb +1 -1
  265. data/lib/rubocop/formatter/json_formatter.rb +6 -5
  266. data/lib/rubocop/formatter/junit_formatter.rb +74 -0
  267. data/lib/rubocop/formatter/pacman_formatter.rb +1 -1
  268. data/lib/rubocop/formatter/tap_formatter.rb +0 -2
  269. data/lib/rubocop/name_similarity.rb +12 -9
  270. data/lib/rubocop/node_pattern.rb +97 -11
  271. data/lib/rubocop/options.rb +26 -13
  272. data/lib/rubocop/processed_source.rb +1 -4
  273. data/lib/rubocop/rake_task.rb +1 -0
  274. data/lib/rubocop/result_cache.rb +23 -7
  275. data/lib/rubocop/rspec/cop_helper.rb +1 -1
  276. data/lib/rubocop/rspec/expect_offense.rb +1 -1
  277. data/lib/rubocop/rspec/shared_contexts.rb +5 -4
  278. data/lib/rubocop/runner.rb +25 -4
  279. data/lib/rubocop/target_finder.rb +6 -4
  280. data/lib/rubocop/target_ruby.rb +151 -0
  281. data/lib/rubocop/version.rb +1 -1
  282. data/lib/rubocop.rb +53 -27
  283. metadata +73 -48
  284. data/lib/rubocop/cop/layout/align_array.rb +0 -39
  285. data/lib/rubocop/cop/lint/end_in_method.rb +0 -40
  286. data/lib/rubocop/cop/mixin/safe_mode.rb +0 -24
  287. data/lib/rubocop/cop/style/braces_around_hash_parameters.rb +0 -209
  288. data/lib/rubocop/formatter/disabled_lines_formatter.rb +0 -57
  289. data/lib/rubocop/string_util.rb +0 -14
data/config/default.yml CHANGED
@@ -35,6 +35,7 @@ AllCops:
35
35
  - '**/*.watchr'
36
36
  - '**/.irbrc'
37
37
  - '**/.pryrc'
38
+ - '**/.simplecov'
38
39
  - '**/buildfile'
39
40
  - '**/Appraisals'
40
41
  - '**/Berksfile'
@@ -53,12 +54,15 @@ AllCops:
53
54
  - '**/Podfile'
54
55
  - '**/Puppetfile'
55
56
  - '**/Rakefile'
57
+ - '**/rakefile'
56
58
  - '**/Snapfile'
59
+ - '**/Steepfile'
57
60
  - '**/Thorfile'
58
61
  - '**/Vagabondfile'
59
62
  - '**/Vagrantfile'
60
63
  Exclude:
61
64
  - 'node_modules/**/*'
65
+ - 'tmp/**/*'
62
66
  - 'vendor/**/*'
63
67
  - '.git/**/*'
64
68
  # Default formatter will be used if no `-f/--format` option is given.
@@ -95,6 +99,14 @@ AllCops:
95
99
  # to true in the same configuration.
96
100
  EnabledByDefault: false
97
101
  DisabledByDefault: false
102
+ # New cops introduced between major versions are set to a special pending status
103
+ # and are not enabled by default with warning message.
104
+ # Change this behavior by overriding either `NewCops: enable` or `NewCops: disable`.
105
+ # When `NewCops` is `enable`, pending cops are enabled in bulk. Can be overridden by
106
+ # the `--enable-pending-cops` command-line option.
107
+ # When `NewCops` is `disable`, pending cops are disabled in bulk. Can be overridden by
108
+ # the `--disable-pending-cops` command-line option.
109
+ NewCops: pending
98
110
  # Enables the result cache if `true`. Can be overridden by the `--cache` command
99
111
  # line option.
100
112
  UseCache: true
@@ -123,7 +135,7 @@ AllCops:
123
135
  # followed by the Gemfile.lock or gems.locked file. (Although the Ruby version
124
136
  # is specified in the Gemfile or gems.rb file, RuboCop reads the final value
125
137
  # from the lock file.) If the Ruby version is still unresolved, RuboCop will
126
- # use the oldest officially supported Ruby version (currently Ruby 2.3).
138
+ # use the oldest officially supported Ruby version (currently Ruby 2.4).
127
139
  TargetRubyVersion: ~
128
140
 
129
141
  #################### Bundler ###############################
@@ -141,11 +153,12 @@ Bundler/GemComment:
141
153
  Description: 'Add a comment describing each gem.'
142
154
  Enabled: false
143
155
  VersionAdded: '0.59'
156
+ VersionChanged: '0.77'
144
157
  Include:
145
158
  - '**/*.gemfile'
146
159
  - '**/Gemfile'
147
160
  - '**/gems.rb'
148
- Whitelist: []
161
+ IgnoredGems: []
149
162
 
150
163
  Bundler/InsecureProtocolSource:
151
164
  Description: >-
@@ -195,9 +208,10 @@ Gemspec/RequiredRubyVersion:
195
208
  VersionAdded: '0.52'
196
209
  Include:
197
210
  - '**/*.gemspec'
198
- -
211
+
199
212
  Gemspec/RubyVersionGlobalsUsage:
200
213
  Description: Checks usage of RUBY_VERSION in gemspec.
214
+ StyleGuide: '#no-ruby-version-in-the-gemspec'
201
215
  Enabled: true
202
216
  VersionAdded: '0.72'
203
217
  Include:
@@ -218,13 +232,14 @@ Layout/AccessModifierIndentation:
218
232
  # But it can be overridden by setting this parameter
219
233
  IndentationWidth: ~
220
234
 
221
- Layout/AlignArguments:
235
+ Layout/ArgumentAlignment:
222
236
  Description: >-
223
237
  Align the arguments of a method call if they span more
224
238
  than one line.
225
239
  StyleGuide: '#no-double-indent'
226
240
  Enabled: true
227
241
  VersionAdded: '0.68'
242
+ VersionChanged: '0.77'
228
243
  # Alignment of arguments in multi-line method calls.
229
244
  #
230
245
  # The `with_first_argument` style aligns the following lines along the same
@@ -246,120 +261,46 @@ Layout/AlignArguments:
246
261
  # But it can be overridden by setting this parameter
247
262
  IndentationWidth: ~
248
263
 
249
- Layout/AlignArray:
264
+ Layout/ArrayAlignment:
250
265
  Description: >-
251
266
  Align the elements of an array literal if they span more than
252
267
  one line.
253
- StyleGuide: '#align-multiline-arrays'
254
- Enabled: true
255
- VersionAdded: '0.49'
256
-
257
- Layout/AlignHash:
258
- Description: >-
259
- Align the elements of a hash literal if they span more than
260
- one line.
261
- Enabled: true
262
- AllowMultipleStyles: true
263
- VersionAdded: '0.49'
264
- # Alignment of entries using hash rocket as separator. Valid values are:
265
- #
266
- # key - left alignment of keys
267
- # 'a' => 2
268
- # 'bb' => 3
269
- # separator - alignment of hash rockets, keys are right aligned
270
- # 'a' => 2
271
- # 'bb' => 3
272
- # table - left alignment of keys, hash rockets, and values
273
- # 'a' => 2
274
- # 'bb' => 3
275
- EnforcedHashRocketStyle: key
276
- SupportedHashRocketStyles:
277
- - key
278
- - separator
279
- - table
280
- # Alignment of entries using colon as separator. Valid values are:
281
- #
282
- # key - left alignment of keys
283
- # a: 0
284
- # bb: 1
285
- # separator - alignment of colons, keys are right aligned
286
- # a: 0
287
- # bb: 1
288
- # table - left alignment of keys and values
289
- # a: 0
290
- # bb: 1
291
- EnforcedColonStyle: key
292
- SupportedColonStyles:
293
- - key
294
- - separator
295
- - table
296
- # Select whether hashes that are the last argument in a method call should be
297
- # inspected? Valid values are:
298
- #
299
- # always_inspect - Inspect both implicit and explicit hashes.
300
- # Registers an offense for:
301
- # function(a: 1,
302
- # b: 2)
303
- # Registers an offense for:
304
- # function({a: 1,
305
- # b: 2})
306
- # always_ignore - Ignore both implicit and explicit hashes.
307
- # Accepts:
308
- # function(a: 1,
309
- # b: 2)
310
- # Accepts:
311
- # function({a: 1,
312
- # b: 2})
313
- # ignore_implicit - Ignore only implicit hashes.
314
- # Accepts:
315
- # function(a: 1,
316
- # b: 2)
317
- # Registers an offense for:
318
- # function({a: 1,
319
- # b: 2})
320
- # ignore_explicit - Ignore only explicit hashes.
321
- # Accepts:
322
- # function({a: 1,
323
- # b: 2})
324
- # Registers an offense for:
325
- # function(a: 1,
326
- # b: 2)
327
- EnforcedLastArgumentHashStyle: always_inspect
328
- SupportedLastArgumentHashStyles:
329
- - always_inspect
330
- - always_ignore
331
- - ignore_implicit
332
- - ignore_explicit
333
-
334
- Layout/AlignParameters:
335
- Description: >-
336
- Align the parameters of a method definition if they span more
337
- than one line.
338
268
  StyleGuide: '#no-double-indent'
339
269
  Enabled: true
340
270
  VersionAdded: '0.49'
341
- VersionChanged: '0.68'
342
- # Alignment of parameters in multi-line method calls.
271
+ VersionChanged: '0.77'
272
+ # Alignment of elements of a multi-line array.
343
273
  #
344
274
  # The `with_first_parameter` style aligns the following lines along the same
345
- # column as the first parameter.
275
+ # column as the first element.
346
276
  #
347
- # def method_foo(a,
348
- # b)
277
+ # array = [1, 2, 3,
278
+ # 4, 5, 6]
349
279
  #
350
280
  # The `with_fixed_indentation` style aligns the following lines with one
351
- # level of indentation relative to the start of the line with the method call.
281
+ # level of indentation relative to the start of the line with start of array.
352
282
  #
353
- # def method_foo(a,
354
- # b)
355
- EnforcedStyle: with_first_parameter
283
+ # array = [1, 2, 3,
284
+ # 4, 5, 6]
285
+ EnforcedStyle: with_first_element
356
286
  SupportedStyles:
357
- - with_first_parameter
287
+ - with_first_element
358
288
  - with_fixed_indentation
359
289
  # By default, the indentation width from Layout/IndentationWidth is used
360
290
  # But it can be overridden by setting this parameter
361
291
  IndentationWidth: ~
362
292
 
293
+ Layout/AssignmentIndentation:
294
+ Description: >-
295
+ Checks the indentation of the first line of the
296
+ right-hand-side of a multi-line assignment.
297
+ Enabled: true
298
+ VersionAdded: '0.49'
299
+ VersionChanged: '0.77'
300
+ # By default, the indentation width from `Layout/IndentationWidth` is used
301
+ # But it can be overridden by setting this parameter
302
+ IndentationWidth: ~
303
+
363
304
  Layout/BlockAlignment:
364
305
  Description: 'Align block ends correctly.'
365
306
  Enabled: true
@@ -436,6 +377,7 @@ Layout/ConditionPosition:
436
377
  StyleGuide: '#same-line-condition'
437
378
  Enabled: true
438
379
  VersionAdded: '0.53'
380
+ VersionChanged: '0.83'
439
381
 
440
382
  Layout/DefEndAlignment:
441
383
  Description: 'Align ends corresponding to defs correctly.'
@@ -521,6 +463,12 @@ Layout/EmptyLinesAroundArguments:
521
463
  Enabled: true
522
464
  VersionAdded: '0.52'
523
465
 
466
+ Layout/EmptyLinesAroundAttributeAccessor:
467
+ Description: "Keep blank lines around attribute accessors."
468
+ StyleGuide: '#empty-lines-around-attribute-accessor'
469
+ Enabled: pending
470
+ VersionAdded: '0.83'
471
+
524
472
  Layout/EmptyLinesAroundBeginBody:
525
473
  Description: "Keeps track of empty lines around begin-end bodies."
526
474
  StyleGuide: '#empty-lines-around-bodies'
@@ -624,56 +572,11 @@ Layout/ExtraSpacing:
624
572
  # When true, forces the alignment of `=` in assignments on consecutive lines.
625
573
  ForceEqualSignAlignment: false
626
574
 
627
- Layout/FirstArrayElementLineBreak:
628
- Description: >-
629
- Checks for a line break before the first element in a
630
- multi-line array.
631
- Enabled: false
632
- VersionAdded: '0.49'
633
-
634
- Layout/FirstHashElementLineBreak:
635
- Description: >-
636
- Checks for a line break before the first element in a
637
- multi-line hash.
638
- Enabled: false
639
- VersionAdded: '0.49'
640
-
641
- Layout/FirstMethodArgumentLineBreak:
642
- Description: >-
643
- Checks for a line break before the first argument in a
644
- multi-line method call.
645
- Enabled: false
646
- VersionAdded: '0.49'
647
-
648
- Layout/FirstMethodParameterLineBreak:
649
- Description: >-
650
- Checks for a line break before the first parameter in a
651
- multi-line method parameter definition.
652
- Enabled: false
653
- VersionAdded: '0.49'
654
-
655
- Layout/HeredocArgumentClosingParenthesis:
656
- Description: >-
657
- Checks for the placement of the closing parenthesis in a
658
- method call that passes a HEREDOC string as an argument.
659
- Enabled: false
660
- StyleGuide: '#heredoc-argument-closing-parentheses'
661
- VersionAdded: '0.68'
662
-
663
- Layout/IndentAssignment:
664
- Description: >-
665
- Checks the indentation of the first line of the
666
- right-hand-side of a multi-line assignment.
667
- Enabled: true
668
- VersionAdded: '0.49'
669
- # By default, the indentation width from `Layout/IndentationWidth` is used
670
- # But it can be overridden by setting this parameter
671
- IndentationWidth: ~
672
-
673
- Layout/IndentFirstArgument:
575
+ Layout/FirstArgumentIndentation:
674
576
  Description: 'Checks the indentation of the first argument in a method call.'
675
577
  Enabled: true
676
578
  VersionAdded: '0.68'
579
+ VersionChanged: '0.77'
677
580
  EnforcedStyle: special_for_inner_method_call_in_parentheses
678
581
  SupportedStyles:
679
582
  # The first parameter should always be indented one step more than the
@@ -694,12 +597,13 @@ Layout/IndentFirstArgument:
694
597
  # But it can be overridden by setting this parameter
695
598
  IndentationWidth: ~
696
599
 
697
- Layout/IndentFirstArrayElement:
600
+ Layout/FirstArrayElementIndentation:
698
601
  Description: >-
699
602
  Checks the indentation of the first element in an array
700
603
  literal.
701
604
  Enabled: true
702
605
  VersionAdded: '0.68'
606
+ VersionChanged: '0.77'
703
607
  # The value `special_inside_parentheses` means that array literals with
704
608
  # brackets that have their opening bracket on the same line as a surrounding
705
609
  # opening round parenthesis, shall have their first element indented relative
@@ -720,10 +624,18 @@ Layout/IndentFirstArrayElement:
720
624
  # But it can be overridden by setting this parameter
721
625
  IndentationWidth: ~
722
626
 
723
- Layout/IndentFirstHashElement:
627
+ Layout/FirstArrayElementLineBreak:
628
+ Description: >-
629
+ Checks for a line break before the first element in a
630
+ multi-line array.
631
+ Enabled: false
632
+ VersionAdded: '0.49'
633
+
634
+ Layout/FirstHashElementIndentation:
724
635
  Description: 'Checks the indentation of the first key in a hash literal.'
725
636
  Enabled: true
726
637
  VersionAdded: '0.68'
638
+ VersionChanged: '0.77'
727
639
  # The value `special_inside_parentheses` means that hash literals with braces
728
640
  # that have their opening brace on the same line as a surrounding opening
729
641
  # round parenthesis, shall have their first key indented relative to the
@@ -744,13 +656,34 @@ Layout/IndentFirstHashElement:
744
656
  # But it can be overridden by setting this parameter
745
657
  IndentationWidth: ~
746
658
 
747
- Layout/IndentFirstParameter:
659
+ Layout/FirstHashElementLineBreak:
660
+ Description: >-
661
+ Checks for a line break before the first element in a
662
+ multi-line hash.
663
+ Enabled: false
664
+ VersionAdded: '0.49'
665
+
666
+ Layout/FirstMethodArgumentLineBreak:
667
+ Description: >-
668
+ Checks for a line break before the first argument in a
669
+ multi-line method call.
670
+ Enabled: false
671
+ VersionAdded: '0.49'
672
+
673
+ Layout/FirstMethodParameterLineBreak:
674
+ Description: >-
675
+ Checks for a line break before the first parameter in a
676
+ multi-line method parameter definition.
677
+ Enabled: false
678
+ VersionAdded: '0.49'
679
+
680
+ Layout/FirstParameterIndentation:
748
681
  Description: >-
749
682
  Checks the indentation of the first parameter in a
750
683
  method definition.
751
684
  Enabled: true
752
685
  VersionAdded: '0.49'
753
- VersionChanged: '0.68'
686
+ VersionChanged: '0.77'
754
687
  EnforcedStyle: consistent
755
688
  SupportedStyles:
756
689
  - consistent
@@ -759,12 +692,98 @@ Layout/IndentFirstParameter:
759
692
  # But it can be overridden by setting this parameter
760
693
  IndentationWidth: ~
761
694
 
762
- Layout/IndentHeredoc:
695
+ Layout/HashAlignment:
696
+ Description: >-
697
+ Align the elements of a hash literal if they span more than
698
+ one line.
699
+ Enabled: true
700
+ AllowMultipleStyles: true
701
+ VersionAdded: '0.49'
702
+ VersionChanged: '0.77'
703
+ # Alignment of entries using hash rocket as separator. Valid values are:
704
+ #
705
+ # key - left alignment of keys
706
+ # 'a' => 2
707
+ # 'bb' => 3
708
+ # separator - alignment of hash rockets, keys are right aligned
709
+ # 'a' => 2
710
+ # 'bb' => 3
711
+ # table - left alignment of keys, hash rockets, and values
712
+ # 'a' => 2
713
+ # 'bb' => 3
714
+ EnforcedHashRocketStyle: key
715
+ SupportedHashRocketStyles:
716
+ - key
717
+ - separator
718
+ - table
719
+ # Alignment of entries using colon as separator. Valid values are:
720
+ #
721
+ # key - left alignment of keys
722
+ # a: 0
723
+ # bb: 1
724
+ # separator - alignment of colons, keys are right aligned
725
+ # a: 0
726
+ # bb: 1
727
+ # table - left alignment of keys and values
728
+ # a: 0
729
+ # bb: 1
730
+ EnforcedColonStyle: key
731
+ SupportedColonStyles:
732
+ - key
733
+ - separator
734
+ - table
735
+ # Select whether hashes that are the last argument in a method call should be
736
+ # inspected? Valid values are:
737
+ #
738
+ # always_inspect - Inspect both implicit and explicit hashes.
739
+ # Registers an offense for:
740
+ # function(a: 1,
741
+ # b: 2)
742
+ # Registers an offense for:
743
+ # function({a: 1,
744
+ # b: 2})
745
+ # always_ignore - Ignore both implicit and explicit hashes.
746
+ # Accepts:
747
+ # function(a: 1,
748
+ # b: 2)
749
+ # Accepts:
750
+ # function({a: 1,
751
+ # b: 2})
752
+ # ignore_implicit - Ignore only implicit hashes.
753
+ # Accepts:
754
+ # function(a: 1,
755
+ # b: 2)
756
+ # Registers an offense for:
757
+ # function({a: 1,
758
+ # b: 2})
759
+ # ignore_explicit - Ignore only explicit hashes.
760
+ # Accepts:
761
+ # function({a: 1,
762
+ # b: 2})
763
+ # Registers an offense for:
764
+ # function(a: 1,
765
+ # b: 2)
766
+ EnforcedLastArgumentHashStyle: always_inspect
767
+ SupportedLastArgumentHashStyles:
768
+ - always_inspect
769
+ - always_ignore
770
+ - ignore_implicit
771
+ - ignore_explicit
772
+
773
+ Layout/HeredocArgumentClosingParenthesis:
774
+ Description: >-
775
+ Checks for the placement of the closing parenthesis in a
776
+ method call that passes a HEREDOC string as an argument.
777
+ Enabled: false
778
+ StyleGuide: '#heredoc-argument-closing-parentheses'
779
+ VersionAdded: '0.68'
780
+
781
+ Layout/HeredocIndentation:
763
782
  Description: 'This cop checks the indentation of the here document bodies.'
764
783
  StyleGuide: '#squiggly-heredocs'
765
784
  Enabled: true
766
785
  VersionAdded: '0.49'
767
- VersionChanged: '0.69'
786
+ VersionChanged: '0.77'
768
787
  EnforcedStyle: squiggly
769
788
  SupportedStyles:
770
789
  - squiggly
@@ -791,6 +810,22 @@ Layout/IndentationConsistency:
791
810
  # A reference to `EnforcedStyle: indented_internal_methods`.
792
811
  - https://edgeguides.rubyonrails.org/contributing_to_ruby_on_rails.html#follow-the-coding-conventions
793
812
 
813
+ Layout/IndentationStyle:
814
+ Description: 'Consistent indentation either with tabs only or spaces only.'
815
+ StyleGuide: '#spaces-indentation'
816
+ Enabled: true
817
+ VersionAdded: '0.49'
818
+ VersionChanged: '0.82'
819
+ # By default, the indentation width from Layout/IndentationWidth is used
820
+ # But it can be overridden by setting this parameter
821
+ # It is used during auto-correction to determine how many spaces should
822
+ # replace each tab.
823
+ IndentationWidth: ~
824
+ EnforcedStyle: spaces
825
+ SupportedStyles:
826
+ - spaces
827
+ - tabs
828
+
794
829
  Layout/IndentationWidth:
795
830
  Description: 'Use 2 spaces for indentation.'
796
831
  StyleGuide: '#spaces-indentation'
@@ -806,11 +841,6 @@ Layout/InitialIndentation:
806
841
  Enabled: true
807
842
  VersionAdded: '0.49'
808
843
 
809
- Layout/LeadingBlankLines:
810
- Description: Check for unnecessary blank lines at the beginning of a file.
811
- Enabled: true
812
- VersionAdded: '0.57'
813
-
814
844
  Layout/LeadingCommentSpace:
815
845
  Description: 'Comments should start with a space.'
816
846
  StyleGuide: '#hash-space'
@@ -818,6 +848,36 @@ Layout/LeadingCommentSpace:
818
848
  VersionAdded: '0.49'
819
849
  VersionChanged: '0.73'
820
850
  AllowDoxygenCommentStyle: false
851
+ AllowGemfileRubyComment: false
852
+
853
+ Layout/LeadingEmptyLines:
854
+ Description: Check for unnecessary blank lines at the beginning of a file.
855
+ Enabled: true
856
+ VersionAdded: '0.57'
857
+ VersionChanged: '0.77'
858
+
859
+ Layout/LineLength:
860
+ Description: 'Limit lines to 80 characters.'
861
+ StyleGuide: '#80-character-limits'
862
+ Enabled: true
863
+ VersionAdded: '0.25'
864
+ VersionChanged: '0.78'
865
+ AutoCorrect: false
866
+ Max: 80
867
+ # To make it possible to copy or click on URIs in the code, we allow lines
868
+ # containing a URI to be longer than Max.
869
+ AllowHeredoc: true
870
+ AllowURI: true
871
+ URISchemes:
872
+ - http
873
+ - https
874
+ # The IgnoreCopDirectives option causes the LineLength rule to ignore cop
875
+ # directives like '# rubocop: enable ...' when calculating a line's length.
876
+ IgnoreCopDirectives: true
877
+ # The IgnoredPatterns option is a list of !ruby/regexp and/or string
878
+ # elements. Strings will be converted to Regexp objects. A line that matches
879
+ # any regular expression listed in this option will be ignored by LineLength.
880
+ IgnoredPatterns: []
821
881
 
822
882
  Layout/MultilineArrayBraceLayout:
823
883
  Description: >-
@@ -960,6 +1020,35 @@ Layout/MultilineOperationIndentation:
960
1020
  # But it can be overridden by setting this parameter
961
1021
  IndentationWidth: ~
962
1022
 
1023
+ Layout/ParameterAlignment:
1024
+ Description: >-
1025
+ Align the parameters of a method definition if they span more
1026
+ than one line.
1027
+ StyleGuide: '#no-double-indent'
1028
+ Enabled: true
1029
+ VersionAdded: '0.49'
1030
+ VersionChanged: '0.77'
1031
+ # Alignment of parameters in multi-line method calls.
1032
+ #
1033
+ # The `with_first_parameter` style aligns the following lines along the same
1034
+ # column as the first parameter.
1035
+ #
1036
+ # def method_foo(a,
1037
+ # b)
1038
+ #
1039
+ # The `with_fixed_indentation` style aligns the following lines with one
1040
+ # level of indentation relative to the start of the line with the method call.
1041
+ #
1042
+ # def method_foo(a,
1043
+ # b)
1044
+ EnforcedStyle: with_first_parameter
1045
+ SupportedStyles:
1046
+ - with_first_parameter
1047
+ - with_fixed_indentation
1048
+ # By default, the indentation width from Layout/IndentationWidth is used
1049
+ # But it can be overridden by setting this parameter
1050
+ IndentationWidth: ~
1051
+
963
1052
  Layout/RescueEnsureAlignment:
964
1053
  Description: 'Align rescues and ensures correctly.'
965
1054
  Enabled: true
@@ -1024,6 +1113,11 @@ Layout/SpaceAroundKeyword:
1024
1113
  Enabled: true
1025
1114
  VersionAdded: '0.49'
1026
1115
 
1116
+ Layout/SpaceAroundMethodCallOperator:
1117
+ Description: 'Checks method call operators to not have spaces around them.'
1118
+ Enabled: pending
1119
+ VersionAdded: '0.82'
1120
+
1027
1121
  Layout/SpaceAroundOperators:
1028
1122
  Description: 'Use a single space around operators.'
1029
1123
  StyleGuide: '#spaces-operators'
@@ -1033,6 +1127,10 @@ Layout/SpaceAroundOperators:
1033
1127
  # with an operator on the previous or next line, not counting empty lines
1034
1128
  # or comment lines.
1035
1129
  AllowForAlignment: true
1130
+ EnforcedStyleForExponentOperator: no_space
1131
+ SupportedStylesForExponentOperator:
1132
+ - space
1133
+ - no_space
1036
1134
 
1037
1135
  Layout/SpaceBeforeBlockBraces:
1038
1136
  Description: >-
@@ -1190,23 +1288,12 @@ Layout/SpaceInsideStringInterpolation:
1190
1288
  - space
1191
1289
  - no_space
1192
1290
 
1193
- Layout/Tab:
1194
- Description: 'No hard tabs.'
1195
- StyleGuide: '#spaces-indentation'
1196
- Enabled: true
1197
- VersionAdded: '0.49'
1198
- VersionChanged: '0.51'
1199
- # By default, the indentation width from Layout/IndentationWidth is used
1200
- # But it can be overridden by setting this parameter
1201
- # It is used during auto-correction to determine how many spaces should
1202
- # replace each tab.
1203
- IndentationWidth: ~
1204
-
1205
- Layout/TrailingBlankLines:
1291
+ Layout/TrailingEmptyLines:
1206
1292
  Description: 'Checks trailing blank lines and final newline.'
1207
1293
  StyleGuide: '#newline-eof'
1208
1294
  Enabled: true
1209
1295
  VersionAdded: '0.49'
1296
+ VersionChanged: '0.77'
1210
1297
  EnforcedStyle: final_newline
1211
1298
  SupportedStyles:
1212
1299
  - final_newline
@@ -1217,8 +1304,8 @@ Layout/TrailingWhitespace:
1217
1304
  StyleGuide: '#no-trailing-whitespace'
1218
1305
  Enabled: true
1219
1306
  VersionAdded: '0.49'
1220
- VersionChanged: '0.55'
1221
- AllowInHeredoc: false
1307
+ VersionChanged: '0.83'
1308
+ AllowInHeredoc: true
1222
1309
 
1223
1310
  #################### Lint ##################################
1224
1311
  ### Warnings
@@ -1238,6 +1325,7 @@ Lint/AmbiguousOperator:
1238
1325
  StyleGuide: '#method-invocation-parens'
1239
1326
  Enabled: true
1240
1327
  VersionAdded: '0.17'
1328
+ VersionChanged: '0.83'
1241
1329
 
1242
1330
  Lint/AmbiguousRegexpLiteral:
1243
1331
  Description: >-
@@ -1245,6 +1333,7 @@ Lint/AmbiguousRegexpLiteral:
1245
1333
  a method invocation without parentheses.
1246
1334
  Enabled: true
1247
1335
  VersionAdded: '0.17'
1336
+ VersionChanged: '0.83'
1248
1337
 
1249
1338
  Lint/AssignmentInCondition:
1250
1339
  Description: "Don't use assignment in conditions."
@@ -1261,7 +1350,9 @@ Lint/BigDecimalNew:
1261
1350
  Lint/BooleanSymbol:
1262
1351
  Description: 'Check for `:true` and `:false` symbols.'
1263
1352
  Enabled: true
1353
+ Safe: false
1264
1354
  VersionAdded: '0.50'
1355
+ VersionChanged: '0.83'
1265
1356
 
1266
1357
  Lint/CircularArgumentReference:
1267
1358
  Description: "Default values in optional keyword arguments and optional ordinal arguments should not refer back to the name of the argument."
@@ -1290,16 +1381,17 @@ Lint/DuplicateCaseCondition:
1290
1381
  Enabled: true
1291
1382
  VersionAdded: '0.45'
1292
1383
 
1384
+ Lint/DuplicateHashKey:
1385
+ Description: 'Check for duplicate keys in hash literals.'
1386
+ Enabled: true
1387
+ VersionAdded: '0.34'
1388
+ VersionChanged: '0.77'
1389
+
1293
1390
  Lint/DuplicateMethods:
1294
1391
  Description: 'Check for duplicate method definitions.'
1295
1392
  Enabled: true
1296
1393
  VersionAdded: '0.29'
1297
1394
 
1298
- Lint/DuplicatedKey:
1299
- Description: 'Check for duplicate keys in hash literals.'
1300
- Enabled: true
1301
- VersionAdded: '0.34'
1302
-
1303
1395
  Lint/EachWithObjectArgument:
1304
1396
  Description: 'Check for immutable argument given to each_with_object.'
1305
1397
  Enabled: true
@@ -1331,18 +1423,16 @@ Lint/EmptyInterpolation:
1331
1423
  Lint/EmptyWhen:
1332
1424
  Description: 'Checks for `when` branches with empty bodies.'
1333
1425
  Enabled: true
1426
+ AllowComments: true
1334
1427
  VersionAdded: '0.45'
1335
-
1336
- Lint/EndInMethod:
1337
- Description: 'END blocks should not be placed inside method definitions.'
1338
- Enabled: true
1339
- VersionAdded: '0.9'
1428
+ VersionChanged: '0.83'
1340
1429
 
1341
1430
  Lint/EnsureReturn:
1342
1431
  Description: 'Do not use return in an ensure block.'
1343
1432
  StyleGuide: '#no-return-ensure'
1344
1433
  Enabled: true
1345
1434
  VersionAdded: '0.9'
1435
+ VersionChanged: '0.83'
1346
1436
 
1347
1437
  Lint/ErbNewArguments:
1348
1438
  Description: 'Use `:trim_mode` and `:eoutvar` keyword arguments to `ERB.new`.'
@@ -1367,14 +1457,6 @@ Lint/FormatParameterMismatch:
1367
1457
  Enabled: true
1368
1458
  VersionAdded: '0.33'
1369
1459
 
1370
- Lint/HandleExceptions:
1371
- Description: "Don't suppress exception."
1372
- StyleGuide: '#dont-hide-exceptions'
1373
- Enabled: true
1374
- AllowComments: false
1375
- VersionAdded: '0.9'
1376
- VersionChanged: '0.70'
1377
-
1378
1460
  Lint/HeredocMethodCallPosition:
1379
1461
  Description: >-
1380
1462
  Checks for the ordering of a method call where
@@ -1444,10 +1526,11 @@ Lint/MissingCopEnableDirective:
1444
1526
  # .inf for any size
1445
1527
  MaximumRangeSize: .inf
1446
1528
 
1447
- Lint/MultipleCompare:
1448
- Description: "Use `&&` operator to compare multiple value."
1529
+ Lint/MultipleComparison:
1530
+ Description: "Use `&&` operator to compare multiple values."
1449
1531
  Enabled: true
1450
1532
  VersionAdded: '0.47'
1533
+ VersionChanged: '0.77'
1451
1534
 
1452
1535
  Lint/NestedMethodDefinition:
1453
1536
  Description: 'Do not use nested method definitions.'
@@ -1467,6 +1550,12 @@ Lint/NextWithoutAccumulator:
1467
1550
  Enabled: true
1468
1551
  VersionAdded: '0.36'
1469
1552
 
1553
+ Lint/NonDeterministicRequireOrder:
1554
+ Description: 'Always sort arrays returned by Dir.glob when requiring files.'
1555
+ Enabled: true
1556
+ VersionAdded: '0.78'
1557
+ Safe: false
1558
+
1470
1559
  Lint/NonLocalExitFromIterator:
1471
1560
  Description: 'Do not use return in iterator to cause non-local exit.'
1472
1561
  Enabled: true
@@ -1491,6 +1580,7 @@ Lint/ParenthesesAsGroupedExpression:
1491
1580
  StyleGuide: '#parens-no-spaces'
1492
1581
  Enabled: true
1493
1582
  VersionAdded: '0.12'
1583
+ VersionChanged: '0.83'
1494
1584
 
1495
1585
  Lint/PercentStringArray:
1496
1586
  Description: >-
@@ -1505,6 +1595,14 @@ Lint/PercentSymbolArray:
1505
1595
  Enabled: true
1506
1596
  VersionAdded: '0.41'
1507
1597
 
1598
+ Lint/RaiseException:
1599
+ Description: Checks for `raise` or `fail` statements which are raising `Exception` class.
1600
+ StyleGuide: '#raise-exception'
1601
+ Enabled: pending
1602
+ VersionAdded: '0.81'
1603
+ AllowedImplicitNamespaces:
1604
+ - 'Gem'
1605
+
1508
1606
  Lint/RandOne:
1509
1607
  Description: >-
1510
1608
  Checks for `rand(1)` calls. Such calls always return `0`
@@ -1533,7 +1631,14 @@ Lint/RedundantRequireStatement:
1533
1631
  Lint/RedundantSplatExpansion:
1534
1632
  Description: 'Checks for splat unnecessarily being called on literals.'
1535
1633
  Enabled: true
1536
- VersionChanged: '0.76'
1634
+ VersionAdded: '0.76'
1635
+
1636
+ Lint/RedundantStringCoercion:
1637
+ Description: 'Checks for Object#to_s usage in string interpolation.'
1638
+ StyleGuide: '#no-to-s'
1639
+ Enabled: true
1640
+ VersionAdded: '0.19'
1641
+ VersionChanged: '0.77'
1537
1642
 
1538
1643
  Lint/RedundantWithIndex:
1539
1644
  Description: 'Checks for redundant `with_index`.'
@@ -1580,8 +1685,8 @@ Lint/SafeNavigationChain:
1580
1685
  Description: 'Do not chain ordinary method call after safe navigation operator.'
1581
1686
  Enabled: true
1582
1687
  VersionAdded: '0.47'
1583
- VersionChanged: '0.56'
1584
- Whitelist:
1688
+ VersionChanged: '0.77'
1689
+ AllowedMethods:
1585
1690
  - present?
1586
1691
  - blank?
1587
1692
  - presence
@@ -1595,14 +1700,14 @@ Lint/SafeNavigationConsistency:
1595
1700
  for all method calls on that same object.
1596
1701
  Enabled: true
1597
1702
  VersionAdded: '0.55'
1598
- Whitelist:
1703
+ VersionChanged: '0.77'
1704
+ AllowedMethods:
1599
1705
  - present?
1600
1706
  - blank?
1601
1707
  - presence
1602
1708
  - try
1603
1709
  - try!
1604
1710
 
1605
-
1606
1711
  Lint/SafeNavigationWithEmpty:
1607
1712
  Description: 'Avoid `foo&.empty?` in conditionals.'
1608
1713
  Enabled: true
@@ -1640,12 +1745,18 @@ Lint/ShadowingOuterLocalVariable:
1640
1745
  Enabled: true
1641
1746
  VersionAdded: '0.9'
1642
1747
 
1643
- Lint/StringConversionInInterpolation:
1644
- Description: 'Checks for Object#to_s usage in string interpolation.'
1645
- StyleGuide: '#no-to-s'
1748
+ Lint/StructNewOverride:
1749
+ Description: 'Disallow overriding the `Struct` built-in methods via `Struct.new`.'
1750
+ Enabled: pending
1751
+ VersionAdded: '0.81'
1752
+
1753
+ Lint/SuppressedException:
1754
+ Description: "Don't suppress exceptions."
1755
+ StyleGuide: '#dont-hide-exceptions'
1646
1756
  Enabled: true
1647
- VersionAdded: '0.19'
1648
- VersionChanged: '0.20'
1757
+ AllowComments: true
1758
+ VersionAdded: '0.9'
1759
+ VersionChanged: '0.81'
1649
1760
 
1650
1761
  Lint/Syntax:
1651
1762
  Description: 'Checks syntax error.'
@@ -1656,6 +1767,7 @@ Lint/Syntax:
1656
1767
  Lint/ToJSON:
1657
1768
  Description: 'Ensure #to_json includes an optional argument.'
1658
1769
  Enabled: true
1770
+ VersionAdded: '0.66'
1659
1771
 
1660
1772
  Lint/UnderscorePrefixedVariableName:
1661
1773
  Description: 'Do not use prefix `_` for a variable that is used.'
@@ -1687,9 +1799,10 @@ Lint/UnusedMethodArgument:
1687
1799
  StyleGuide: '#underscore-unused-vars'
1688
1800
  Enabled: true
1689
1801
  VersionAdded: '0.21'
1690
- VersionChanged: '0.35'
1802
+ VersionChanged: '0.81'
1691
1803
  AllowUnusedKeywordArguments: false
1692
1804
  IgnoreEmptyMethods: true
1805
+ IgnoreNotImplementedMethods: true
1693
1806
 
1694
1807
  Lint/UriEscapeUnescape:
1695
1808
  Description: >-
@@ -1711,7 +1824,7 @@ Lint/UselessAccessModifier:
1711
1824
  Description: 'Checks for useless access modifiers.'
1712
1825
  Enabled: true
1713
1826
  VersionAdded: '0.20'
1714
- VersionChanged: '0.47'
1827
+ VersionChanged: '0.83'
1715
1828
  ContextCreatingMethods: []
1716
1829
  MethodCreatingMethods: []
1717
1830
 
@@ -1735,6 +1848,8 @@ Lint/UselessSetterCall:
1735
1848
  Description: 'Checks for useless setter call to a local variable.'
1736
1849
  Enabled: true
1737
1850
  VersionAdded: '0.13'
1851
+ VersionChanged: '0.80'
1852
+ Safe: false
1738
1853
 
1739
1854
  Lint/Void:
1740
1855
  Description: 'Possible use of operator/literal/variable in void context.'
@@ -1753,9 +1868,10 @@ Metrics/AbcSize:
1753
1868
  - https://en.wikipedia.org/wiki/ABC_Software_Metric
1754
1869
  Enabled: true
1755
1870
  VersionAdded: '0.27'
1756
- VersionChanged: '0.66'
1871
+ VersionChanged: '0.81'
1757
1872
  # The ABC size is a calculated magnitude, so this number can be an Integer or
1758
1873
  # a Float.
1874
+ IgnoredMethods: []
1759
1875
  Max: 15
1760
1876
 
1761
1877
  Metrics/BlockLength:
@@ -1795,31 +1911,10 @@ Metrics/CyclomaticComplexity:
1795
1911
  of test cases needed to validate a method.
1796
1912
  Enabled: true
1797
1913
  VersionAdded: '0.25'
1914
+ VersionChanged: '0.81'
1915
+ IgnoredMethods: []
1798
1916
  Max: 6
1799
1917
 
1800
- Metrics/LineLength:
1801
- Description: 'Limit lines to 80 characters.'
1802
- StyleGuide: '#80-character-limits'
1803
- Enabled: true
1804
- VersionAdded: '0.25'
1805
- VersionChanged: '0.68'
1806
- AutoCorrect: false
1807
- Max: 80
1808
- # To make it possible to copy or click on URIs in the code, we allow lines
1809
- # containing a URI to be longer than Max.
1810
- AllowHeredoc: true
1811
- AllowURI: true
1812
- URISchemes:
1813
- - http
1814
- - https
1815
- # The IgnoreCopDirectives option causes the LineLength rule to ignore cop
1816
- # directives like '# rubocop: enable ...' when calculating a line's length.
1817
- IgnoreCopDirectives: true
1818
- # The IgnoredPatterns option is a list of !ruby/regexp and/or string
1819
- # elements. Strings will be converted to Regexp objects. A line that matches
1820
- # any regular expression listed in this option will be ignored by LineLength.
1821
- IgnoredPatterns: []
1822
-
1823
1918
  Metrics/MethodLength:
1824
1919
  Description: 'Avoid methods longer than 10 lines of code.'
1825
1920
  StyleGuide: '#short-methods'
@@ -1851,6 +1946,8 @@ Metrics/PerceivedComplexity:
1851
1946
  human reader.
1852
1947
  Enabled: true
1853
1948
  VersionAdded: '0.25'
1949
+ VersionChanged: '0.81'
1950
+ IgnoredMethods: []
1854
1951
  Max: 7
1855
1952
 
1856
1953
  ################## Migration #############################
@@ -1859,7 +1956,8 @@ Migration/DepartmentName:
1859
1956
  Description: >-
1860
1957
  Check that cop names in rubocop:disable (etc) comments are
1861
1958
  given with department name.
1862
- Enabled: false
1959
+ Enabled: true
1960
+ VersionAdded: '0.75'
1863
1961
 
1864
1962
  #################### Naming ##############################
1865
1963
 
@@ -1881,6 +1979,21 @@ Naming/BinaryOperatorParameterName:
1881
1979
  Enabled: true
1882
1980
  VersionAdded: '0.50'
1883
1981
 
1982
+ Naming/BlockParameterName:
1983
+ Description: >-
1984
+ Checks for block parameter names that contain capital letters,
1985
+ end in numbers, or do not meet a minimal length.
1986
+ Enabled: true
1987
+ VersionAdded: '0.53'
1988
+ VersionChanged: '0.77'
1989
+ # Parameter names may be equal to or greater than this value
1990
+ MinNameLength: 1
1991
+ AllowNamesEndingInNumbers: true
1992
+ # Allowed names that will not register an offense
1993
+ AllowedNames: []
1994
+ # Forbidden names that will register an offense
1995
+ ForbiddenNames: []
1996
+
1884
1997
  Naming/ClassAndModuleCamelCase:
1885
1998
  Description: 'Use CamelCase for classes and modules.'
1886
1999
  StyleGuide: '#camelcase-classes'
@@ -1972,7 +2085,7 @@ Naming/HeredocDelimiterNaming:
1972
2085
  StyleGuide: '#heredoc-delimiters'
1973
2086
  Enabled: true
1974
2087
  VersionAdded: '0.50'
1975
- Blacklist:
2088
+ ForbiddenDelimiters:
1976
2089
  - !ruby/regexp '/(^|\s)(EO[A-Z]{1}|END)(\s|$)/'
1977
2090
 
1978
2091
  Naming/MemoizedInstanceVariableName:
@@ -2004,25 +2117,51 @@ Naming/MethodName:
2004
2117
  #
2005
2118
  IgnoredPatterns: []
2006
2119
 
2120
+ Naming/MethodParameterName:
2121
+ Description: >-
2122
+ Checks for method parameter names that contain capital letters,
2123
+ end in numbers, or do not meet a minimal length.
2124
+ Enabled: true
2125
+ VersionAdded: '0.53'
2126
+ VersionChanged: '0.77'
2127
+ # Parameter names may be equal to or greater than this value
2128
+ MinNameLength: 3
2129
+ AllowNamesEndingInNumbers: true
2130
+ # Allowed names that will not register an offense
2131
+ AllowedNames:
2132
+ - io
2133
+ - id
2134
+ - to
2135
+ - by
2136
+ - 'on'
2137
+ - in
2138
+ - at
2139
+ - ip
2140
+ - db
2141
+ - os
2142
+ - pp
2143
+ # Forbidden names that will register an offense
2144
+ ForbiddenNames: []
2145
+
2007
2146
  Naming/PredicateName:
2008
2147
  Description: 'Check the names of predicate methods.'
2009
2148
  StyleGuide: '#bool-methods-qmark'
2010
2149
  Enabled: true
2011
2150
  VersionAdded: '0.50'
2012
- VersionChanged: '0.51'
2151
+ VersionChanged: '0.77'
2013
2152
  # Predicate name prefixes.
2014
2153
  NamePrefix:
2015
2154
  - is_
2016
2155
  - has_
2017
2156
  - have_
2018
2157
  # Predicate name prefixes that should be removed.
2019
- NamePrefixBlacklist:
2158
+ ForbiddenPrefixes:
2020
2159
  - is_
2021
2160
  - has_
2022
2161
  - have_
2023
- # Predicate names which, despite having a blacklisted prefix, or no `?`,
2162
+ # Predicate names which, despite having a forbidden prefix, or no `?`,
2024
2163
  # should still be accepted
2025
- NameWhitelist:
2164
+ AllowedMethods:
2026
2165
  - is_a?
2027
2166
  # Method definition macros for dynamically generated methods.
2028
2167
  MethodDefinitionMacros:
@@ -2040,46 +2179,6 @@ Naming/RescuedExceptionsVariableName:
2040
2179
  VersionChanged: '0.68'
2041
2180
  PreferredName: e
2042
2181
 
2043
- Naming/UncommunicativeBlockParamName:
2044
- Description: >-
2045
- Checks for block parameter names that contain capital letters,
2046
- end in numbers, or do not meet a minimal length.
2047
- Enabled: true
2048
- VersionAdded: '0.53'
2049
- # Parameter names may be equal to or greater than this value
2050
- MinNameLength: 1
2051
- AllowNamesEndingInNumbers: true
2052
- # Whitelisted names that will not register an offense
2053
- AllowedNames: []
2054
- # Blacklisted names that will register an offense
2055
- ForbiddenNames: []
2056
-
2057
- Naming/UncommunicativeMethodParamName:
2058
- Description: >-
2059
- Checks for method parameter names that contain capital letters,
2060
- end in numbers, or do not meet a minimal length.
2061
- Enabled: true
2062
- VersionAdded: '0.53'
2063
- VersionChanged: '0.59'
2064
- # Parameter names may be equal to or greater than this value
2065
- MinNameLength: 3
2066
- AllowNamesEndingInNumbers: true
2067
- # Whitelisted names that will not register an offense
2068
- AllowedNames:
2069
- - io
2070
- - id
2071
- - to
2072
- - by
2073
- - 'on'
2074
- - in
2075
- - at
2076
- - ip
2077
- - db
2078
- - os
2079
- # Blacklisted names that will register an offense
2080
- ForbiddenNames: []
2081
-
2082
-
2083
2182
  Naming/VariableName:
2084
2183
  Description: 'Use the configured style when naming variables.'
2085
2184
  StyleGuide: '#snake-case-symbols-methods-vars'
@@ -2149,10 +2248,12 @@ Style/AccessModifierDeclarations:
2149
2248
  Description: 'Checks style of how access modifiers are used.'
2150
2249
  Enabled: true
2151
2250
  VersionAdded: '0.57'
2251
+ VersionChanged: '0.81'
2152
2252
  EnforcedStyle: group
2153
2253
  SupportedStyles:
2154
2254
  - inline
2155
2255
  - group
2256
+ AllowModifiersOnSymbols: true
2156
2257
 
2157
2258
  Style/Alias:
2158
2259
  Description: 'Use alias instead of alias_method.'
@@ -2331,30 +2432,27 @@ Style/BlockDelimiters:
2331
2432
  # # also good
2332
2433
  # collection.each do |element| puts element end
2333
2434
  AllowBracesOnProceduralOneLiners: false
2334
-
2335
- Style/BracesAroundHashParameters:
2336
- Description: 'Enforce braces style around hash parameters.'
2337
- Enabled: true
2338
- VersionAdded: '0.14.1'
2339
- VersionChanged: '0.28'
2340
- EnforcedStyle: no_braces
2341
- SupportedStyles:
2342
- # The `braces` style enforces braces around all method parameters that are
2343
- # hashes.
2344
- - braces
2345
- # The `no_braces` style checks that the last parameter doesn't have braces
2346
- # around it.
2347
- - no_braces
2348
- # The `context_dependent` style checks that the last parameter doesn't have
2349
- # braces around it, but requires braces if the second to last parameter is
2350
- # also a hash literal.
2351
- - context_dependent
2435
+ # The BracesRequiredMethods overrides all other configurations except
2436
+ # IgnoredMethods. It can be used to enforce that all blocks for specific
2437
+ # methods use braces. For example, you can use this to enforce Sorbet
2438
+ # signatures use braces even when the rest of your codebase enforces
2439
+ # the `line_count_based` style.
2440
+ BracesRequiredMethods: []
2352
2441
 
2353
2442
  Style/CaseEquality:
2354
2443
  Description: 'Avoid explicit use of the case equality operator(===).'
2355
2444
  StyleGuide: '#no-case-equality'
2356
2445
  Enabled: true
2357
2446
  VersionAdded: '0.9'
2447
+ # If AllowOnConstant is enabled, the cop will ignore violations when the receiver of
2448
+ # the case equality operator is a constant.
2449
+ #
2450
+ # # bad
2451
+ # /string/ === "string"
2452
+ #
2453
+ # # good
2454
+ # String === "string"
2455
+ AllowOnConstant: false
2358
2456
 
2359
2457
  Style/CharacterLiteral:
2360
2458
  Description: 'Checks for uses of character literals.'
@@ -2395,6 +2493,7 @@ Style/ClassAndModuleChildren:
2395
2493
 
2396
2494
  Style/ClassCheck:
2397
2495
  Description: 'Enforces consistent use of `Object#is_a?` or `Object#kind_of?`.'
2496
+ StyleGuide: '#is-a-vs-kind-of'
2398
2497
  Enabled: true
2399
2498
  VersionAdded: '0.24'
2400
2499
  EnforcedStyle: is_a?
@@ -2418,7 +2517,7 @@ Style/ClassVars:
2418
2517
  # Align with the style guide.
2419
2518
  Style/CollectionMethods:
2420
2519
  Description: 'Preferred collection methods.'
2421
- StyleGuide: '#map-find-select-reduce-size'
2520
+ StyleGuide: '#map-find-select-reduce-include-size'
2422
2521
  Enabled: false
2423
2522
  VersionAdded: '0.9'
2424
2523
  VersionChanged: '0.27'
@@ -2435,6 +2534,7 @@ Style/CollectionMethods:
2435
2534
  inject: 'reduce'
2436
2535
  detect: 'find'
2437
2536
  find_all: 'select'
2537
+ member?: 'include?'
2438
2538
 
2439
2539
  Style/ColonMethodCall:
2440
2540
  Description: 'Do not use :: for method call.'
@@ -2561,6 +2661,12 @@ Style/Dir:
2561
2661
  Enabled: true
2562
2662
  VersionAdded: '0.50'
2563
2663
 
2664
+ Style/DisableCopsWithinSourceCodeDirective:
2665
+ Description: >-
2666
+ Forbids disabling/enabling cops within source code.
2667
+ Enabled: false
2668
+ VersionAdded: '0.82'
2669
+
2564
2670
  Style/Documentation:
2565
2671
  Description: 'Document classes and non-namespace modules.'
2566
2672
  Enabled: true
@@ -2660,6 +2766,7 @@ Style/EndBlock:
2660
2766
  StyleGuide: '#no-END-blocks'
2661
2767
  Enabled: true
2662
2768
  VersionAdded: '0.9'
2769
+ VersionChanged: '0.81'
2663
2770
 
2664
2771
  Style/EvalWithLocation:
2665
2772
  Description: 'Pass `__FILE__` and `__LINE__` to `eval` method, as they are used by backtraces.'
@@ -2678,6 +2785,17 @@ Style/ExpandPathArguments:
2678
2785
  Enabled: true
2679
2786
  VersionAdded: '0.53'
2680
2787
 
2788
+ Style/ExponentialNotation:
2789
+ Description: 'When using exponential notation, favor a mantissa between 1 (inclusive) and 10 (exclusive).'
2790
+ StyleGuide: '#exponential-notation'
2791
+ Enabled: pending
2792
+ VersionAdded: '0.82'
2793
+ EnforcedStyle: scientific
2794
+ SupportedStyles:
2795
+ - scientific
2796
+ - engineering
2797
+ - integral
2798
+
2681
2799
  Style/FloatDivision:
2682
2800
  Description: 'For performing float division, coerce one side only.'
2683
2801
  StyleGuide: '#float-division'
@@ -2734,7 +2852,7 @@ Style/FrozenStringLiteralComment:
2734
2852
  to help transition to frozen string literals by default.
2735
2853
  Enabled: true
2736
2854
  VersionAdded: '0.36'
2737
- VersionChanged: '0.69'
2855
+ VersionChanged: '0.79'
2738
2856
  EnforcedStyle: always
2739
2857
  SupportedStyles:
2740
2858
  # `always` will always add the frozen string literal comment to a file
@@ -2742,9 +2860,14 @@ Style/FrozenStringLiteralComment:
2742
2860
  # string literal. If you run code against multiple versions of Ruby, it is
2743
2861
  # possible that this will create errors in Ruby 2.3.0+.
2744
2862
  - always
2863
+ # `always_true` will add the frozen string literal comment to a file,
2864
+ # similarly to the `always` style, but will also change any disabled
2865
+ # comments (e.g. `# frozen_string_literal: false`) to be enabled.
2866
+ - always_true
2745
2867
  # `never` will enforce that the frozen string literal comment does not
2746
2868
  # exist in a file.
2747
2869
  - never
2870
+ Safe: false
2748
2871
 
2749
2872
  Style/GlobalVars:
2750
2873
  Description: 'Do not introduce global variables.'
@@ -2765,6 +2888,13 @@ Style/GuardClause:
2765
2888
  # needs to have to trigger this cop
2766
2889
  MinBodyLength: 1
2767
2890
 
2891
+ Style/HashEachMethods:
2892
+ Description: 'Use Hash#each_key and Hash#each_value.'
2893
+ StyleGuide: '#hash-each'
2894
+ Enabled: pending
2895
+ VersionAdded: '0.80'
2896
+ Safe: false
2897
+
2768
2898
  Style/HashSyntax:
2769
2899
  Description: >-
2770
2900
  Prefer Ruby 1.9 hash syntax { a: 1, b: 2 } over 1.8 syntax
@@ -2788,6 +2918,18 @@ Style/HashSyntax:
2788
2918
  # Do not suggest { a?: 1 } over { :a? => 1 } in ruby19 style
2789
2919
  PreferHashRocketsForNonAlnumEndingSymbols: false
2790
2920
 
2921
+ Style/HashTransformKeys:
2922
+ Description: 'Prefer `transform_keys` over `each_with_object` and `map`.'
2923
+ Enabled: 'pending'
2924
+ VersionAdded: '0.80'
2925
+ Safe: false
2926
+
2927
+ Style/HashTransformValues:
2928
+ Description: 'Prefer `transform_values` over `each_with_object` and `map`.'
2929
+ Enabled: 'pending'
2930
+ VersionAdded: '0.80'
2931
+ Safe: false
2932
+
2791
2933
  Style/IdenticalConditionalBranches:
2792
2934
  Description: >-
2793
2935
  Checks that conditional statements do not have an identical
@@ -2822,6 +2964,7 @@ Style/IfWithSemicolon:
2822
2964
  StyleGuide: '#no-semicolon-ifs'
2823
2965
  Enabled: true
2824
2966
  VersionAdded: '0.9'
2967
+ VersionChanged: '0.83'
2825
2968
 
2826
2969
  Style/ImplicitRuntimeError:
2827
2970
  Description: >-
@@ -2874,8 +3017,9 @@ Style/IpAddresses:
2874
3017
  Description: "Don't include literal IP addresses in code."
2875
3018
  Enabled: false
2876
3019
  VersionAdded: '0.58'
2877
- # Allow strings to be whitelisted
2878
- Whitelist:
3020
+ VersionChanged: '0.77'
3021
+ # Allow addresses to be permitted
3022
+ AllowedAddresses:
2879
3023
  - "::"
2880
3024
  # :: is a valid IPv6 address, but could potentially be legitimately in code
2881
3025
 
@@ -2895,7 +3039,7 @@ Style/LambdaCall:
2895
3039
  Description: 'Use lambda.call(...) instead of lambda.(...).'
2896
3040
  StyleGuide: '#proc-call'
2897
3041
  Enabled: true
2898
- VersionAdded: '0.13.1'
3042
+ VersionAdded: '0.13'
2899
3043
  VersionChanged: '0.14'
2900
3044
  EnforcedStyle: call
2901
3045
  SupportedStyles:
@@ -3025,6 +3169,7 @@ Style/ModuleFunction:
3025
3169
  SupportedStyles:
3026
3170
  - module_function
3027
3171
  - extend_self
3172
+ - forbidden
3028
3173
  Autocorrect: false
3029
3174
  SafeAutoCorrect: false
3030
3175
 
@@ -3148,8 +3293,8 @@ Style/NestedParenthesizedCalls:
3148
3293
  argument list of another parenthesized method call.
3149
3294
  Enabled: true
3150
3295
  VersionAdded: '0.36'
3151
- VersionChanged: '0.50'
3152
- Whitelist:
3296
+ VersionChanged: '0.77'
3297
+ AllowedMethods:
3153
3298
  - be
3154
3299
  - be_a
3155
3300
  - be_an
@@ -3297,7 +3442,9 @@ Style/OptionalArguments:
3297
3442
  of the argument list.
3298
3443
  StyleGuide: '#optional-arguments'
3299
3444
  Enabled: true
3445
+ Safe: false
3300
3446
  VersionAdded: '0.33'
3447
+ VersionChanged: '0.83'
3301
3448
 
3302
3449
  Style/OrAssignment:
3303
3450
  Description: 'Recommend usage of double pipe equals (||=) where applicable.'
@@ -3526,11 +3673,11 @@ Style/SafeNavigation:
3526
3673
  safe navigation (`&.`).
3527
3674
  Enabled: true
3528
3675
  VersionAdded: '0.43'
3529
- VersionChanged: '0.56'
3676
+ VersionChanged: '0.77'
3530
3677
  # Safe navigation may cause a statement to start returning `nil` in addition
3531
3678
  # to whatever it used to return.
3532
3679
  ConvertCodeThatCanStartToReturnNil: false
3533
- Whitelist:
3680
+ AllowedMethods:
3534
3681
  - present?
3535
3682
  - blank?
3536
3683
  - presence
@@ -3602,6 +3749,12 @@ Style/SingleLineMethods:
3602
3749
  VersionChanged: '0.19'
3603
3750
  AllowIfMethodIsEmpty: true
3604
3751
 
3752
+ Style/SlicingWithRange:
3753
+ Description: 'Checks array slicing is done with endless ranges when suitable.'
3754
+ Enabled: pending
3755
+ VersionAdded: '0.83'
3756
+ Safe: false
3757
+
3605
3758
  Style/SpecialGlobalVars:
3606
3759
  Description: 'Avoid Perl-style global variables.'
3607
3760
  StyleGuide: '#no-cryptic-perlisms'
@@ -3764,22 +3917,29 @@ Style/TrailingCommaInArrayLiteral:
3764
3917
  StyleGuide: '#no-trailing-array-commas'
3765
3918
  Enabled: true
3766
3919
  VersionAdded: '0.53'
3920
+ # If `comma`, the cop requires a comma after the last item in an array,
3767
3921
  # but only when each item is on its own line.
3768
3922
  # If `consistent_comma`, the cop requires a comma after the last item of all
3769
- # non-empty array literals.
3923
+ # non-empty, multiline array literals.
3770
3924
  EnforcedStyleForMultiline: no_comma
3771
3925
  SupportedStylesForMultiline:
3772
3926
  - comma
3773
3927
  - consistent_comma
3774
3928
  - no_comma
3775
3929
 
3930
+ Style/TrailingCommaInBlockArgs:
3931
+ Description: 'Checks for useless trailing commas in block arguments.'
3932
+ Enabled: false
3933
+ Safe: false
3934
+ VersionAdded: '0.81'
3935
+
3776
3936
  Style/TrailingCommaInHashLiteral:
3777
3937
  Description: 'Checks for trailing comma in hash literals.'
3778
3938
  Enabled: true
3779
3939
  # If `comma`, the cop requires a comma after the last item in a hash,
3780
3940
  # but only when each item is on its own line.
3781
3941
  # If `consistent_comma`, the cop requires a comma after the last item of all
3782
- # non-empty hash literals.
3942
+ # non-empty, multiline hash literals.
3783
3943
  EnforcedStyleForMultiline: no_comma
3784
3944
  SupportedStylesForMultiline:
3785
3945
  - comma
@@ -3808,7 +3968,7 @@ Style/TrivialAccessors:
3808
3968
  StyleGuide: '#attr_family'
3809
3969
  Enabled: true
3810
3970
  VersionAdded: '0.9'
3811
- VersionChanged: '0.38'
3971
+ VersionChanged: '0.77'
3812
3972
  # When set to `false` the cop will suggest the use of accessor methods
3813
3973
  # in situations like:
3814
3974
  #
@@ -3829,7 +3989,7 @@ Style/TrivialAccessors:
3829
3989
  # Commonly used in DSLs
3830
3990
  AllowDSLWriters: false
3831
3991
  IgnoreClassMethods: false
3832
- Whitelist:
3992
+ AllowedMethods:
3833
3993
  - to_ary
3834
3994
  - to_a
3835
3995
  - to_c