rubocop 1.41.1 → 1.57.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE.txt +1 -1
- data/README.md +6 -4
- data/config/default.yml +243 -48
- data/config/obsoletion.yml +5 -0
- data/lib/rubocop/cli/command/auto_generate_config.rb +7 -0
- data/lib/rubocop/cli/command/execute_runner.rb +7 -2
- data/lib/rubocop/cli/command/lsp.rb +19 -0
- data/lib/rubocop/cli.rb +59 -10
- data/lib/rubocop/comment_config.rb +19 -0
- data/lib/rubocop/config.rb +14 -10
- data/lib/rubocop/config_finder.rb +2 -2
- data/lib/rubocop/config_loader.rb +20 -23
- data/lib/rubocop/config_loader_resolver.rb +5 -1
- data/lib/rubocop/config_obsoletion/parameter_rule.rb +9 -1
- data/lib/rubocop/config_obsoletion.rb +2 -2
- data/lib/rubocop/cop/autocorrect_logic.rb +31 -13
- data/lib/rubocop/cop/base.rb +96 -73
- data/lib/rubocop/cop/bundler/duplicated_gem.rb +1 -0
- data/lib/rubocop/cop/bundler/duplicated_group.rb +127 -0
- data/lib/rubocop/cop/bundler/gem_comment.rb +2 -2
- data/lib/rubocop/cop/bundler/gem_version.rb +2 -2
- data/lib/rubocop/cop/bundler/ordered_gems.rb +9 -1
- data/lib/rubocop/cop/commissioner.rb +8 -2
- data/lib/rubocop/cop/cop.rb +53 -33
- data/lib/rubocop/cop/corrector.rb +31 -11
- data/lib/rubocop/cop/correctors/alignment_corrector.rb +3 -3
- data/lib/rubocop/cop/correctors/each_to_for_corrector.rb +3 -3
- data/lib/rubocop/cop/correctors/for_to_each_corrector.rb +3 -3
- data/lib/rubocop/cop/correctors/lambda_literal_to_method_corrector.rb +7 -4
- data/lib/rubocop/cop/correctors/line_break_corrector.rb +1 -1
- data/lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb +2 -2
- data/lib/rubocop/cop/correctors/ordered_gem_corrector.rb +2 -7
- data/lib/rubocop/cop/correctors/parentheses_corrector.rb +1 -1
- data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +2 -2
- data/lib/rubocop/cop/gemspec/dependency_version.rb +19 -21
- data/lib/rubocop/cop/gemspec/deprecated_attribute_assignment.rb +1 -1
- data/lib/rubocop/cop/gemspec/development_dependencies.rb +107 -0
- data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +9 -1
- data/lib/rubocop/cop/generator/require_file_injector.rb +1 -1
- data/lib/rubocop/cop/internal_affairs/cop_description.rb +37 -13
- data/lib/rubocop/cop/internal_affairs/example_description.rb +42 -21
- data/lib/rubocop/cop/internal_affairs/example_heredoc_delimiter.rb +3 -3
- data/lib/rubocop/cop/internal_affairs/inherit_deprecated_cop_class.rb +1 -1
- data/lib/rubocop/cop/internal_affairs/location_expression.rb +37 -0
- data/lib/rubocop/cop/internal_affairs/location_line_equality_comparison.rb +3 -1
- data/lib/rubocop/cop/internal_affairs/node_matcher_directive.rb +6 -6
- data/lib/rubocop/cop/internal_affairs/node_type_predicate.rb +1 -1
- data/lib/rubocop/cop/internal_affairs/processed_source_buffer_name.rb +42 -0
- data/lib/rubocop/cop/internal_affairs/redundant_let_rubocop_config_new.rb +11 -3
- data/lib/rubocop/cop/internal_affairs/redundant_location_argument.rb +1 -1
- data/lib/rubocop/cop/internal_affairs/redundant_message_argument.rb +1 -1
- data/lib/rubocop/cop/internal_affairs/redundant_method_dispatch_node.rb +11 -2
- data/lib/rubocop/cop/internal_affairs/redundant_source_range.rb +66 -0
- data/lib/rubocop/cop/internal_affairs/useless_message_assertion.rb +2 -0
- data/lib/rubocop/cop/internal_affairs.rb +3 -0
- data/lib/rubocop/cop/layout/array_alignment.rb +1 -1
- data/lib/rubocop/cop/layout/block_end_newline.rb +7 -15
- data/lib/rubocop/cop/layout/class_structure.rb +44 -26
- data/lib/rubocop/cop/layout/closing_heredoc_indentation.rb +2 -3
- data/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +2 -6
- data/lib/rubocop/cop/layout/comment_indentation.rb +3 -1
- data/lib/rubocop/cop/layout/dot_position.rb +1 -5
- data/lib/rubocop/cop/layout/empty_comment.rb +3 -3
- data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +42 -9
- data/lib/rubocop/cop/layout/empty_line_between_defs.rb +28 -5
- data/lib/rubocop/cop/layout/empty_lines.rb +1 -1
- data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +2 -0
- data/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +2 -0
- data/lib/rubocop/cop/layout/end_alignment.rb +9 -1
- data/lib/rubocop/cop/layout/extra_spacing.rb +6 -1
- data/lib/rubocop/cop/layout/first_argument_indentation.rb +8 -3
- data/lib/rubocop/cop/layout/first_array_element_line_break.rb +25 -34
- data/lib/rubocop/cop/layout/first_hash_element_line_break.rb +7 -19
- data/lib/rubocop/cop/layout/first_method_argument_line_break.rb +42 -52
- data/lib/rubocop/cop/layout/first_method_parameter_line_break.rb +38 -55
- data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +10 -4
- data/lib/rubocop/cop/layout/heredoc_indentation.rb +11 -11
- data/lib/rubocop/cop/layout/indentation_style.rb +5 -2
- data/lib/rubocop/cop/layout/indentation_width.rb +3 -3
- data/lib/rubocop/cop/layout/initial_indentation.rb +1 -1
- data/lib/rubocop/cop/layout/leading_comment_space.rb +2 -2
- data/lib/rubocop/cop/layout/line_continuation_leading_space.rb +18 -12
- data/lib/rubocop/cop/layout/line_continuation_spacing.rb +17 -13
- data/lib/rubocop/cop/layout/line_end_string_concatenation_indentation.rb +2 -0
- data/lib/rubocop/cop/layout/multiline_array_line_breaks.rb +8 -27
- data/lib/rubocop/cop/layout/multiline_block_layout.rb +1 -1
- data/lib/rubocop/cop/layout/multiline_hash_key_line_breaks.rb +7 -26
- data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +4 -21
- data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +18 -3
- data/lib/rubocop/cop/layout/multiline_method_parameter_line_breaks.rb +6 -30
- data/lib/rubocop/cop/layout/redundant_line_break.rb +20 -11
- data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +2 -2
- data/lib/rubocop/cop/layout/space_after_comma.rb +9 -1
- data/lib/rubocop/cop/layout/space_after_not.rb +1 -1
- data/lib/rubocop/cop/layout/space_around_keyword.rb +2 -2
- data/lib/rubocop/cop/layout/space_around_method_call_operator.rb +2 -2
- data/lib/rubocop/cop/layout/space_around_operators.rb +4 -2
- data/lib/rubocop/cop/layout/space_before_first_arg.rb +1 -1
- data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +2 -2
- data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +11 -13
- data/lib/rubocop/cop/layout/space_inside_block_braces.rb +3 -1
- data/lib/rubocop/cop/layout/space_inside_parens.rb +3 -3
- data/lib/rubocop/cop/layout/space_inside_percent_literal_delimiters.rb +1 -1
- data/lib/rubocop/cop/layout/space_inside_range_literal.rb +1 -1
- data/lib/rubocop/cop/layout/space_inside_reference_brackets.rb +4 -4
- data/lib/rubocop/cop/layout/space_inside_string_interpolation.rb +5 -4
- data/lib/rubocop/cop/layout/trailing_empty_lines.rb +5 -0
- data/lib/rubocop/cop/layout/trailing_whitespace.rb +6 -3
- data/lib/rubocop/cop/lint/ambiguous_block_association.rb +13 -1
- data/lib/rubocop/cop/lint/ambiguous_operator.rb +4 -0
- data/lib/rubocop/cop/lint/constant_resolution.rb +1 -1
- data/lib/rubocop/cop/lint/debugger.rb +22 -25
- data/lib/rubocop/cop/lint/deprecated_class_methods.rb +62 -112
- data/lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb +1 -1
- data/lib/rubocop/cop/lint/duplicate_hash_key.rb +2 -1
- data/lib/rubocop/cop/lint/duplicate_match_pattern.rb +122 -0
- data/lib/rubocop/cop/lint/duplicate_methods.rb +2 -2
- data/lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb +47 -22
- data/lib/rubocop/cop/lint/else_layout.rb +3 -7
- data/lib/rubocop/cop/lint/empty_block.rb +2 -2
- data/lib/rubocop/cop/lint/empty_conditional_body.rb +4 -2
- data/lib/rubocop/cop/lint/empty_interpolation.rb +1 -1
- data/lib/rubocop/cop/lint/erb_new_arguments.rb +3 -4
- data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +14 -7
- data/lib/rubocop/cop/lint/heredoc_method_call_position.rb +16 -18
- data/lib/rubocop/cop/lint/identity_comparison.rb +0 -1
- data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +1 -1
- data/lib/rubocop/cop/lint/incompatible_io_select_with_fiber_scheduler.rb +5 -3
- data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +1 -1
- data/lib/rubocop/cop/lint/inherit_exception.rb +9 -0
- data/lib/rubocop/cop/lint/lambda_without_literal_block.rb +1 -1
- data/lib/rubocop/cop/lint/literal_in_interpolation.rb +47 -5
- data/lib/rubocop/cop/lint/missing_super.rb +63 -5
- data/lib/rubocop/cop/lint/mixed_case_range.rb +111 -0
- data/lib/rubocop/cop/lint/mixed_regexp_capture_types.rb +1 -0
- data/lib/rubocop/cop/lint/nested_method_definition.rb +4 -9
- data/lib/rubocop/cop/lint/non_atomic_file_operation.rb +10 -7
- data/lib/rubocop/cop/lint/number_conversion.rb +5 -0
- data/lib/rubocop/cop/lint/numbered_parameter_assignment.rb +2 -2
- data/lib/rubocop/cop/lint/or_assignment_to_constant.rb +2 -0
- data/lib/rubocop/cop/lint/ordered_magic_comments.rb +0 -1
- data/lib/rubocop/cop/lint/out_of_range_regexp_ref.rb +16 -1
- data/lib/rubocop/cop/lint/percent_string_array.rb +1 -1
- data/lib/rubocop/cop/lint/percent_symbol_array.rb +1 -1
- data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +11 -5
- data/lib/rubocop/cop/lint/redundant_cop_enable_directive.rb +5 -5
- data/lib/rubocop/cop/lint/redundant_regexp_quantifiers.rb +130 -0
- data/lib/rubocop/cop/lint/redundant_require_statement.rb +21 -2
- data/lib/rubocop/cop/lint/redundant_safe_navigation.rb +20 -4
- data/lib/rubocop/cop/lint/redundant_splat_expansion.rb +1 -1
- data/lib/rubocop/cop/lint/redundant_string_coercion.rb +35 -15
- data/lib/rubocop/cop/lint/redundant_with_index.rb +1 -1
- data/lib/rubocop/cop/lint/redundant_with_object.rb +1 -1
- data/lib/rubocop/cop/lint/refinement_import_methods.rb +2 -1
- data/lib/rubocop/cop/lint/regexp_as_condition.rb +6 -0
- data/lib/rubocop/cop/lint/require_parentheses.rb +3 -1
- data/lib/rubocop/cop/lint/rescue_type.rb +3 -3
- data/lib/rubocop/cop/lint/safe_navigation_chain.rb +11 -4
- data/lib/rubocop/cop/lint/safe_navigation_consistency.rb +1 -1
- data/lib/rubocop/cop/lint/script_permission.rb +1 -1
- data/lib/rubocop/cop/lint/send_with_mixin_argument.rb +1 -2
- data/lib/rubocop/cop/lint/shadowed_exception.rb +6 -12
- data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +7 -1
- data/lib/rubocop/cop/lint/struct_new_override.rb +12 -12
- data/lib/rubocop/cop/lint/suppressed_exception.rb +2 -2
- data/lib/rubocop/cop/lint/symbol_conversion.rb +1 -1
- data/lib/rubocop/cop/lint/syntax.rb +4 -0
- data/lib/rubocop/cop/lint/to_enum_arguments.rb +18 -6
- data/lib/rubocop/cop/lint/top_level_return_with_argument.rb +23 -9
- data/lib/rubocop/cop/lint/unreachable_loop.rb +3 -3
- data/lib/rubocop/cop/lint/unused_method_argument.rb +2 -1
- data/lib/rubocop/cop/lint/useless_access_modifier.rb +10 -7
- data/lib/rubocop/cop/lint/useless_assignment.rb +94 -10
- data/lib/rubocop/cop/lint/useless_method_definition.rb +12 -4
- data/lib/rubocop/cop/lint/useless_rescue.rb +89 -0
- data/lib/rubocop/cop/lint/useless_ruby2_keywords.rb +14 -4
- data/lib/rubocop/cop/lint/useless_times.rb +1 -1
- data/lib/rubocop/cop/lint/void.rb +79 -16
- data/lib/rubocop/cop/metrics/block_length.rb +2 -2
- data/lib/rubocop/cop/metrics/block_nesting.rb +2 -2
- data/lib/rubocop/cop/metrics/class_length.rb +3 -2
- data/lib/rubocop/cop/metrics/collection_literal_length.rb +76 -0
- data/lib/rubocop/cop/metrics/cyclomatic_complexity.rb +1 -1
- data/lib/rubocop/cop/metrics/method_length.rb +1 -1
- data/lib/rubocop/cop/metrics/parameter_lists.rb +27 -0
- data/lib/rubocop/cop/metrics/perceived_complexity.rb +1 -1
- data/lib/rubocop/cop/metrics/utils/abc_size_calculator.rb +4 -8
- data/lib/rubocop/cop/metrics/utils/code_length_calculator.rb +33 -5
- data/lib/rubocop/cop/migration/department_name.rb +3 -3
- data/lib/rubocop/cop/mixin/alignment.rb +1 -1
- data/lib/rubocop/cop/mixin/allowed_methods.rb +3 -1
- data/lib/rubocop/cop/mixin/allowed_receivers.rb +34 -0
- data/lib/rubocop/cop/mixin/annotation_comment.rb +2 -2
- data/lib/rubocop/cop/mixin/code_length.rb +1 -1
- data/lib/rubocop/cop/mixin/comments_help.rb +13 -7
- data/lib/rubocop/cop/mixin/def_node.rb +1 -1
- data/lib/rubocop/cop/mixin/documentation_comment.rb +1 -1
- data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +1 -1
- data/lib/rubocop/cop/mixin/hash_alignment_styles.rb +1 -1
- data/lib/rubocop/cop/mixin/hash_shorthand_syntax.rb +62 -23
- data/lib/rubocop/cop/mixin/hash_transform_method.rb +3 -3
- data/lib/rubocop/cop/mixin/heredoc.rb +6 -2
- data/lib/rubocop/cop/mixin/line_length_help.rb +3 -1
- data/lib/rubocop/cop/mixin/min_branches_count.rb +40 -0
- data/lib/rubocop/cop/mixin/multiline_element_line_breaks.rb +0 -3
- data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +3 -2
- data/lib/rubocop/cop/mixin/ordered_gem_node.rb +1 -1
- data/lib/rubocop/cop/mixin/percent_literal.rb +1 -1
- data/lib/rubocop/cop/mixin/preceding_following_alignment.rb +6 -8
- data/lib/rubocop/cop/mixin/range_help.rb +1 -6
- data/lib/rubocop/cop/mixin/space_after_punctuation.rb +1 -1
- data/lib/rubocop/cop/mixin/statement_modifier.rb +4 -3
- data/lib/rubocop/cop/mixin/string_help.rb +4 -2
- data/lib/rubocop/cop/mixin/surrounding_space.rb +3 -3
- data/lib/rubocop/cop/mixin/trailing_comma.rb +3 -3
- data/lib/rubocop/cop/naming/ascii_identifiers.rb +1 -1
- data/lib/rubocop/cop/naming/block_forwarding.rb +5 -1
- data/lib/rubocop/cop/naming/class_and_module_camel_case.rb +1 -1
- data/lib/rubocop/cop/naming/constant_name.rb +1 -1
- data/lib/rubocop/cop/naming/file_name.rb +1 -1
- data/lib/rubocop/cop/naming/heredoc_delimiter_case.rb +1 -1
- data/lib/rubocop/cop/naming/heredoc_delimiter_naming.rb +3 -1
- data/lib/rubocop/cop/naming/inclusive_language.rb +23 -4
- data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +25 -10
- data/lib/rubocop/cop/naming/method_name.rb +3 -3
- data/lib/rubocop/cop/naming/predicate_name.rb +1 -1
- data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +12 -4
- data/lib/rubocop/cop/naming/variable_name.rb +6 -1
- data/lib/rubocop/cop/registry.rb +37 -30
- data/lib/rubocop/cop/security/compound_hash.rb +2 -1
- data/lib/rubocop/cop/style/access_modifier_declarations.rb +26 -11
- data/lib/rubocop/cop/style/accessor_grouping.rb +43 -17
- data/lib/rubocop/cop/style/alias.rb +9 -8
- data/lib/rubocop/cop/style/arguments_forwarding.rb +280 -62
- data/lib/rubocop/cop/style/array_intersect.rb +14 -6
- data/lib/rubocop/cop/style/ascii_comments.rb +1 -1
- data/lib/rubocop/cop/style/attr.rb +11 -1
- data/lib/rubocop/cop/style/begin_block.rb +1 -2
- data/lib/rubocop/cop/style/bisected_attr_accessor.rb +1 -1
- data/lib/rubocop/cop/style/block_comments.rb +3 -3
- data/lib/rubocop/cop/style/block_delimiters.rb +22 -6
- data/lib/rubocop/cop/style/case_like_if.rb +20 -3
- data/lib/rubocop/cop/style/class_and_module_children.rb +5 -12
- data/lib/rubocop/cop/style/class_equality_comparison.rb +58 -40
- data/lib/rubocop/cop/style/collection_compact.rb +20 -7
- data/lib/rubocop/cop/style/collection_methods.rb +2 -0
- data/lib/rubocop/cop/style/colon_method_call.rb +2 -2
- data/lib/rubocop/cop/style/combinable_loops.rb +30 -8
- data/lib/rubocop/cop/style/command_literal.rb +1 -1
- data/lib/rubocop/cop/style/comment_annotation.rb +1 -1
- data/lib/rubocop/cop/style/commented_keyword.rb +2 -2
- data/lib/rubocop/cop/style/comparable_clamp.rb +125 -0
- data/lib/rubocop/cop/style/concat_array_literals.rb +32 -4
- data/lib/rubocop/cop/style/conditional_assignment.rb +11 -15
- data/lib/rubocop/cop/style/copyright.rb +6 -3
- data/lib/rubocop/cop/style/data_inheritance.rb +75 -0
- data/lib/rubocop/cop/style/dir.rb +1 -1
- data/lib/rubocop/cop/style/dir_empty.rb +54 -0
- data/lib/rubocop/cop/style/disable_cops_within_source_code_directive.rb +2 -2
- data/lib/rubocop/cop/style/document_dynamic_eval_definition.rb +3 -3
- data/lib/rubocop/cop/style/documentation.rb +12 -6
- data/lib/rubocop/cop/style/documentation_method.rb +10 -4
- data/lib/rubocop/cop/style/double_negation.rb +2 -2
- data/lib/rubocop/cop/style/each_with_object.rb +1 -1
- data/lib/rubocop/cop/style/empty_block_parameter.rb +1 -1
- data/lib/rubocop/cop/style/empty_case_condition.rb +6 -1
- data/lib/rubocop/cop/style/empty_lambda_parameter.rb +1 -1
- data/lib/rubocop/cop/style/eval_with_location.rb +8 -8
- data/lib/rubocop/cop/style/exact_regexp_match.rb +68 -0
- data/lib/rubocop/cop/style/explicit_block_argument.rb +1 -1
- data/lib/rubocop/cop/style/file_empty.rb +71 -0
- data/lib/rubocop/cop/style/file_read.rb +3 -3
- data/lib/rubocop/cop/style/file_write.rb +1 -1
- data/lib/rubocop/cop/style/for.rb +1 -1
- data/lib/rubocop/cop/style/format_string.rb +24 -3
- data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +4 -2
- data/lib/rubocop/cop/style/guard_clause.rb +40 -8
- data/lib/rubocop/cop/style/hash_conversion.rb +10 -0
- data/lib/rubocop/cop/style/hash_each_methods.rb +1 -10
- data/lib/rubocop/cop/style/hash_except.rb +23 -12
- data/lib/rubocop/cop/style/hash_like_case.rb +3 -9
- data/lib/rubocop/cop/style/hash_syntax.rb +16 -9
- data/lib/rubocop/cop/style/hash_transform_keys.rb +2 -2
- data/lib/rubocop/cop/style/hash_transform_values.rb +2 -2
- data/lib/rubocop/cop/style/identical_conditional_branches.rb +36 -3
- data/lib/rubocop/cop/style/if_inside_else.rb +6 -0
- data/lib/rubocop/cop/style/if_unless_modifier.rb +111 -15
- data/lib/rubocop/cop/style/if_with_boolean_literal_branches.rb +2 -0
- data/lib/rubocop/cop/style/if_with_semicolon.rb +2 -2
- data/lib/rubocop/cop/style/infinite_loop.rb +2 -5
- data/lib/rubocop/cop/style/inverse_methods.rb +5 -5
- data/lib/rubocop/cop/style/invertible_unless_condition.rb +118 -0
- data/lib/rubocop/cop/style/lambda.rb +3 -3
- data/lib/rubocop/cop/style/lambda_call.rb +5 -0
- data/lib/rubocop/cop/style/map_compact_with_conditional_block.rb +2 -2
- data/lib/rubocop/cop/style/map_to_hash.rb +4 -1
- data/lib/rubocop/cop/style/map_to_set.rb +64 -0
- data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +35 -24
- data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +44 -37
- data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +2 -0
- data/lib/rubocop/cop/style/method_def_parentheses.rb +11 -4
- data/lib/rubocop/cop/style/min_max.rb +3 -3
- data/lib/rubocop/cop/style/min_max_comparison.rb +83 -0
- data/lib/rubocop/cop/style/missing_else.rb +13 -1
- data/lib/rubocop/cop/style/mixin_grouping.rb +5 -5
- data/lib/rubocop/cop/style/multiline_block_chain.rb +1 -1
- data/lib/rubocop/cop/style/multiline_if_modifier.rb +0 -4
- data/lib/rubocop/cop/style/multiline_memoization.rb +2 -2
- data/lib/rubocop/cop/style/multiline_method_signature.rb +7 -4
- data/lib/rubocop/cop/style/multiline_ternary_operator.rb +19 -4
- data/lib/rubocop/cop/style/multiple_comparison.rb +14 -0
- data/lib/rubocop/cop/style/negated_if_else_condition.rb +13 -12
- data/lib/rubocop/cop/style/nested_ternary_operator.rb +3 -11
- data/lib/rubocop/cop/style/nil_lambda.rb +2 -2
- data/lib/rubocop/cop/style/numbered_parameters_limit.rb +11 -3
- data/lib/rubocop/cop/style/numeric_literals.rb +1 -1
- data/lib/rubocop/cop/style/one_line_conditional.rb +3 -6
- data/lib/rubocop/cop/style/open_struct_use.rb +1 -1
- data/lib/rubocop/cop/style/operator_method_call.rb +22 -2
- data/lib/rubocop/cop/style/parallel_assignment.rb +29 -19
- data/lib/rubocop/cop/style/percent_literal_delimiters.rb +2 -3
- data/lib/rubocop/cop/style/percent_q_literals.rb +1 -1
- data/lib/rubocop/cop/style/preferred_hash_methods.rb +1 -1
- data/lib/rubocop/cop/style/redundant_argument.rb +6 -1
- data/lib/rubocop/cop/style/redundant_array_constructor.rb +77 -0
- data/lib/rubocop/cop/style/redundant_begin.rb +10 -2
- data/lib/rubocop/cop/style/redundant_condition.rb +18 -3
- data/lib/rubocop/cop/style/redundant_conditional.rb +2 -14
- data/lib/rubocop/cop/style/redundant_current_directory_in_path.rb +38 -0
- data/lib/rubocop/cop/style/redundant_double_splat_hash_braces.rb +96 -9
- data/lib/rubocop/cop/style/redundant_exception.rb +32 -12
- data/lib/rubocop/cop/style/redundant_fetch_block.rb +6 -4
- data/lib/rubocop/cop/style/redundant_filter_chain.rb +117 -0
- data/lib/rubocop/cop/style/redundant_heredoc_delimiter_quotes.rb +58 -0
- data/lib/rubocop/cop/style/redundant_interpolation.rb +2 -2
- data/lib/rubocop/cop/style/redundant_line_continuation.rb +183 -0
- data/lib/rubocop/cop/style/redundant_parentheses.rb +26 -8
- data/lib/rubocop/cop/style/redundant_percent_q.rb +1 -1
- data/lib/rubocop/cop/style/redundant_regexp_argument.rb +100 -0
- data/lib/rubocop/cop/style/redundant_regexp_character_class.rb +7 -8
- data/lib/rubocop/cop/style/redundant_regexp_constructor.rb +46 -0
- data/lib/rubocop/cop/style/redundant_regexp_escape.rb +13 -4
- data/lib/rubocop/cop/style/redundant_return.rb +7 -2
- data/lib/rubocop/cop/style/redundant_self_assignment_branch.rb +8 -1
- data/lib/rubocop/cop/style/redundant_sort.rb +4 -4
- data/lib/rubocop/cop/style/redundant_string_escape.rb +9 -6
- data/lib/rubocop/cop/style/regexp_literal.rb +11 -2
- data/lib/rubocop/cop/style/require_order.rb +16 -17
- data/lib/rubocop/cop/style/rescue_modifier.rb +1 -3
- data/lib/rubocop/cop/style/rescue_standard_error.rb +2 -2
- data/lib/rubocop/cop/style/return_nil.rb +6 -2
- data/lib/rubocop/cop/style/return_nil_in_predicate_method_definition.rb +95 -0
- data/lib/rubocop/cop/style/safe_navigation.rb +2 -2
- data/lib/rubocop/cop/style/select_by_regexp.rb +20 -6
- data/lib/rubocop/cop/style/self_assignment.rb +2 -2
- data/lib/rubocop/cop/style/semicolon.rb +35 -5
- data/lib/rubocop/cop/style/signal_exception.rb +9 -7
- data/lib/rubocop/cop/style/single_line_do_end_block.rb +65 -0
- data/lib/rubocop/cop/style/single_line_methods.rb +1 -1
- data/lib/rubocop/cop/style/slicing_with_range.rb +1 -1
- data/lib/rubocop/cop/style/sole_nested_conditional.rb +9 -5
- data/lib/rubocop/cop/style/special_global_vars.rb +3 -4
- data/lib/rubocop/cop/style/stderr_puts.rb +1 -1
- data/lib/rubocop/cop/style/string_hash_keys.rb +4 -1
- data/lib/rubocop/cop/style/string_literals_in_interpolation.rb +30 -5
- data/lib/rubocop/cop/style/struct_inheritance.rb +1 -1
- data/lib/rubocop/cop/style/symbol_array.rb +35 -15
- data/lib/rubocop/cop/style/trailing_body_on_class.rb +1 -0
- data/lib/rubocop/cop/style/trailing_comma_in_arguments.rb +4 -4
- data/lib/rubocop/cop/style/trailing_underscore_variable.rb +1 -1
- data/lib/rubocop/cop/style/trivial_accessors.rb +1 -1
- data/lib/rubocop/cop/style/unless_logical_operators.rb +1 -0
- data/lib/rubocop/cop/style/unpack_first.rb +3 -3
- data/lib/rubocop/cop/style/word_array.rb +54 -1
- data/lib/rubocop/cop/style/yaml_file_read.rb +66 -0
- data/lib/rubocop/cop/style/yoda_condition.rb +17 -8
- data/lib/rubocop/cop/style/yoda_expression.rb +91 -0
- data/lib/rubocop/cop/style/zero_length_predicate.rb +40 -19
- data/lib/rubocop/cop/team.rb +60 -52
- data/lib/rubocop/cop/util.rb +14 -5
- data/lib/rubocop/cop/utils/regexp_ranges.rb +113 -0
- data/lib/rubocop/cop/variable_force/assignment.rb +45 -4
- data/lib/rubocop/cop/variable_force/scope.rb +3 -3
- data/lib/rubocop/cop/variable_force/variable.rb +5 -3
- data/lib/rubocop/cop/variable_force/variable_table.rb +5 -3
- data/lib/rubocop/cop/variable_force.rb +2 -4
- data/lib/rubocop/cops_documentation_generator.rb +11 -4
- data/lib/rubocop/directive_comment.rb +3 -3
- data/lib/rubocop/ext/comment.rb +18 -0
- data/lib/rubocop/ext/regexp_node.rb +1 -1
- data/lib/rubocop/ext/regexp_parser.rb +5 -2
- data/lib/rubocop/file_finder.rb +4 -7
- data/lib/rubocop/formatter/junit_formatter.rb +4 -1
- data/lib/rubocop/formatter/simple_text_formatter.rb +1 -1
- data/lib/rubocop/formatter.rb +0 -1
- data/lib/rubocop/lsp/logger.rb +22 -0
- data/lib/rubocop/lsp/routes.rb +246 -0
- data/lib/rubocop/lsp/runtime.rb +99 -0
- data/lib/rubocop/lsp/server.rb +68 -0
- data/lib/rubocop/lsp/severity.rb +27 -0
- data/lib/rubocop/magic_comment.rb +12 -10
- data/lib/rubocop/options.rb +37 -3
- data/lib/rubocop/path_util.rb +17 -7
- data/lib/rubocop/result_cache.rb +7 -3
- data/lib/rubocop/rspec/cop_helper.rb +2 -2
- data/lib/rubocop/rspec/expect_offense.rb +6 -4
- data/lib/rubocop/rspec/shared_contexts.rb +6 -3
- data/lib/rubocop/rspec/support.rb +1 -0
- data/lib/rubocop/runner.rb +55 -10
- data/lib/rubocop/server/cache.rb +12 -4
- data/lib/rubocop/server/cli.rb +37 -18
- data/lib/rubocop/server/client_command/exec.rb +4 -3
- data/lib/rubocop/server/client_command/start.rb +6 -1
- data/lib/rubocop/server/core.rb +24 -9
- data/lib/rubocop/server/helper.rb +1 -1
- data/lib/rubocop/server/server_command/exec.rb +1 -1
- data/lib/rubocop/string_interpreter.rb +3 -3
- data/lib/rubocop/target_finder.rb +7 -3
- data/lib/rubocop/target_ruby.rb +13 -9
- data/lib/rubocop/version.rb +10 -6
- data/lib/rubocop.rb +31 -0
- metadata +84 -37
data/config/default.yml
CHANGED
@@ -30,6 +30,7 @@ AllCops:
|
|
30
30
|
- '**/*.rbx'
|
31
31
|
- '**/*.ru'
|
32
32
|
- '**/*.ruby'
|
33
|
+
- '**/*.schema'
|
33
34
|
- '**/*.spec'
|
34
35
|
- '**/*.thor'
|
35
36
|
- '**/*.watchr'
|
@@ -55,6 +56,7 @@ AllCops:
|
|
55
56
|
- '**/Puppetfile'
|
56
57
|
- '**/Rakefile'
|
57
58
|
- '**/rakefile'
|
59
|
+
- '**/Schemafile'
|
58
60
|
- '**/Snapfile'
|
59
61
|
- '**/Steepfile'
|
60
62
|
- '**/Thorfile'
|
@@ -140,7 +142,7 @@ AllCops:
|
|
140
142
|
# or gems.locked file. (Although the Ruby version is specified in the Gemfile
|
141
143
|
# or gems.rb file, RuboCop reads the final value from the lock file.) If the
|
142
144
|
# Ruby version is still unresolved, RuboCop will use the oldest officially
|
143
|
-
# supported Ruby version (currently Ruby 2.
|
145
|
+
# supported Ruby version (currently Ruby 2.7).
|
144
146
|
TargetRubyVersion: ~
|
145
147
|
# Determines if a notification for extension libraries should be shown when
|
146
148
|
# rubocop is run. Keys are the name of the extension, and values are an array
|
@@ -153,6 +155,8 @@ AllCops:
|
|
153
155
|
rubocop-sequel: [sequel]
|
154
156
|
rubocop-rake: [rake]
|
155
157
|
rubocop-graphql: [graphql]
|
158
|
+
rubocop-capybara: [capybara]
|
159
|
+
rubocop-factory_bot: [factory_bot, factory_bot_rails]
|
156
160
|
# Enable/Disable checking the methods extended by Active Support.
|
157
161
|
ActiveSupportExtensionsEnabled: false
|
158
162
|
|
@@ -169,6 +173,16 @@ Bundler/DuplicatedGem:
|
|
169
173
|
- '**/Gemfile'
|
170
174
|
- '**/gems.rb'
|
171
175
|
|
176
|
+
Bundler/DuplicatedGroup:
|
177
|
+
Description: 'Checks for duplicate group entries in Gemfile.'
|
178
|
+
Enabled: true
|
179
|
+
Severity: warning
|
180
|
+
VersionAdded: '1.56'
|
181
|
+
Include:
|
182
|
+
- '**/*.gemfile'
|
183
|
+
- '**/Gemfile'
|
184
|
+
- '**/gems.rb'
|
185
|
+
|
172
186
|
Bundler/GemComment:
|
173
187
|
Description: 'Add a comment describing each gem.'
|
174
188
|
Enabled: false
|
@@ -262,6 +276,21 @@ Gemspec/DeprecatedAttributeAssignment:
|
|
262
276
|
Include:
|
263
277
|
- '**/*.gemspec'
|
264
278
|
|
279
|
+
Gemspec/DevelopmentDependencies:
|
280
|
+
Description: Checks that development dependencies are specified in Gemfile rather than gemspec.
|
281
|
+
Enabled: pending
|
282
|
+
VersionAdded: '1.44'
|
283
|
+
EnforcedStyle: Gemfile
|
284
|
+
SupportedStyles:
|
285
|
+
- Gemfile
|
286
|
+
- gems.rb
|
287
|
+
- gemspec
|
288
|
+
AllowedGems: []
|
289
|
+
Include:
|
290
|
+
- '**/*.gemspec'
|
291
|
+
- '**/Gemfile'
|
292
|
+
- '**/gems.rb'
|
293
|
+
|
265
294
|
Gemspec/DuplicatedAssignment:
|
266
295
|
Description: 'An attribute assignment method calls should be listed only once in a gemspec.'
|
267
296
|
Enabled: true
|
@@ -391,9 +420,8 @@ Layout/AssignmentIndentation:
|
|
391
420
|
Checks the indentation of the first line of the
|
392
421
|
right-hand-side of a multi-line assignment.
|
393
422
|
Enabled: true
|
394
|
-
SafeAutoCorrect: false
|
395
423
|
VersionAdded: '0.49'
|
396
|
-
VersionChanged: '1.
|
424
|
+
VersionChanged: '1.45'
|
397
425
|
# By default the indentation width from `Layout/IndentationWidth` is used,
|
398
426
|
# but it can be overridden by setting this parameter.
|
399
427
|
IndentationWidth: ~
|
@@ -451,7 +479,9 @@ Layout/ClassStructure:
|
|
451
479
|
Description: 'Enforces a configured order of definitions within a class body.'
|
452
480
|
StyleGuide: '#consistent-classes'
|
453
481
|
Enabled: false
|
482
|
+
SafeAutoCorrect: false
|
454
483
|
VersionAdded: '0.52'
|
484
|
+
VersionChanged: '1.53'
|
455
485
|
Categories:
|
456
486
|
module_inclusion:
|
457
487
|
- include
|
@@ -559,6 +589,8 @@ Layout/EmptyLineBetweenDefs:
|
|
559
589
|
EmptyLineBetweenMethodDefs: true
|
560
590
|
EmptyLineBetweenClassDefs: true
|
561
591
|
EmptyLineBetweenModuleDefs: true
|
592
|
+
# `DefLikeMacros` takes the name of any macro that you want to treat like a def.
|
593
|
+
DefLikeMacros: []
|
562
594
|
# `AllowAdjacentOneLineDefs` means that single line method definitions don't
|
563
595
|
# need an empty line between them. `true` by default.
|
564
596
|
AllowAdjacentOneLineDefs: true
|
@@ -964,7 +996,6 @@ Layout/IndentationWidth:
|
|
964
996
|
# Number of spaces for each indentation level.
|
965
997
|
Width: 2
|
966
998
|
AllowedPatterns: []
|
967
|
-
IgnoredPatterns: [] # deprecated
|
968
999
|
|
969
1000
|
Layout/InitialIndentation:
|
970
1001
|
Description: >-
|
@@ -992,10 +1023,8 @@ Layout/LineContinuationLeadingSpace:
|
|
992
1023
|
Use trailing spaces instead of leading spaces in strings
|
993
1024
|
broken over multiple lines (by a backslash).
|
994
1025
|
Enabled: pending
|
995
|
-
AutoCorrect: false
|
996
|
-
SafeAutoCorrect: false
|
997
1026
|
VersionAdded: '1.31'
|
998
|
-
VersionChanged: '1.
|
1027
|
+
VersionChanged: '1.45'
|
999
1028
|
EnforcedStyle: trailing
|
1000
1029
|
SupportedStyles:
|
1001
1030
|
- leading
|
@@ -1004,8 +1033,6 @@ Layout/LineContinuationLeadingSpace:
|
|
1004
1033
|
Layout/LineContinuationSpacing:
|
1005
1034
|
Description: 'Checks the spacing in front of backslash in line continuations.'
|
1006
1035
|
Enabled: pending
|
1007
|
-
AutoCorrect: true
|
1008
|
-
SafeAutoCorrect: true
|
1009
1036
|
VersionAdded: '1.31'
|
1010
1037
|
EnforcedStyle: space
|
1011
1038
|
SupportedStyles:
|
@@ -1047,7 +1074,6 @@ Layout/LineLength:
|
|
1047
1074
|
# elements. Strings will be converted to Regexp objects. A line that matches
|
1048
1075
|
# any regular expression listed in this option will be ignored by LineLength.
|
1049
1076
|
AllowedPatterns: []
|
1050
|
-
IgnoredPatterns: [] # deprecated
|
1051
1077
|
|
1052
1078
|
Layout/MultilineArrayBraceLayout:
|
1053
1079
|
Description: >-
|
@@ -1520,13 +1546,11 @@ Lint/AmbiguousBlockAssociation:
|
|
1520
1546
|
Description: >-
|
1521
1547
|
Checks for ambiguous block association with method when param passed without
|
1522
1548
|
parentheses.
|
1523
|
-
StyleGuide: '#syntax'
|
1524
1549
|
Enabled: true
|
1525
1550
|
VersionAdded: '0.48'
|
1526
1551
|
VersionChanged: '1.13'
|
1527
1552
|
AllowedMethods: []
|
1528
1553
|
AllowedPatterns: []
|
1529
|
-
IgnoredMethods: [] # deprecated
|
1530
1554
|
|
1531
1555
|
Lint/AmbiguousOperator:
|
1532
1556
|
Description: >-
|
@@ -1563,7 +1587,9 @@ Lint/AssignmentInCondition:
|
|
1563
1587
|
Description: "Don't use assignment in conditions."
|
1564
1588
|
StyleGuide: '#safe-assignment-in-condition'
|
1565
1589
|
Enabled: true
|
1590
|
+
SafeAutoCorrect: false
|
1566
1591
|
VersionAdded: '0.9'
|
1592
|
+
VersionChanged: '1.45'
|
1567
1593
|
AllowSafeAssignment: true
|
1568
1594
|
|
1569
1595
|
Lint/BigDecimalNew:
|
@@ -1619,8 +1645,7 @@ Lint/Debugger:
|
|
1619
1645
|
Description: 'Check for debugger calls.'
|
1620
1646
|
Enabled: true
|
1621
1647
|
VersionAdded: '0.14'
|
1622
|
-
VersionChanged: '1.
|
1623
|
-
DebuggerReceivers: [] # deprecated
|
1648
|
+
VersionChanged: '1.46'
|
1624
1649
|
DebuggerMethods:
|
1625
1650
|
# Groups are available so that a specific group can be disabled in
|
1626
1651
|
# a user's configuration, but are otherwise not significant.
|
@@ -1648,6 +1673,7 @@ Lint/Debugger:
|
|
1648
1673
|
- Kernel.binding.remote_pry
|
1649
1674
|
- Kernel.binding.pry_remote
|
1650
1675
|
- Pry.rescue
|
1676
|
+
- pry
|
1651
1677
|
Rails:
|
1652
1678
|
- debugger
|
1653
1679
|
- Kernel.debugger
|
@@ -1740,6 +1766,11 @@ Lint/DuplicateMagicComment:
|
|
1740
1766
|
Enabled: pending
|
1741
1767
|
VersionAdded: '1.37'
|
1742
1768
|
|
1769
|
+
Lint/DuplicateMatchPattern:
|
1770
|
+
Description: 'Do not repeat patterns in `in` keywords.'
|
1771
|
+
Enabled: pending
|
1772
|
+
VersionAdded: '1.50'
|
1773
|
+
|
1743
1774
|
Lint/DuplicateMethods:
|
1744
1775
|
Description: 'Check for duplicate method definitions.'
|
1745
1776
|
Enabled: true
|
@@ -1972,9 +2003,16 @@ Lint/MissingSuper:
|
|
1972
2003
|
Checks for the presence of constructors and lifecycle callbacks
|
1973
2004
|
without calls to `super`.
|
1974
2005
|
Enabled: true
|
2006
|
+
AllowedParentClasses: []
|
1975
2007
|
VersionAdded: '0.89'
|
1976
2008
|
VersionChanged: '1.4'
|
1977
2009
|
|
2010
|
+
Lint/MixedCaseRange:
|
2011
|
+
Description: 'Checks for mixed-case character ranges since they include likely unintended characters.'
|
2012
|
+
Enabled: pending
|
2013
|
+
SafeAutoCorrect: false
|
2014
|
+
VersionAdded: '1.53'
|
2015
|
+
|
1978
2016
|
Lint/MixedRegexpCaptureTypes:
|
1979
2017
|
Description: 'Do not mix named captures and numbered captures in a Regexp literal.'
|
1980
2018
|
Enabled: true
|
@@ -2037,7 +2075,6 @@ Lint/NumberConversion:
|
|
2037
2075
|
SafeAutoCorrect: false
|
2038
2076
|
AllowedMethods: []
|
2039
2077
|
AllowedPatterns: []
|
2040
|
-
IgnoredMethods: [] # deprecated
|
2041
2078
|
IgnoredClasses:
|
2042
2079
|
- Time
|
2043
2080
|
- DateTime
|
@@ -2125,10 +2162,17 @@ Lint/RedundantDirGlobSort:
|
|
2125
2162
|
VersionChanged: '1.26'
|
2126
2163
|
SafeAutoCorrect: false
|
2127
2164
|
|
2165
|
+
Lint/RedundantRegexpQuantifiers:
|
2166
|
+
Description: 'Checks for redundant quantifiers in Regexps.'
|
2167
|
+
Enabled: pending
|
2168
|
+
VersionAdded: '1.53'
|
2169
|
+
|
2128
2170
|
Lint/RedundantRequireStatement:
|
2129
2171
|
Description: 'Checks for unnecessary `require` statement.'
|
2130
2172
|
Enabled: true
|
2173
|
+
SafeAutoCorrect: false
|
2131
2174
|
VersionAdded: '0.76'
|
2175
|
+
VersionChanged: '1.57'
|
2132
2176
|
|
2133
2177
|
Lint/RedundantSafeNavigation:
|
2134
2178
|
Description: 'Checks for redundant safe navigation calls.'
|
@@ -2329,6 +2373,9 @@ Lint/TopLevelReturnWithArgument:
|
|
2329
2373
|
Description: 'Detects top level return statements with argument.'
|
2330
2374
|
Enabled: true
|
2331
2375
|
VersionAdded: '0.89'
|
2376
|
+
# These codes are `eval`-ed in method and their return values may be used.
|
2377
|
+
Exclude:
|
2378
|
+
- '**/*.jb'
|
2332
2379
|
|
2333
2380
|
Lint/TrailingCommaInAttributeDeclaration:
|
2334
2381
|
Description: 'Checks for trailing commas in attribute declarations.'
|
@@ -2388,7 +2435,6 @@ Lint/UnreachableLoop:
|
|
2388
2435
|
# RSpec uses `times` in its message expectations
|
2389
2436
|
# eg. `exactly(2).times`
|
2390
2437
|
- !ruby/regexp /(exactly|at_least|at_most)\(\d+\)\.times/
|
2391
|
-
IgnoredPatterns: [] # deprecated
|
2392
2438
|
|
2393
2439
|
Lint/UnusedBlockArgument:
|
2394
2440
|
Description: 'Checks for unused block arguments.'
|
@@ -2438,6 +2484,8 @@ Lint/UselessAssignment:
|
|
2438
2484
|
StyleGuide: '#underscore-unused-vars'
|
2439
2485
|
Enabled: true
|
2440
2486
|
VersionAdded: '0.11'
|
2487
|
+
VersionChanged: '1.51'
|
2488
|
+
SafeAutoCorrect: false
|
2441
2489
|
|
2442
2490
|
Lint/UselessElseWithoutRescue:
|
2443
2491
|
Description: 'Checks for useless `else` in `begin..end` without `rescue`.'
|
@@ -2452,6 +2500,11 @@ Lint/UselessMethodDefinition:
|
|
2452
2500
|
VersionChanged: '0.91'
|
2453
2501
|
Safe: false
|
2454
2502
|
|
2503
|
+
Lint/UselessRescue:
|
2504
|
+
Description: 'Checks for useless `rescue`s.'
|
2505
|
+
Enabled: pending
|
2506
|
+
VersionAdded: '1.43'
|
2507
|
+
|
2455
2508
|
Lint/UselessRuby2Keywords:
|
2456
2509
|
Description: 'Finds unnecessary uses of `ruby2_keywords`.'
|
2457
2510
|
Enabled: pending
|
@@ -2460,10 +2513,9 @@ Lint/UselessRuby2Keywords:
|
|
2460
2513
|
Lint/UselessSetterCall:
|
2461
2514
|
Description: 'Checks for useless setter call to a local variable.'
|
2462
2515
|
Enabled: true
|
2463
|
-
|
2516
|
+
Safe: false
|
2464
2517
|
VersionAdded: '0.13'
|
2465
2518
|
VersionChanged: '1.2'
|
2466
|
-
Safe: false
|
2467
2519
|
|
2468
2520
|
Lint/UselessTimes:
|
2469
2521
|
Description: 'Checks for useless `Integer#times` calls.'
|
@@ -2493,7 +2545,6 @@ Metrics/AbcSize:
|
|
2493
2545
|
# a Float.
|
2494
2546
|
AllowedMethods: []
|
2495
2547
|
AllowedPatterns: []
|
2496
|
-
IgnoredMethods: [] # deprecated
|
2497
2548
|
CountRepeatedAttributes: true
|
2498
2549
|
Max: 17
|
2499
2550
|
|
@@ -2505,13 +2556,11 @@ Metrics/BlockLength:
|
|
2505
2556
|
CountComments: false # count full line comments?
|
2506
2557
|
Max: 25
|
2507
2558
|
CountAsOne: []
|
2508
|
-
ExcludedMethods: [] # deprecated, retained for backwards compatibility
|
2509
2559
|
AllowedMethods:
|
2510
2560
|
# By default, exclude the `#refine` method, as it tends to have larger
|
2511
2561
|
# associated blocks.
|
2512
2562
|
- refine
|
2513
2563
|
AllowedPatterns: []
|
2514
|
-
IgnoredMethods: [] # deprecated
|
2515
2564
|
Exclude:
|
2516
2565
|
- '**/*.gemspec'
|
2517
2566
|
|
@@ -2533,6 +2582,12 @@ Metrics/ClassLength:
|
|
2533
2582
|
Max: 100
|
2534
2583
|
CountAsOne: []
|
2535
2584
|
|
2585
|
+
Metrics/CollectionLiteralLength:
|
2586
|
+
Description: 'Checks for `Array` or `Hash` literals with many entries.'
|
2587
|
+
Enabled: pending
|
2588
|
+
VersionAdded: '1.47'
|
2589
|
+
LengthThreshold: 250
|
2590
|
+
|
2536
2591
|
# Avoid complex methods.
|
2537
2592
|
Metrics/CyclomaticComplexity:
|
2538
2593
|
Description: >-
|
@@ -2543,7 +2598,6 @@ Metrics/CyclomaticComplexity:
|
|
2543
2598
|
VersionChanged: '0.81'
|
2544
2599
|
AllowedMethods: []
|
2545
2600
|
AllowedPatterns: []
|
2546
|
-
IgnoredMethods: [] # deprecated
|
2547
2601
|
Max: 7
|
2548
2602
|
|
2549
2603
|
Metrics/MethodLength:
|
@@ -2555,10 +2609,8 @@ Metrics/MethodLength:
|
|
2555
2609
|
CountComments: false # count full line comments?
|
2556
2610
|
Max: 10
|
2557
2611
|
CountAsOne: []
|
2558
|
-
ExcludedMethods: [] # deprecated, retained for backwards compatibility
|
2559
2612
|
AllowedMethods: []
|
2560
2613
|
AllowedPatterns: []
|
2561
|
-
IgnoredMethods: [] # deprecated
|
2562
2614
|
|
2563
2615
|
Metrics/ModuleLength:
|
2564
2616
|
Description: 'Avoid modules longer than 100 lines of code.'
|
@@ -2588,7 +2640,6 @@ Metrics/PerceivedComplexity:
|
|
2588
2640
|
VersionChanged: '0.81'
|
2589
2641
|
AllowedMethods: []
|
2590
2642
|
AllowedPatterns: []
|
2591
|
-
IgnoredMethods: [] # deprecated
|
2592
2643
|
Max: 8
|
2593
2644
|
|
2594
2645
|
################## Migration #############################
|
@@ -2759,13 +2810,13 @@ Naming/HeredocDelimiterNaming:
|
|
2759
2810
|
Enabled: true
|
2760
2811
|
VersionAdded: '0.50'
|
2761
2812
|
ForbiddenDelimiters:
|
2762
|
-
- !ruby/regexp '/(^|\s)(EO[A-Z]{1}|END)(\s|$)/'
|
2813
|
+
- !ruby/regexp '/(^|\s)(EO[A-Z]{1}|END)(\s|$)/i'
|
2763
2814
|
|
2764
2815
|
Naming/InclusiveLanguage:
|
2765
2816
|
Description: 'Recommend the use of inclusive language instead of problematic terms.'
|
2766
2817
|
Enabled: false
|
2767
2818
|
VersionAdded: '1.18'
|
2768
|
-
VersionChanged: '1.
|
2819
|
+
VersionChanged: '1.49'
|
2769
2820
|
CheckIdentifiers: true
|
2770
2821
|
CheckConstants: true
|
2771
2822
|
CheckVariables: true
|
@@ -2817,7 +2868,6 @@ Naming/MethodName:
|
|
2817
2868
|
# - '\A\s*onSelectionCleared\s*'
|
2818
2869
|
#
|
2819
2870
|
AllowedPatterns: []
|
2820
|
-
IgnoredPatterns: [] # deprecated
|
2821
2871
|
|
2822
2872
|
Naming/MethodParameterName:
|
2823
2873
|
Description: >-
|
@@ -2918,6 +2968,7 @@ Naming/VariableNumber:
|
|
2918
2968
|
- rfc822 # Time#rfc822
|
2919
2969
|
- rfc2822 # Time#rfc2822
|
2920
2970
|
- rfc3339 # DateTime.rfc3339
|
2971
|
+
- x86_64 # Allowed by default as an underscore separated CPU architecture name
|
2921
2972
|
AllowedPatterns: []
|
2922
2973
|
|
2923
2974
|
#################### Security ##############################
|
@@ -2925,7 +2976,9 @@ Naming/VariableNumber:
|
|
2925
2976
|
Security/CompoundHash:
|
2926
2977
|
Description: 'When overwriting Object#hash to combine values, prefer delegating to Array#hash over writing a custom implementation.'
|
2927
2978
|
Enabled: pending
|
2979
|
+
Safe: false
|
2928
2980
|
VersionAdded: '1.28'
|
2981
|
+
VersionChanged: '1.51'
|
2929
2982
|
|
2930
2983
|
Security/Eval:
|
2931
2984
|
Description: 'The use of eval represents a serious security risk.'
|
@@ -3031,6 +3084,7 @@ Style/ArgumentsForwarding:
|
|
3031
3084
|
StyleGuide: '#arguments-forwarding'
|
3032
3085
|
Enabled: pending
|
3033
3086
|
AllowOnlyRestArgument: true
|
3087
|
+
UseAnonymousForwarding: true
|
3034
3088
|
VersionAdded: '1.1'
|
3035
3089
|
|
3036
3090
|
Style/ArrayCoercion:
|
@@ -3045,6 +3099,7 @@ Style/ArrayCoercion:
|
|
3045
3099
|
Style/ArrayIntersect:
|
3046
3100
|
Description: 'Use `array1.intersect?(array2)` instead of `(array1 & array2).any?`.'
|
3047
3101
|
Enabled: 'pending'
|
3102
|
+
Safe: false
|
3048
3103
|
VersionAdded: '1.40'
|
3049
3104
|
|
3050
3105
|
Style/ArrayJoin:
|
@@ -3187,7 +3242,6 @@ Style/BlockDelimiters:
|
|
3187
3242
|
- proc
|
3188
3243
|
- it
|
3189
3244
|
AllowedPatterns: []
|
3190
|
-
IgnoredMethods: [] # deprecated
|
3191
3245
|
# The AllowBracesOnProceduralOneLiners option is ignored unless the
|
3192
3246
|
# EnforcedStyle is set to `semantic`. If so:
|
3193
3247
|
#
|
@@ -3211,7 +3265,7 @@ Style/BlockDelimiters:
|
|
3211
3265
|
# collection.each do |element| puts element end
|
3212
3266
|
AllowBracesOnProceduralOneLiners: false
|
3213
3267
|
# The BracesRequiredMethods overrides all other configurations except
|
3214
|
-
#
|
3268
|
+
# AllowedMethods. It can be used to enforce that all blocks for specific
|
3215
3269
|
# methods use braces. For example, you can use this to enforce Sorbet
|
3216
3270
|
# signatures use braces even when the rest of your codebase enforces
|
3217
3271
|
# the `line_count_based` style.
|
@@ -3248,6 +3302,9 @@ Style/CaseLikeIf:
|
|
3248
3302
|
Enabled: true
|
3249
3303
|
Safe: false
|
3250
3304
|
VersionAdded: '0.88'
|
3305
|
+
VersionChanged: '1.48'
|
3306
|
+
# `MinBranchesCount` defines the number of branches `if` needs to have to trigger this cop.
|
3307
|
+
MinBranchesCount: 3
|
3251
3308
|
|
3252
3309
|
Style/CharacterLiteral:
|
3253
3310
|
Description: 'Checks for uses of character literals.'
|
@@ -3260,7 +3317,7 @@ Style/ClassAndModuleChildren:
|
|
3260
3317
|
StyleGuide: '#namespace-definition'
|
3261
3318
|
# Moving from compact to nested children requires knowledge of whether the
|
3262
3319
|
# outer parent is a module or a class. Moving from nested to compact requires
|
3263
|
-
# verification that the outer parent is defined elsewhere.
|
3320
|
+
# verification that the outer parent is defined elsewhere. RuboCop does not
|
3264
3321
|
# have the knowledge to perform either operation safely and thus requires
|
3265
3322
|
# manual oversight.
|
3266
3323
|
SafeAutoCorrect: false
|
@@ -3299,13 +3356,14 @@ Style/ClassEqualityComparison:
|
|
3299
3356
|
Description: 'Enforces the use of `Object#instance_of?` instead of class comparison for equality.'
|
3300
3357
|
StyleGuide: '#instance-of-vs-class-comparison'
|
3301
3358
|
Enabled: true
|
3359
|
+
SafeAutoCorrect: false
|
3302
3360
|
VersionAdded: '0.93'
|
3361
|
+
VersionChanged: '1.57'
|
3303
3362
|
AllowedMethods:
|
3304
3363
|
- ==
|
3305
3364
|
- equal?
|
3306
3365
|
- eql?
|
3307
3366
|
AllowedPatterns: []
|
3308
|
-
IgnoredMethods: [] # deprecated
|
3309
3367
|
|
3310
3368
|
Style/ClassMethods:
|
3311
3369
|
Description: 'Use self when defining module/class methods.'
|
@@ -3336,6 +3394,7 @@ Style/CollectionCompact:
|
|
3336
3394
|
Safe: false
|
3337
3395
|
VersionAdded: '1.2'
|
3338
3396
|
VersionChanged: '1.3'
|
3397
|
+
AllowedReceivers: []
|
3339
3398
|
|
3340
3399
|
# Align with the style guide.
|
3341
3400
|
Style/CollectionMethods:
|
@@ -3354,6 +3413,7 @@ Style/CollectionMethods:
|
|
3354
3413
|
PreferredMethods:
|
3355
3414
|
collect: 'map'
|
3356
3415
|
collect!: 'map!'
|
3416
|
+
collect_concat: 'flat_map'
|
3357
3417
|
inject: 'reduce'
|
3358
3418
|
detect: 'find'
|
3359
3419
|
find_all: 'select'
|
@@ -3426,6 +3486,11 @@ Style/CommentedKeyword:
|
|
3426
3486
|
VersionAdded: '0.51'
|
3427
3487
|
VersionChanged: '1.19'
|
3428
3488
|
|
3489
|
+
Style/ComparableClamp:
|
3490
|
+
Description: 'Enforces the use of `Comparable#clamp` instead of comparison by minimum and maximum.'
|
3491
|
+
Enabled: pending
|
3492
|
+
VersionAdded: '1.44'
|
3493
|
+
|
3429
3494
|
Style/ConcatArrayLiterals:
|
3430
3495
|
Description: 'Enforces the use of `Array#push(item)` instead of `Array#concat([item])` to avoid redundant array literals.'
|
3431
3496
|
Enabled: pending
|
@@ -3487,6 +3552,14 @@ Style/Copyright:
|
|
3487
3552
|
Notice: '^Copyright (\(c\) )?2[0-9]{3} .+'
|
3488
3553
|
AutocorrectNotice: ''
|
3489
3554
|
|
3555
|
+
Style/DataInheritance:
|
3556
|
+
Description: 'Checks for inheritance from Data.define.'
|
3557
|
+
StyleGuide: '#no-extend-data-define'
|
3558
|
+
Enabled: pending
|
3559
|
+
SafeAutoCorrect: false
|
3560
|
+
VersionAdded: '1.49'
|
3561
|
+
VersionChanged: '1.51'
|
3562
|
+
|
3490
3563
|
Style/DateTime:
|
3491
3564
|
Description: 'Use Time over DateTime.'
|
3492
3565
|
StyleGuide: '#date-time'
|
@@ -3510,6 +3583,12 @@ Style/Dir:
|
|
3510
3583
|
Enabled: true
|
3511
3584
|
VersionAdded: '0.50'
|
3512
3585
|
|
3586
|
+
Style/DirEmpty:
|
3587
|
+
Description: >-
|
3588
|
+
Prefer to use `Dir.empty?('path/to/dir')` when checking if a directory is empty.
|
3589
|
+
Enabled: pending
|
3590
|
+
VersionAdded: '1.48'
|
3591
|
+
|
3513
3592
|
Style/DisableCopsWithinSourceCodeDirective:
|
3514
3593
|
Description: >-
|
3515
3594
|
Forbids disabling/enabling cops within source code.
|
@@ -3670,6 +3749,11 @@ Style/EvenOdd:
|
|
3670
3749
|
VersionAdded: '0.12'
|
3671
3750
|
VersionChanged: '0.29'
|
3672
3751
|
|
3752
|
+
Style/ExactRegexpMatch:
|
3753
|
+
Description: 'Checks for exact regexp match inside Regexp literals.'
|
3754
|
+
Enabled: pending
|
3755
|
+
VersionAdded: '1.51'
|
3756
|
+
|
3673
3757
|
Style/ExpandPathArguments:
|
3674
3758
|
Description: "Use `expand_path(__dir__)` instead of `expand_path('..', __FILE__)`."
|
3675
3759
|
Enabled: true
|
@@ -3705,6 +3789,13 @@ Style/FetchEnvVar:
|
|
3705
3789
|
# Environment variables to be excluded from the inspection.
|
3706
3790
|
AllowedVars: []
|
3707
3791
|
|
3792
|
+
Style/FileEmpty:
|
3793
|
+
Description: >-
|
3794
|
+
Prefer to use `File.empty?('path/to/file')` when checking if a file is empty.
|
3795
|
+
Enabled: pending
|
3796
|
+
Safe: false
|
3797
|
+
VersionAdded: '1.48'
|
3798
|
+
|
3708
3799
|
Style/FileRead:
|
3709
3800
|
Description: 'Favor `File.(bin)read` convenience methods.'
|
3710
3801
|
StyleGuide: '#file-read'
|
@@ -3775,7 +3866,6 @@ Style/FormatStringToken:
|
|
3775
3866
|
VersionChanged: '1.0'
|
3776
3867
|
AllowedMethods: []
|
3777
3868
|
AllowedPatterns: []
|
3778
|
-
IgnoredMethods: [] # deprecated
|
3779
3869
|
|
3780
3870
|
Style/FrozenStringLiteralComment:
|
3781
3871
|
Description: >-
|
@@ -3842,8 +3932,9 @@ Style/HashConversion:
|
|
3842
3932
|
Description: 'Avoid Hash[] in favor of ary.to_h or literal hashes.'
|
3843
3933
|
StyleGuide: '#avoid-hash-constructor'
|
3844
3934
|
Enabled: pending
|
3935
|
+
SafeAutoCorrect: false
|
3845
3936
|
VersionAdded: '1.10'
|
3846
|
-
VersionChanged: '1.
|
3937
|
+
VersionChanged: '1.55'
|
3847
3938
|
AllowSplatArgument: true
|
3848
3939
|
|
3849
3940
|
Style/HashEachMethods:
|
@@ -3853,7 +3944,8 @@ Style/HashEachMethods:
|
|
3853
3944
|
Safe: false
|
3854
3945
|
VersionAdded: '0.80'
|
3855
3946
|
VersionChanged: '1.16'
|
3856
|
-
AllowedReceivers:
|
3947
|
+
AllowedReceivers:
|
3948
|
+
- Thread.current
|
3857
3949
|
|
3858
3950
|
Style/HashExcept:
|
3859
3951
|
Description: >-
|
@@ -3901,7 +3993,7 @@ Style/HashSyntax:
|
|
3901
3993
|
- never
|
3902
3994
|
# accepts both shorthand and explicit use of hash literal value.
|
3903
3995
|
- either
|
3904
|
-
#
|
3996
|
+
# forces use of the 3.1 syntax only if all values can be omitted in the hash.
|
3905
3997
|
- consistent
|
3906
3998
|
# Force hashes that have a symbol value to use hash rockets
|
3907
3999
|
UseHashRocketsWithSymbolValues: false
|
@@ -4015,16 +4107,35 @@ Style/InverseMethods:
|
|
4015
4107
|
:=~: :!~
|
4016
4108
|
:<: :>=
|
4017
4109
|
:>: :<=
|
4018
|
-
# `ActiveSupport` defines some common inverse methods. They are listed below,
|
4019
|
-
# and not enabled by default.
|
4020
|
-
# :present?: :blank?,
|
4021
|
-
# :include?: :exclude?
|
4022
4110
|
# `InverseBlocks` are methods that are inverted by inverting the return
|
4023
4111
|
# of the block that is passed to the method
|
4024
4112
|
InverseBlocks:
|
4025
4113
|
:select: :reject
|
4026
4114
|
:select!: :reject!
|
4027
4115
|
|
4116
|
+
Style/InvertibleUnlessCondition:
|
4117
|
+
Description: 'Favor `if` with inverted condition over `unless`.'
|
4118
|
+
Enabled: false
|
4119
|
+
Safe: false
|
4120
|
+
VersionAdded: '1.44'
|
4121
|
+
VersionChanged: '1.50'
|
4122
|
+
# `InverseMethods` are methods that can be inverted in a `unless` condition.
|
4123
|
+
# The relationship of inverse methods needs to be defined in both directions.
|
4124
|
+
# Keys and values both need to be defined as symbols.
|
4125
|
+
InverseMethods:
|
4126
|
+
:!=: :==
|
4127
|
+
:>: :<=
|
4128
|
+
:<=: :>
|
4129
|
+
:<: :>=
|
4130
|
+
:>=: :<
|
4131
|
+
:!~: :=~
|
4132
|
+
:zero?: :nonzero?
|
4133
|
+
:nonzero?: :zero?
|
4134
|
+
:any?: :none?
|
4135
|
+
:none?: :any?
|
4136
|
+
:even?: :odd?
|
4137
|
+
:odd?: :even?
|
4138
|
+
|
4028
4139
|
Style/IpAddresses:
|
4029
4140
|
Description: "Don't include literal IP addresses in code."
|
4030
4141
|
Enabled: false
|
@@ -4110,6 +4221,12 @@ Style/MapToHash:
|
|
4110
4221
|
VersionAdded: '1.24'
|
4111
4222
|
Safe: false
|
4112
4223
|
|
4224
|
+
Style/MapToSet:
|
4225
|
+
Description: 'Prefer `to_set` with a block over `map.to_set`.'
|
4226
|
+
Enabled: pending
|
4227
|
+
Safe: false
|
4228
|
+
VersionAdded: '1.42'
|
4229
|
+
|
4113
4230
|
Style/MethodCallWithArgsParentheses:
|
4114
4231
|
Description: 'Use parentheses for method calls with arguments.'
|
4115
4232
|
StyleGuide: '#method-invocation-parens'
|
@@ -4118,9 +4235,7 @@ Style/MethodCallWithArgsParentheses:
|
|
4118
4235
|
VersionChanged: '1.7'
|
4119
4236
|
IgnoreMacros: true
|
4120
4237
|
AllowedMethods: []
|
4121
|
-
IgnoredMethods: [] # deprecated
|
4122
4238
|
AllowedPatterns: []
|
4123
|
-
IgnoredPatterns: [] # deprecated
|
4124
4239
|
IncludedMacros: []
|
4125
4240
|
AllowParenthesesInMultilineCall: false
|
4126
4241
|
AllowParenthesesInChaining: false
|
@@ -4137,7 +4252,6 @@ Style/MethodCallWithoutArgsParentheses:
|
|
4137
4252
|
Enabled: true
|
4138
4253
|
AllowedMethods: []
|
4139
4254
|
AllowedPatterns: []
|
4140
|
-
IgnoredMethods: [] # deprecated
|
4141
4255
|
VersionAdded: '0.47'
|
4142
4256
|
VersionChanged: '0.55'
|
4143
4257
|
|
@@ -4168,6 +4282,12 @@ Style/MinMax:
|
|
4168
4282
|
Enabled: true
|
4169
4283
|
VersionAdded: '0.50'
|
4170
4284
|
|
4285
|
+
Style/MinMaxComparison:
|
4286
|
+
Description: 'Enforces the use of `max` or `min` instead of comparison for greater or less.'
|
4287
|
+
Enabled: pending
|
4288
|
+
Safe: false
|
4289
|
+
VersionAdded: '1.42'
|
4290
|
+
|
4171
4291
|
Style/MissingElse:
|
4172
4292
|
Description: >-
|
4173
4293
|
Require if/case expressions to have an else branches.
|
@@ -4291,6 +4411,7 @@ Style/MultipleComparison:
|
|
4291
4411
|
VersionAdded: '0.49'
|
4292
4412
|
VersionChanged: '1.1'
|
4293
4413
|
AllowMethodComparison: true
|
4414
|
+
ComparisonsThreshold: 2
|
4294
4415
|
|
4295
4416
|
Style/MutableConstant:
|
4296
4417
|
Description: 'Do not assign mutable objects to constants.'
|
@@ -4496,11 +4617,10 @@ Style/NumericPredicate:
|
|
4496
4617
|
Checks for the use of predicate- or comparison methods for
|
4497
4618
|
numeric comparisons.
|
4498
4619
|
StyleGuide: '#predicate-methods'
|
4499
|
-
Safe: false
|
4500
4620
|
# This will change to a new method call which isn't guaranteed to be on the
|
4501
4621
|
# object. Switching these methods has to be done with knowledge of the types
|
4502
4622
|
# of the variables which rubocop doesn't have.
|
4503
|
-
|
4623
|
+
Safe: false
|
4504
4624
|
Enabled: true
|
4505
4625
|
VersionAdded: '0.42'
|
4506
4626
|
VersionChanged: '0.59'
|
@@ -4510,7 +4630,6 @@ Style/NumericPredicate:
|
|
4510
4630
|
- comparison
|
4511
4631
|
AllowedMethods: []
|
4512
4632
|
AllowedPatterns: []
|
4513
|
-
IgnoredMethods: [] # deprecated
|
4514
4633
|
# Exclude RSpec specs because assertions like `expect(1).to be > 0` cause
|
4515
4634
|
# false positives.
|
4516
4635
|
Exclude:
|
@@ -4547,7 +4666,9 @@ Style/OpenStructUse:
|
|
4547
4666
|
- https://docs.ruby-lang.org/en/3.0.0/OpenStruct.html#class-OpenStruct-label-Caveats
|
4548
4667
|
|
4549
4668
|
Enabled: pending
|
4669
|
+
Safe: false
|
4550
4670
|
VersionAdded: '1.23'
|
4671
|
+
VersionChanged: '1.51'
|
4551
4672
|
|
4552
4673
|
Style/OperatorMethodCall:
|
4553
4674
|
Description: 'Checks for redundant dot before operator method call.'
|
@@ -4700,12 +4821,16 @@ Style/RedundantArgument:
|
|
4700
4821
|
Enabled: pending
|
4701
4822
|
Safe: false
|
4702
4823
|
VersionAdded: '1.4'
|
4703
|
-
VersionChanged: '1.
|
4824
|
+
VersionChanged: '1.55'
|
4704
4825
|
Methods:
|
4705
4826
|
# Array#join
|
4706
4827
|
join: ''
|
4707
4828
|
# Array#sum
|
4708
4829
|
sum: 0
|
4830
|
+
# Kernel.#exit
|
4831
|
+
exit: true
|
4832
|
+
# Kernel.#exit!
|
4833
|
+
exit!: false
|
4709
4834
|
# String#split
|
4710
4835
|
split: ' '
|
4711
4836
|
# String#chomp
|
@@ -4713,6 +4838,11 @@ Style/RedundantArgument:
|
|
4713
4838
|
# String#chomp!
|
4714
4839
|
chomp!: "\n"
|
4715
4840
|
|
4841
|
+
Style/RedundantArrayConstructor:
|
4842
|
+
Description: 'Checks for the instantiation of array using redundant `Array` constructor.'
|
4843
|
+
Enabled: pending
|
4844
|
+
VersionAdded: '1.52'
|
4845
|
+
|
4716
4846
|
Style/RedundantAssignment:
|
4717
4847
|
Description: 'Checks for redundant assignment before returning.'
|
4718
4848
|
Enabled: true
|
@@ -4745,6 +4875,11 @@ Style/RedundantConstantBase:
|
|
4745
4875
|
Enabled: pending
|
4746
4876
|
VersionAdded: '1.40'
|
4747
4877
|
|
4878
|
+
Style/RedundantCurrentDirectoryInPath:
|
4879
|
+
Description: 'Checks for uses a redundant current directory in path.'
|
4880
|
+
Enabled: pending
|
4881
|
+
VersionAdded: '1.53'
|
4882
|
+
|
4748
4883
|
Style/RedundantDoubleSplatHashBraces:
|
4749
4884
|
Description: 'Checks for redundant uses of double splat hash braces.'
|
4750
4885
|
Enabled: pending
|
@@ -4784,12 +4919,26 @@ Style/RedundantFileExtensionInRequire:
|
|
4784
4919
|
Enabled: true
|
4785
4920
|
VersionAdded: '0.88'
|
4786
4921
|
|
4922
|
+
Style/RedundantFilterChain:
|
4923
|
+
Description: >-
|
4924
|
+
Identifies usages of `any?`, `empty?`, `none?` or `one?` predicate methods chained to
|
4925
|
+
`select`/`filter`/`find_all` and change them to use predicate method instead.
|
4926
|
+
Enabled: pending
|
4927
|
+
SafeAutoCorrect: false
|
4928
|
+
VersionAdded: '1.52'
|
4929
|
+
VersionChanged: '1.57'
|
4930
|
+
|
4787
4931
|
Style/RedundantFreeze:
|
4788
4932
|
Description: "Checks usages of Object#freeze on immutable objects."
|
4789
4933
|
Enabled: true
|
4790
4934
|
VersionAdded: '0.34'
|
4791
4935
|
VersionChanged: '0.66'
|
4792
4936
|
|
4937
|
+
Style/RedundantHeredocDelimiterQuotes:
|
4938
|
+
Description: 'Checks for redundant heredoc delimiter quotes.'
|
4939
|
+
Enabled: pending
|
4940
|
+
VersionAdded: '1.45'
|
4941
|
+
|
4793
4942
|
Style/RedundantInitialize:
|
4794
4943
|
Description: 'Checks for redundant `initialize` methods.'
|
4795
4944
|
Enabled: pending
|
@@ -4805,6 +4954,11 @@ Style/RedundantInterpolation:
|
|
4805
4954
|
VersionAdded: '0.76'
|
4806
4955
|
VersionChanged: '1.30'
|
4807
4956
|
|
4957
|
+
Style/RedundantLineContinuation:
|
4958
|
+
Description: 'Check for redundant line continuation.'
|
4959
|
+
Enabled: pending
|
4960
|
+
VersionAdded: '1.49'
|
4961
|
+
|
4808
4962
|
Style/RedundantParentheses:
|
4809
4963
|
Description: "Checks for parentheses that seem not to serve any purpose."
|
4810
4964
|
Enabled: true
|
@@ -4816,11 +4970,21 @@ Style/RedundantPercentQ:
|
|
4816
4970
|
Enabled: true
|
4817
4971
|
VersionAdded: '0.76'
|
4818
4972
|
|
4973
|
+
Style/RedundantRegexpArgument:
|
4974
|
+
Description: 'Identifies places where argument can be replaced from a deterministic regexp to a string.'
|
4975
|
+
Enabled: pending
|
4976
|
+
VersionAdded: '1.53'
|
4977
|
+
|
4819
4978
|
Style/RedundantRegexpCharacterClass:
|
4820
4979
|
Description: 'Checks for unnecessary single-element Regexp character classes.'
|
4821
4980
|
Enabled: true
|
4822
4981
|
VersionAdded: '0.85'
|
4823
4982
|
|
4983
|
+
Style/RedundantRegexpConstructor:
|
4984
|
+
Description: 'Checks for the instantiation of regexp using redundant `Regexp.new` or `Regexp.compile`.'
|
4985
|
+
Enabled: pending
|
4986
|
+
VersionAdded: '1.52'
|
4987
|
+
|
4824
4988
|
Style/RedundantRegexpEscape:
|
4825
4989
|
Description: 'Checks for redundant escapes in Regexps.'
|
4826
4990
|
Enabled: true
|
@@ -4923,6 +5087,15 @@ Style/ReturnNil:
|
|
4923
5087
|
- return_nil
|
4924
5088
|
VersionAdded: '0.50'
|
4925
5089
|
|
5090
|
+
Style/ReturnNilInPredicateMethodDefinition:
|
5091
|
+
Description: 'Checks if uses of `return` or `return nil` in predicate method definition.'
|
5092
|
+
StyleGuide: '#bool-methods-qmark'
|
5093
|
+
Enabled: pending
|
5094
|
+
SafeAutoCorrect: false
|
5095
|
+
AllowedMethods: []
|
5096
|
+
AllowedPatterns: []
|
5097
|
+
VersionAdded: '1.53'
|
5098
|
+
|
4926
5099
|
Style/SafeNavigation:
|
4927
5100
|
Description: >-
|
4928
5101
|
Transforms usages of a method call safeguarded by
|
@@ -5015,6 +5188,11 @@ Style/SingleLineBlockParams:
|
|
5015
5188
|
- acc
|
5016
5189
|
- elem
|
5017
5190
|
|
5191
|
+
Style/SingleLineDoEndBlock:
|
5192
|
+
Description: 'Checks for single-line `do`...`end` blocks.'
|
5193
|
+
Enabled: pending
|
5194
|
+
VersionAdded: '1.57'
|
5195
|
+
|
5018
5196
|
Style/SingleLineMethods:
|
5019
5197
|
Description: 'Avoid single-line methods.'
|
5020
5198
|
StyleGuide: '#no-single-line-methods'
|
@@ -5187,7 +5365,6 @@ Style/SymbolProc:
|
|
5187
5365
|
AllowedMethods:
|
5188
5366
|
- define_method
|
5189
5367
|
AllowedPatterns: []
|
5190
|
-
IgnoredMethods: [] # deprecated
|
5191
5368
|
AllowComments: false
|
5192
5369
|
|
5193
5370
|
Style/TernaryParentheses:
|
@@ -5408,6 +5585,11 @@ Style/WordArray:
|
|
5408
5585
|
# The regular expression `WordRegex` decides what is considered a word.
|
5409
5586
|
WordRegex: !ruby/regexp '/\A(?:\p{Word}|\p{Word}-\p{Word}|\n|\t)+\z/'
|
5410
5587
|
|
5588
|
+
Style/YAMLFileRead:
|
5589
|
+
Description: 'Checks for the use of `YAML.load`, `YAML.safe_load`, and `YAML.parse` with `File.read` argument.'
|
5590
|
+
Enabled: pending
|
5591
|
+
VersionAdded: '1.53'
|
5592
|
+
|
5411
5593
|
Style/YodaCondition:
|
5412
5594
|
Description: 'Forbid or enforce yoda conditions.'
|
5413
5595
|
Reference: 'https://en.wikipedia.org/wiki/Yoda_conditions'
|
@@ -5426,6 +5608,19 @@ Style/YodaCondition:
|
|
5426
5608
|
VersionAdded: '0.49'
|
5427
5609
|
VersionChanged: '0.75'
|
5428
5610
|
|
5611
|
+
Style/YodaExpression:
|
5612
|
+
Description: 'Forbid the use of yoda expressions.'
|
5613
|
+
Enabled: false
|
5614
|
+
Safe: false
|
5615
|
+
VersionAdded: '1.42'
|
5616
|
+
VersionChanged: '1.43'
|
5617
|
+
SupportedOperators:
|
5618
|
+
- '*'
|
5619
|
+
- '+'
|
5620
|
+
- '&'
|
5621
|
+
- '|'
|
5622
|
+
- '^'
|
5623
|
+
|
5429
5624
|
Style/ZeroLengthPredicate:
|
5430
5625
|
Description: 'Use #empty? when testing for objects of length 0.'
|
5431
5626
|
Enabled: true
|