rubocop 1.27.0 → 1.51.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/LICENSE.txt +1 -1
- data/README.md +8 -6
- data/config/default.yml +462 -69
- data/config/obsoletion.yml +35 -2
- data/exe/rubocop +15 -7
- data/lib/rubocop/arguments_env.rb +17 -0
- data/lib/rubocop/arguments_file.rb +17 -0
- data/lib/rubocop/cache_config.rb +29 -0
- data/lib/rubocop/cli/command/{auto_genenerate_config.rb → auto_generate_config.rb} +27 -5
- data/lib/rubocop/cli/command/execute_runner.rb +15 -10
- data/lib/rubocop/cli/command/init_dotfile.rb +1 -1
- data/lib/rubocop/cli/command/show_cops.rb +1 -1
- data/lib/rubocop/cli/command/suggest_extensions.rb +62 -17
- data/lib/rubocop/cli.rb +57 -9
- data/lib/rubocop/comment_config.rb +60 -1
- data/lib/rubocop/config.rb +52 -20
- data/lib/rubocop/config_finder.rb +68 -0
- data/lib/rubocop/config_loader.rb +49 -69
- data/lib/rubocop/config_loader_resolver.rb +11 -12
- data/lib/rubocop/config_obsoletion/changed_parameter.rb +5 -0
- data/lib/rubocop/config_obsoletion/parameter_rule.rb +4 -0
- data/lib/rubocop/config_obsoletion.rb +9 -4
- data/lib/rubocop/config_validator.rb +22 -5
- data/lib/rubocop/cop/autocorrect_logic.rb +32 -14
- data/lib/rubocop/cop/badge.rb +10 -5
- data/lib/rubocop/cop/base.rb +119 -83
- data/lib/rubocop/cop/bundler/duplicated_gem.rb +2 -2
- data/lib/rubocop/cop/bundler/gem_comment.rb +2 -2
- data/lib/rubocop/cop/bundler/gem_filename.rb +5 -5
- data/lib/rubocop/cop/bundler/ordered_gems.rb +2 -2
- data/lib/rubocop/cop/commissioner.rb +19 -6
- data/lib/rubocop/cop/cop.rb +54 -34
- data/lib/rubocop/cop/corrector.rb +33 -13
- data/lib/rubocop/cop/correctors/alignment_corrector.rb +4 -4
- data/lib/rubocop/cop/correctors/condition_corrector.rb +1 -1
- data/lib/rubocop/cop/correctors/each_to_for_corrector.rb +4 -4
- data/lib/rubocop/cop/correctors/empty_line_corrector.rb +1 -1
- data/lib/rubocop/cop/correctors/for_to_each_corrector.rb +7 -5
- data/lib/rubocop/cop/correctors/if_then_corrector.rb +1 -1
- data/lib/rubocop/cop/correctors/lambda_literal_to_method_corrector.rb +1 -1
- data/lib/rubocop/cop/correctors/line_break_corrector.rb +8 -2
- data/lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb +26 -10
- data/lib/rubocop/cop/correctors/ordered_gem_corrector.rb +3 -8
- data/lib/rubocop/cop/correctors/parentheses_corrector.rb +59 -1
- data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +3 -3
- data/lib/rubocop/cop/correctors/punctuation_corrector.rb +1 -1
- data/lib/rubocop/cop/correctors/space_corrector.rb +1 -1
- data/lib/rubocop/cop/correctors/string_literal_corrector.rb +1 -1
- data/lib/rubocop/cop/correctors/unused_arg_corrector.rb +2 -2
- data/lib/rubocop/cop/gemspec/dependency_version.rb +154 -0
- data/lib/rubocop/cop/gemspec/deprecated_attribute_assignment.rb +92 -0
- data/lib/rubocop/cop/gemspec/development_dependencies.rb +107 -0
- data/lib/rubocop/cop/gemspec/duplicated_assignment.rb +4 -7
- data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +1 -1
- data/lib/rubocop/cop/gemspec/require_mfa.rb +21 -21
- data/lib/rubocop/cop/gemspec/ruby_version_globals_usage.rb +1 -1
- data/lib/rubocop/cop/generator/require_file_injector.rb +2 -2
- data/lib/rubocop/cop/generator.rb +6 -3
- data/lib/rubocop/cop/internal_affairs/cop_description.rb +98 -0
- data/lib/rubocop/cop/internal_affairs/create_empty_file.rb +37 -0
- data/lib/rubocop/cop/internal_affairs/empty_line_between_expect_offense_and_correction.rb +1 -1
- data/lib/rubocop/cop/internal_affairs/example_heredoc_delimiter.rb +111 -0
- data/lib/rubocop/cop/internal_affairs/inherit_deprecated_cop_class.rb +1 -1
- data/lib/rubocop/cop/internal_affairs/lambda_or_proc.rb +46 -0
- data/lib/rubocop/cop/internal_affairs/location_expression.rb +37 -0
- data/lib/rubocop/cop/internal_affairs/location_line_equality_comparison.rb +1 -1
- data/lib/rubocop/cop/internal_affairs/method_name_end_with.rb +80 -0
- data/lib/rubocop/cop/internal_affairs/node_matcher_directive.rb +3 -7
- data/lib/rubocop/cop/internal_affairs/node_type_predicate.rb +1 -1
- data/lib/rubocop/cop/internal_affairs/numblock_handler.rb +69 -0
- data/lib/rubocop/cop/internal_affairs/processed_source_buffer_name.rb +42 -0
- data/lib/rubocop/cop/internal_affairs/redundant_described_class_as_subject.rb +1 -1
- data/lib/rubocop/cop/internal_affairs/redundant_let_rubocop_config_new.rb +12 -4
- 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_source_range.rb +66 -0
- data/lib/rubocop/cop/internal_affairs/single_line_comparison.rb +62 -0
- data/lib/rubocop/cop/internal_affairs/useless_restrict_on_send.rb +60 -0
- data/lib/rubocop/cop/internal_affairs.rb +11 -0
- data/lib/rubocop/cop/layout/argument_alignment.rb +22 -1
- data/lib/rubocop/cop/layout/array_alignment.rb +1 -1
- data/lib/rubocop/cop/layout/assignment_indentation.rb +1 -1
- data/lib/rubocop/cop/layout/begin_end_alignment.rb +1 -1
- data/lib/rubocop/cop/layout/block_alignment.rb +17 -13
- data/lib/rubocop/cop/layout/block_end_newline.rb +32 -10
- data/lib/rubocop/cop/layout/case_indentation.rb +17 -1
- data/lib/rubocop/cop/layout/class_structure.rb +37 -27
- data/lib/rubocop/cop/layout/closing_heredoc_indentation.rb +1 -1
- data/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +3 -7
- data/lib/rubocop/cop/layout/comment_indentation.rb +5 -3
- data/lib/rubocop/cop/layout/condition_position.rb +1 -1
- data/lib/rubocop/cop/layout/def_end_alignment.rb +1 -1
- data/lib/rubocop/cop/layout/dot_position.rb +1 -1
- data/lib/rubocop/cop/layout/else_alignment.rb +1 -1
- data/lib/rubocop/cop/layout/empty_comment.rb +4 -4
- data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +1 -1
- data/lib/rubocop/cop/layout/empty_line_after_multiline_condition.rb +1 -1
- data/lib/rubocop/cop/layout/empty_line_between_defs.rb +2 -2
- data/lib/rubocop/cop/layout/empty_lines.rb +4 -2
- data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +7 -2
- data/lib/rubocop/cop/layout/empty_lines_around_arguments.rb +1 -1
- data/lib/rubocop/cop/layout/empty_lines_around_attribute_accessor.rb +25 -4
- data/lib/rubocop/cop/layout/empty_lines_around_begin_body.rb +1 -1
- data/lib/rubocop/cop/layout/empty_lines_around_block_body.rb +7 -5
- data/lib/rubocop/cop/layout/empty_lines_around_class_body.rb +10 -10
- data/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +1 -1
- data/lib/rubocop/cop/layout/empty_lines_around_method_body.rb +1 -1
- data/lib/rubocop/cop/layout/empty_lines_around_module_body.rb +10 -10
- data/lib/rubocop/cop/layout/end_alignment.rb +10 -2
- data/lib/rubocop/cop/layout/end_of_line.rb +5 -5
- data/lib/rubocop/cop/layout/extra_spacing.rb +16 -7
- data/lib/rubocop/cop/layout/first_argument_indentation.rb +43 -32
- data/lib/rubocop/cop/layout/first_array_element_indentation.rb +21 -14
- data/lib/rubocop/cop/layout/first_array_element_line_break.rb +36 -9
- data/lib/rubocop/cop/layout/first_hash_element_indentation.rb +52 -13
- data/lib/rubocop/cop/layout/first_hash_element_line_break.rb +37 -2
- data/lib/rubocop/cop/layout/first_method_argument_line_break.rb +58 -9
- data/lib/rubocop/cop/layout/first_method_parameter_line_break.rb +53 -20
- data/lib/rubocop/cop/layout/first_parameter_indentation.rb +1 -1
- data/lib/rubocop/cop/layout/hash_alignment.rb +2 -0
- data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +11 -5
- data/lib/rubocop/cop/layout/heredoc_indentation.rb +9 -12
- data/lib/rubocop/cop/layout/indentation_consistency.rb +1 -1
- data/lib/rubocop/cop/layout/indentation_style.rb +8 -3
- data/lib/rubocop/cop/layout/indentation_width.rb +16 -9
- data/lib/rubocop/cop/layout/initial_indentation.rb +3 -3
- data/lib/rubocop/cop/layout/leading_comment_space.rb +2 -2
- data/lib/rubocop/cop/layout/leading_empty_lines.rb +1 -1
- data/lib/rubocop/cop/layout/line_continuation_leading_space.rb +136 -0
- data/lib/rubocop/cop/layout/line_continuation_spacing.rb +140 -0
- data/lib/rubocop/cop/layout/line_end_string_concatenation_indentation.rb +2 -2
- data/lib/rubocop/cop/layout/line_length.rb +13 -6
- data/lib/rubocop/cop/layout/multiline_array_brace_layout.rb +1 -1
- data/lib/rubocop/cop/layout/multiline_array_line_breaks.rb +32 -2
- data/lib/rubocop/cop/layout/multiline_assignment_layout.rb +2 -2
- data/lib/rubocop/cop/layout/multiline_block_layout.rb +5 -3
- data/lib/rubocop/cop/layout/multiline_hash_brace_layout.rb +1 -1
- data/lib/rubocop/cop/layout/multiline_hash_key_line_breaks.rb +30 -2
- data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +40 -3
- data/lib/rubocop/cop/layout/multiline_method_call_brace_layout.rb +1 -1
- data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +22 -5
- data/lib/rubocop/cop/layout/multiline_method_definition_brace_layout.rb +1 -1
- data/lib/rubocop/cop/layout/multiline_method_parameter_line_breaks.rb +77 -0
- data/lib/rubocop/cop/layout/multiline_operation_indentation.rb +3 -3
- data/lib/rubocop/cop/layout/redundant_line_break.rb +10 -11
- data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +3 -3
- data/lib/rubocop/cop/layout/single_line_block_chain.rb +1 -1
- data/lib/rubocop/cop/layout/space_after_not.rb +1 -1
- data/lib/rubocop/cop/layout/space_around_block_parameters.rb +3 -3
- data/lib/rubocop/cop/layout/space_around_keyword.rb +3 -3
- data/lib/rubocop/cop/layout/space_around_operators.rb +2 -2
- data/lib/rubocop/cop/layout/space_before_block_braces.rb +5 -3
- data/lib/rubocop/cop/layout/space_before_brackets.rb +7 -0
- data/lib/rubocop/cop/layout/space_before_comment.rb +1 -1
- data/lib/rubocop/cop/layout/space_before_first_arg.rb +2 -2
- data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +3 -3
- data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +32 -30
- data/lib/rubocop/cop/layout/space_inside_array_percent_literal.rb +3 -0
- data/lib/rubocop/cop/layout/space_inside_block_braces.rb +35 -15
- data/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +30 -3
- data/lib/rubocop/cop/layout/space_inside_parens.rb +2 -2
- data/lib/rubocop/cop/layout/space_inside_percent_literal_delimiters.rb +34 -0
- data/lib/rubocop/cop/layout/space_inside_reference_brackets.rb +11 -7
- data/lib/rubocop/cop/layout/space_inside_string_interpolation.rb +6 -5
- data/lib/rubocop/cop/layout/trailing_empty_lines.rb +10 -10
- data/lib/rubocop/cop/layout/trailing_whitespace.rb +15 -8
- data/lib/rubocop/cop/legacy/corrections_proxy.rb +1 -1
- data/lib/rubocop/cop/legacy/corrector.rb +1 -1
- data/lib/rubocop/cop/lint/ambiguous_assignment.rb +1 -1
- data/lib/rubocop/cop/lint/ambiguous_block_association.rb +40 -8
- data/lib/rubocop/cop/lint/ambiguous_operator.rb +5 -1
- data/lib/rubocop/cop/lint/ambiguous_operator_precedence.rb +1 -1
- data/lib/rubocop/cop/lint/ambiguous_range.rb +5 -5
- data/lib/rubocop/cop/lint/ambiguous_regexp_literal.rb +1 -1
- data/lib/rubocop/cop/lint/assignment_in_condition.rb +12 -2
- data/lib/rubocop/cop/lint/binary_operator_with_identical_operands.rb +1 -1
- data/lib/rubocop/cop/lint/boolean_symbol.rb +1 -1
- data/lib/rubocop/cop/lint/circular_argument_reference.rb +1 -1
- data/lib/rubocop/cop/lint/constant_overwritten_in_rescue.rb +51 -0
- data/lib/rubocop/cop/lint/constant_resolution.rb +5 -1
- data/lib/rubocop/cop/lint/debugger.rb +28 -32
- data/lib/rubocop/cop/lint/deprecated_class_methods.rb +67 -111
- data/lib/rubocop/cop/lint/deprecated_constants.rb +9 -2
- data/lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb +1 -1
- data/lib/rubocop/cop/lint/disjunctive_assignment_in_constructor.rb +1 -1
- data/lib/rubocop/cop/lint/duplicate_branch.rb +1 -3
- data/lib/rubocop/cop/lint/duplicate_case_condition.rb +1 -1
- data/lib/rubocop/cop/lint/duplicate_elsif_condition.rb +1 -1
- data/lib/rubocop/cop/lint/duplicate_hash_key.rb +1 -1
- data/lib/rubocop/cop/lint/duplicate_magic_comment.rb +73 -0
- data/lib/rubocop/cop/lint/duplicate_match_pattern.rb +122 -0
- data/lib/rubocop/cop/lint/duplicate_methods.rb +49 -19
- data/lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb +27 -10
- data/lib/rubocop/cop/lint/duplicate_require.rb +11 -2
- data/lib/rubocop/cop/lint/duplicate_rescue_exception.rb +1 -1
- data/lib/rubocop/cop/lint/each_with_object_argument.rb +1 -1
- data/lib/rubocop/cop/lint/else_layout.rb +6 -10
- data/lib/rubocop/cop/lint/empty_block.rb +4 -8
- data/lib/rubocop/cop/lint/empty_class.rb +4 -2
- data/lib/rubocop/cop/lint/empty_conditional_body.rb +111 -3
- data/lib/rubocop/cop/lint/empty_ensure.rb +1 -1
- data/lib/rubocop/cop/lint/empty_expression.rb +1 -1
- data/lib/rubocop/cop/lint/empty_file.rb +1 -1
- data/lib/rubocop/cop/lint/empty_in_pattern.rb +1 -1
- data/lib/rubocop/cop/lint/empty_interpolation.rb +2 -2
- data/lib/rubocop/cop/lint/empty_when.rb +1 -1
- data/lib/rubocop/cop/lint/ensure_return.rb +1 -1
- data/lib/rubocop/cop/lint/erb_new_arguments.rb +12 -12
- data/lib/rubocop/cop/lint/flip_flop.rb +1 -1
- data/lib/rubocop/cop/lint/float_comparison.rb +1 -1
- data/lib/rubocop/cop/lint/float_out_of_range.rb +1 -1
- 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/implicit_string_concatenation.rb +2 -2
- data/lib/rubocop/cop/lint/incompatible_io_select_with_fiber_scheduler.rb +6 -3
- data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +2 -2
- data/lib/rubocop/cop/lint/inherit_exception.rb +1 -1
- data/lib/rubocop/cop/lint/interpolation_check.rb +6 -5
- data/lib/rubocop/cop/lint/lambda_without_literal_block.rb +3 -3
- data/lib/rubocop/cop/lint/literal_as_condition.rb +6 -1
- data/lib/rubocop/cop/lint/literal_in_interpolation.rb +49 -3
- data/lib/rubocop/cop/lint/loop.rb +2 -2
- data/lib/rubocop/cop/lint/missing_cop_enable_directive.rb +19 -4
- data/lib/rubocop/cop/lint/missing_super.rb +32 -3
- data/lib/rubocop/cop/lint/mixed_regexp_capture_types.rb +1 -0
- data/lib/rubocop/cop/lint/nested_method_definition.rb +54 -10
- data/lib/rubocop/cop/lint/nested_percent_literal.rb +1 -1
- data/lib/rubocop/cop/lint/next_without_accumulator.rb +25 -6
- data/lib/rubocop/cop/lint/non_atomic_file_operation.rb +162 -0
- data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +17 -5
- data/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +1 -1
- data/lib/rubocop/cop/lint/number_conversion.rb +32 -10
- data/lib/rubocop/cop/lint/numbered_parameter_assignment.rb +3 -3
- data/lib/rubocop/cop/lint/or_assignment_to_constant.rb +4 -3
- data/lib/rubocop/cop/lint/ordered_magic_comments.rb +4 -5
- data/lib/rubocop/cop/lint/out_of_range_regexp_ref.rb +17 -2
- data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +7 -2
- data/lib/rubocop/cop/lint/percent_string_array.rb +2 -2
- data/lib/rubocop/cop/lint/percent_symbol_array.rb +2 -2
- data/lib/rubocop/cop/lint/raise_exception.rb +2 -2
- data/lib/rubocop/cop/lint/rand_one.rb +1 -1
- data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +55 -15
- data/lib/rubocop/cop/lint/redundant_cop_enable_directive.rb +8 -8
- data/lib/rubocop/cop/lint/redundant_dir_glob_sort.rb +7 -0
- data/lib/rubocop/cop/lint/redundant_require_statement.rb +48 -7
- data/lib/rubocop/cop/lint/redundant_safe_navigation.rb +16 -3
- data/lib/rubocop/cop/lint/redundant_splat_expansion.rb +2 -2
- data/lib/rubocop/cop/lint/redundant_string_coercion.rb +35 -15
- data/lib/rubocop/cop/lint/redundant_with_index.rb +15 -12
- data/lib/rubocop/cop/lint/redundant_with_object.rb +14 -13
- data/lib/rubocop/cop/lint/refinement_import_methods.rb +3 -2
- data/lib/rubocop/cop/lint/regexp_as_condition.rb +9 -3
- data/lib/rubocop/cop/lint/require_parentheses.rb +4 -2
- data/lib/rubocop/cop/lint/require_range_parentheses.rb +57 -0
- data/lib/rubocop/cop/lint/rescue_exception.rb +1 -1
- data/lib/rubocop/cop/lint/rescue_type.rb +3 -3
- data/lib/rubocop/cop/lint/return_in_void_context.rb +6 -18
- data/lib/rubocop/cop/lint/safe_navigation_chain.rb +44 -8
- data/lib/rubocop/cop/lint/safe_navigation_consistency.rb +2 -2
- data/lib/rubocop/cop/lint/safe_navigation_with_empty.rb +1 -1
- data/lib/rubocop/cop/lint/script_permission.rb +2 -2
- data/lib/rubocop/cop/lint/self_assignment.rb +1 -1
- data/lib/rubocop/cop/lint/send_with_mixin_argument.rb +5 -4
- data/lib/rubocop/cop/lint/shadowed_argument.rb +1 -1
- data/lib/rubocop/cop/lint/shadowed_exception.rb +17 -12
- data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +29 -4
- data/lib/rubocop/cop/lint/struct_new_override.rb +3 -3
- 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 +5 -1
- data/lib/rubocop/cop/lint/to_enum_arguments.rb +14 -4
- data/lib/rubocop/cop/lint/to_json.rb +1 -1
- data/lib/rubocop/cop/lint/top_level_return_with_argument.rb +24 -10
- data/lib/rubocop/cop/lint/trailing_comma_in_attribute_declaration.rb +2 -2
- data/lib/rubocop/cop/lint/triple_quotes.rb +1 -1
- data/lib/rubocop/cop/lint/underscore_prefixed_variable_name.rb +1 -1
- data/lib/rubocop/cop/lint/unexpected_block_arity.rb +1 -1
- data/lib/rubocop/cop/lint/unified_integer.rb +3 -1
- data/lib/rubocop/cop/lint/unreachable_code.rb +1 -1
- data/lib/rubocop/cop/lint/unreachable_loop.rb +15 -9
- data/lib/rubocop/cop/lint/unused_block_argument.rb +1 -1
- data/lib/rubocop/cop/lint/unused_method_argument.rb +7 -2
- data/lib/rubocop/cop/lint/uri_escape_unescape.rb +1 -1
- data/lib/rubocop/cop/lint/uri_regexp.rb +1 -1
- data/lib/rubocop/cop/lint/useless_access_modifier.rb +18 -13
- data/lib/rubocop/cop/lint/useless_assignment.rb +57 -2
- data/lib/rubocop/cop/lint/useless_else_without_rescue.rb +2 -3
- data/lib/rubocop/cop/lint/useless_method_definition.rb +13 -5
- data/lib/rubocop/cop/lint/useless_rescue.rb +89 -0
- data/lib/rubocop/cop/lint/useless_ruby2_keywords.rb +16 -6
- data/lib/rubocop/cop/lint/useless_setter_call.rb +2 -2
- data/lib/rubocop/cop/lint/useless_times.rb +3 -3
- data/lib/rubocop/cop/lint/void.rb +92 -21
- data/lib/rubocop/cop/metrics/abc_size.rb +5 -3
- data/lib/rubocop/cop/metrics/block_length.rb +17 -12
- data/lib/rubocop/cop/metrics/block_nesting.rb +3 -3
- data/lib/rubocop/cop/metrics/class_length.rb +11 -5
- data/lib/rubocop/cop/metrics/collection_literal_length.rb +76 -0
- data/lib/rubocop/cop/metrics/cyclomatic_complexity.rb +2 -2
- data/lib/rubocop/cop/metrics/method_length.rb +18 -12
- data/lib/rubocop/cop/metrics/module_length.rb +10 -5
- data/lib/rubocop/cop/metrics/parameter_lists.rb +28 -1
- data/lib/rubocop/cop/metrics/perceived_complexity.rb +2 -2
- data/lib/rubocop/cop/metrics/utils/abc_size_calculator.rb +4 -7
- data/lib/rubocop/cop/metrics/utils/code_length_calculator.rb +29 -7
- data/lib/rubocop/cop/migration/department_name.rb +1 -1
- data/lib/rubocop/cop/mixin/alignment.rb +2 -2
- data/lib/rubocop/cop/mixin/allowed_identifiers.rb +2 -2
- data/lib/rubocop/cop/mixin/allowed_methods.rb +23 -2
- data/lib/rubocop/cop/mixin/allowed_pattern.rb +56 -0
- data/lib/rubocop/cop/mixin/annotation_comment.rb +14 -7
- data/lib/rubocop/cop/mixin/check_line_breakable.rb +5 -1
- data/lib/rubocop/cop/mixin/code_length.rb +1 -1
- data/lib/rubocop/cop/mixin/comments_help.rb +29 -5
- data/lib/rubocop/cop/mixin/configurable_enforced_style.rb +21 -9
- data/lib/rubocop/cop/mixin/def_node.rb +2 -7
- data/lib/rubocop/cop/mixin/documentation_comment.rb +1 -1
- data/lib/rubocop/cop/mixin/duplication.rb +1 -1
- data/lib/rubocop/cop/mixin/enforce_superclass.rb +2 -1
- data/lib/rubocop/cop/mixin/first_element_line_break.rb +11 -7
- data/lib/rubocop/cop/mixin/frozen_string_literal.rb +4 -0
- data/lib/rubocop/cop/mixin/hash_alignment_styles.rb +1 -1
- data/lib/rubocop/cop/mixin/hash_shorthand_syntax.rb +157 -12
- data/lib/rubocop/cop/mixin/hash_transform_method.rb +13 -9
- data/lib/rubocop/cop/mixin/line_length_help.rb +11 -2
- data/lib/rubocop/cop/mixin/method_complexity.rb +13 -16
- data/lib/rubocop/cop/mixin/min_branches_count.rb +40 -0
- data/lib/rubocop/cop/mixin/multiline_element_indentation.rb +34 -12
- data/lib/rubocop/cop/mixin/multiline_element_line_breaks.rb +5 -6
- data/lib/rubocop/cop/mixin/ordered_gem_node.rb +1 -1
- data/lib/rubocop/cop/mixin/percent_array.rb +58 -1
- data/lib/rubocop/cop/mixin/preceding_following_alignment.rb +1 -1
- data/lib/rubocop/cop/mixin/preferred_delimiters.rb +2 -2
- data/lib/rubocop/cop/mixin/range_help.rb +28 -7
- data/lib/rubocop/cop/mixin/require_library.rb +2 -0
- data/lib/rubocop/cop/mixin/rescue_node.rb +5 -3
- data/lib/rubocop/cop/mixin/space_after_punctuation.rb +1 -1
- data/lib/rubocop/cop/mixin/statement_modifier.rb +19 -4
- data/lib/rubocop/cop/mixin/string_help.rb +1 -1
- data/lib/rubocop/cop/mixin/surrounding_space.rb +13 -11
- data/lib/rubocop/cop/mixin/trailing_comma.rb +3 -3
- data/lib/rubocop/cop/mixin/visibility_help.rb +40 -5
- data/lib/rubocop/cop/naming/accessor_method_name.rb +4 -2
- data/lib/rubocop/cop/naming/ascii_identifiers.rb +2 -2
- data/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +1 -1
- data/lib/rubocop/cop/naming/block_forwarding.rb +8 -4
- data/lib/rubocop/cop/naming/block_parameter_name.rb +2 -2
- data/lib/rubocop/cop/naming/class_and_module_camel_case.rb +4 -2
- data/lib/rubocop/cop/naming/constant_name.rb +4 -4
- data/lib/rubocop/cop/naming/file_name.rb +2 -2
- data/lib/rubocop/cop/naming/heredoc_delimiter_case.rb +2 -2
- data/lib/rubocop/cop/naming/heredoc_delimiter_naming.rb +1 -1
- data/lib/rubocop/cop/naming/inclusive_language.rb +31 -8
- data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +23 -8
- data/lib/rubocop/cop/naming/method_name.rb +9 -9
- data/lib/rubocop/cop/naming/method_parameter_name.rb +1 -1
- data/lib/rubocop/cop/naming/predicate_name.rb +33 -4
- data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +13 -5
- data/lib/rubocop/cop/naming/variable_name.rb +10 -1
- data/lib/rubocop/cop/naming/variable_number.rb +28 -18
- data/lib/rubocop/cop/offense.rb +1 -1
- data/lib/rubocop/cop/registry.rb +73 -45
- data/lib/rubocop/cop/security/compound_hash.rb +106 -0
- data/lib/rubocop/cop/security/eval.rb +1 -1
- data/lib/rubocop/cop/security/json_load.rb +1 -1
- data/lib/rubocop/cop/security/marshal_load.rb +1 -1
- data/lib/rubocop/cop/security/open.rb +1 -1
- data/lib/rubocop/cop/security/yaml_load.rb +2 -2
- data/lib/rubocop/cop/style/access_modifier_declarations.rb +92 -3
- data/lib/rubocop/cop/style/accessor_grouping.rb +49 -23
- data/lib/rubocop/cop/style/alias.rb +13 -5
- data/lib/rubocop/cop/style/and_or.rb +12 -12
- data/lib/rubocop/cop/style/arguments_forwarding.rb +7 -6
- data/lib/rubocop/cop/style/array_coercion.rb +1 -1
- data/lib/rubocop/cop/style/array_intersect.rb +111 -0
- data/lib/rubocop/cop/style/array_join.rb +1 -1
- data/lib/rubocop/cop/style/ascii_comments.rb +2 -2
- data/lib/rubocop/cop/style/attr.rb +12 -2
- data/lib/rubocop/cop/style/auto_resource_cleanup.rb +1 -1
- data/lib/rubocop/cop/style/bare_percent_literals.rb +1 -1
- data/lib/rubocop/cop/style/bisected_attr_accessor/macro.rb +1 -1
- data/lib/rubocop/cop/style/bisected_attr_accessor.rb +2 -2
- data/lib/rubocop/cop/style/block_comments.rb +3 -3
- data/lib/rubocop/cop/style/block_delimiters.rb +52 -11
- data/lib/rubocop/cop/style/case_equality.rb +41 -11
- data/lib/rubocop/cop/style/case_like_if.rb +22 -5
- data/lib/rubocop/cop/style/character_literal.rb +2 -2
- data/lib/rubocop/cop/style/class_and_module_children.rb +9 -16
- data/lib/rubocop/cop/style/class_check.rb +1 -1
- data/lib/rubocop/cop/style/class_equality_comparison.rb +95 -13
- data/lib/rubocop/cop/style/class_methods.rb +1 -1
- data/lib/rubocop/cop/style/class_methods_definitions.rb +3 -2
- data/lib/rubocop/cop/style/class_vars.rb +1 -1
- data/lib/rubocop/cop/style/collection_compact.rb +25 -9
- data/lib/rubocop/cop/style/collection_methods.rb +3 -1
- data/lib/rubocop/cop/style/colon_method_call.rb +2 -2
- data/lib/rubocop/cop/style/colon_method_definition.rb +1 -1
- data/lib/rubocop/cop/style/combinable_loops.rb +30 -8
- data/lib/rubocop/cop/style/command_literal.rb +2 -2
- data/lib/rubocop/cop/style/comment_annotation.rb +2 -2
- data/lib/rubocop/cop/style/commented_keyword.rb +5 -5
- data/lib/rubocop/cop/style/comparable_clamp.rb +125 -0
- data/lib/rubocop/cop/style/concat_array_literals.rb +94 -0
- data/lib/rubocop/cop/style/conditional_assignment.rb +10 -15
- data/lib/rubocop/cop/style/constant_visibility.rb +1 -1
- data/lib/rubocop/cop/style/copyright.rb +6 -3
- data/lib/rubocop/cop/style/data_inheritance.rb +75 -0
- data/lib/rubocop/cop/style/date_time.rb +2 -2
- data/lib/rubocop/cop/style/def_with_parentheses.rb +1 -1
- data/lib/rubocop/cop/style/dir.rb +4 -1
- data/lib/rubocop/cop/style/dir_empty.rb +60 -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 +2 -2
- data/lib/rubocop/cop/style/documentation.rb +23 -11
- data/lib/rubocop/cop/style/documentation_method.rb +11 -5
- data/lib/rubocop/cop/style/double_negation.rb +31 -3
- data/lib/rubocop/cop/style/each_for_simple_loop.rb +42 -7
- data/lib/rubocop/cop/style/each_with_object.rb +41 -10
- data/lib/rubocop/cop/style/empty_block_parameter.rb +3 -3
- data/lib/rubocop/cop/style/empty_case_condition.rb +2 -2
- data/lib/rubocop/cop/style/empty_else.rb +40 -3
- data/lib/rubocop/cop/style/empty_heredoc.rb +73 -0
- data/lib/rubocop/cop/style/empty_lambda_parameter.rb +3 -3
- data/lib/rubocop/cop/style/empty_literal.rb +2 -2
- data/lib/rubocop/cop/style/empty_method.rb +18 -3
- data/lib/rubocop/cop/style/encoding.rb +2 -2
- data/lib/rubocop/cop/style/end_block.rb +1 -1
- data/lib/rubocop/cop/style/endless_method.rb +2 -2
- data/lib/rubocop/cop/style/env_home.rb +56 -0
- data/lib/rubocop/cop/style/eval_with_location.rb +5 -5
- data/lib/rubocop/cop/style/even_odd.rb +1 -1
- data/lib/rubocop/cop/style/exact_regexp_match.rb +62 -0
- data/lib/rubocop/cop/style/expand_path_arguments.rb +1 -1
- data/lib/rubocop/cop/style/explicit_block_argument.rb +7 -3
- data/lib/rubocop/cop/style/exponential_notation.rb +1 -1
- data/lib/rubocop/cop/style/fetch_env_var.rb +132 -0
- data/lib/rubocop/cop/style/file_empty.rb +71 -0
- data/lib/rubocop/cop/style/file_read.rb +1 -1
- data/lib/rubocop/cop/style/file_write.rb +1 -1
- data/lib/rubocop/cop/style/float_division.rb +1 -1
- data/lib/rubocop/cop/style/for.rb +3 -1
- data/lib/rubocop/cop/style/format_string.rb +1 -1
- data/lib/rubocop/cop/style/format_string_token.rb +73 -23
- data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +7 -4
- data/lib/rubocop/cop/style/global_std_stream.rb +1 -1
- data/lib/rubocop/cop/style/global_vars.rb +1 -1
- data/lib/rubocop/cop/style/guard_clause.rb +161 -25
- data/lib/rubocop/cop/style/hash_as_last_array_item.rb +2 -1
- data/lib/rubocop/cop/style/hash_conversion.rb +1 -1
- data/lib/rubocop/cop/style/hash_each_methods.rb +49 -13
- data/lib/rubocop/cop/style/hash_except.rb +101 -10
- data/lib/rubocop/cop/style/hash_like_case.rb +4 -10
- data/lib/rubocop/cop/style/hash_syntax.rb +29 -5
- data/lib/rubocop/cop/style/hash_transform_keys.rb +6 -1
- data/lib/rubocop/cop/style/hash_transform_values.rb +4 -1
- data/lib/rubocop/cop/style/identical_conditional_branches.rb +19 -4
- data/lib/rubocop/cop/style/if_inside_else.rb +6 -0
- data/lib/rubocop/cop/style/if_unless_modifier.rb +117 -20
- data/lib/rubocop/cop/style/if_with_boolean_literal_branches.rb +31 -4
- data/lib/rubocop/cop/style/if_with_semicolon.rb +4 -4
- data/lib/rubocop/cop/style/implicit_runtime_error.rb +3 -3
- data/lib/rubocop/cop/style/in_pattern_then.rb +1 -1
- data/lib/rubocop/cop/style/infinite_loop.rb +2 -5
- data/lib/rubocop/cop/style/inline_comment.rb +1 -1
- data/lib/rubocop/cop/style/inverse_methods.rb +17 -13
- data/lib/rubocop/cop/style/invertible_unless_condition.rb +118 -0
- data/lib/rubocop/cop/style/ip_addresses.rb +1 -1
- data/lib/rubocop/cop/style/keyword_parameters_order.rb +2 -2
- data/lib/rubocop/cop/style/lambda.rb +1 -1
- data/lib/rubocop/cop/style/lambda_call.rb +1 -1
- data/lib/rubocop/cop/style/line_end_concatenation.rb +6 -3
- data/lib/rubocop/cop/style/magic_comment_format.rb +307 -0
- data/lib/rubocop/cop/style/map_compact_with_conditional_block.rb +136 -0
- data/lib/rubocop/cop/style/map_to_hash.rb +7 -4
- data/lib/rubocop/cop/style/map_to_set.rb +64 -0
- data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +42 -26
- data/lib/rubocop/cop/style/method_call_with_args_parentheses/require_parentheses.rb +6 -2
- data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +52 -45
- data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +22 -3
- data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +5 -2
- data/lib/rubocop/cop/style/method_def_parentheses.rb +12 -5
- data/lib/rubocop/cop/style/min_max.rb +4 -4
- data/lib/rubocop/cop/style/min_max_comparison.rb +83 -0
- data/lib/rubocop/cop/style/missing_else.rb +37 -25
- data/lib/rubocop/cop/style/missing_respond_to_missing.rb +1 -1
- data/lib/rubocop/cop/style/mixin_grouping.rb +6 -6
- data/lib/rubocop/cop/style/mixin_usage.rb +1 -1
- data/lib/rubocop/cop/style/module_function.rb +30 -8
- data/lib/rubocop/cop/style/multiline_block_chain.rb +4 -2
- data/lib/rubocop/cop/style/multiline_if_modifier.rb +2 -6
- data/lib/rubocop/cop/style/multiline_if_then.rb +1 -1
- data/lib/rubocop/cop/style/multiline_in_pattern_then.rb +3 -5
- data/lib/rubocop/cop/style/multiline_memoization.rb +3 -3
- data/lib/rubocop/cop/style/multiline_method_signature.rb +9 -6
- data/lib/rubocop/cop/style/multiline_ternary_operator.rb +52 -11
- data/lib/rubocop/cop/style/multiline_when_then.rb +2 -4
- data/lib/rubocop/cop/style/multiple_comparison.rb +1 -1
- data/lib/rubocop/cop/style/mutable_constant.rb +1 -1
- data/lib/rubocop/cop/style/negated_if_else_condition.rb +18 -11
- data/lib/rubocop/cop/style/nested_file_dirname.rb +1 -1
- data/lib/rubocop/cop/style/nested_modifier.rb +1 -1
- data/lib/rubocop/cop/style/nested_parenthesized_calls.rb +11 -2
- data/lib/rubocop/cop/style/nested_ternary_operator.rb +20 -8
- data/lib/rubocop/cop/style/next.rb +4 -6
- data/lib/rubocop/cop/style/nil_comparison.rb +1 -1
- data/lib/rubocop/cop/style/nil_lambda.rb +5 -5
- data/lib/rubocop/cop/style/non_nil_check.rb +1 -1
- data/lib/rubocop/cop/style/not.rb +2 -2
- data/lib/rubocop/cop/style/numbered_parameters.rb +1 -1
- data/lib/rubocop/cop/style/numbered_parameters_limit.rb +12 -4
- data/lib/rubocop/cop/style/numeric_literal_prefix.rb +1 -1
- data/lib/rubocop/cop/style/numeric_literals.rb +16 -1
- data/lib/rubocop/cop/style/numeric_predicate.rb +53 -11
- data/lib/rubocop/cop/style/object_then.rb +74 -0
- data/lib/rubocop/cop/style/one_line_conditional.rb +4 -7
- data/lib/rubocop/cop/style/open_struct_use.rb +1 -1
- data/lib/rubocop/cop/style/operator_method_call.rb +67 -0
- data/lib/rubocop/cop/style/option_hash.rb +1 -1
- data/lib/rubocop/cop/style/optional_arguments.rb +2 -2
- data/lib/rubocop/cop/style/optional_boolean_parameter.rb +2 -2
- data/lib/rubocop/cop/style/or_assignment.rb +1 -1
- data/lib/rubocop/cop/style/parallel_assignment.rb +29 -19
- data/lib/rubocop/cop/style/parentheses_around_condition.rb +1 -1
- data/lib/rubocop/cop/style/percent_literal_delimiters.rb +3 -4
- data/lib/rubocop/cop/style/percent_q_literals.rb +2 -2
- data/lib/rubocop/cop/style/perl_backrefs.rb +23 -2
- data/lib/rubocop/cop/style/preferred_hash_methods.rb +1 -1
- data/lib/rubocop/cop/style/proc.rb +5 -2
- data/lib/rubocop/cop/style/quoted_symbols.rb +2 -2
- data/lib/rubocop/cop/style/raise_args.rb +5 -2
- data/lib/rubocop/cop/style/random_with_offset.rb +1 -1
- data/lib/rubocop/cop/style/redundant_argument.rb +5 -2
- data/lib/rubocop/cop/style/redundant_assignment.rb +1 -1
- data/lib/rubocop/cop/style/redundant_begin.rb +20 -6
- data/lib/rubocop/cop/style/redundant_capital_w.rb +1 -1
- data/lib/rubocop/cop/style/redundant_condition.rb +148 -14
- data/lib/rubocop/cop/style/redundant_conditional.rb +1 -5
- data/lib/rubocop/cop/style/redundant_constant_base.rb +85 -0
- data/lib/rubocop/cop/style/redundant_double_splat_hash_braces.rb +45 -0
- data/lib/rubocop/cop/style/redundant_each.rb +116 -0
- data/lib/rubocop/cop/style/redundant_exception.rb +1 -1
- data/lib/rubocop/cop/style/redundant_fetch_block.rb +7 -5
- data/lib/rubocop/cop/style/redundant_file_extension_in_require.rb +1 -1
- data/lib/rubocop/cop/style/redundant_freeze.rb +1 -1
- data/lib/rubocop/cop/style/redundant_heredoc_delimiter_quotes.rb +58 -0
- data/lib/rubocop/cop/style/redundant_initialize.rb +41 -4
- data/lib/rubocop/cop/style/redundant_interpolation.rb +24 -3
- data/lib/rubocop/cop/style/redundant_line_continuation.rb +183 -0
- data/lib/rubocop/cop/style/redundant_parentheses.rb +23 -25
- data/lib/rubocop/cop/style/redundant_percent_q.rb +2 -2
- data/lib/rubocop/cop/style/redundant_regexp_character_class.rb +15 -4
- data/lib/rubocop/cop/style/redundant_regexp_escape.rb +23 -6
- data/lib/rubocop/cop/style/redundant_return.rb +9 -2
- data/lib/rubocop/cop/style/redundant_self.rb +3 -1
- data/lib/rubocop/cop/style/redundant_self_assignment.rb +3 -4
- data/lib/rubocop/cop/style/redundant_self_assignment_branch.rb +1 -1
- data/lib/rubocop/cop/style/redundant_sort.rb +25 -10
- data/lib/rubocop/cop/style/redundant_sort_by.rb +25 -9
- data/lib/rubocop/cop/style/redundant_string_escape.rb +183 -0
- data/lib/rubocop/cop/style/regexp_literal.rb +11 -2
- data/lib/rubocop/cop/style/require_order.rb +138 -0
- data/lib/rubocop/cop/style/rescue_modifier.rb +2 -2
- data/lib/rubocop/cop/style/rescue_standard_error.rb +15 -15
- data/lib/rubocop/cop/style/return_nil.rb +1 -1
- data/lib/rubocop/cop/style/safe_navigation.rb +46 -12
- data/lib/rubocop/cop/style/sample.rb +1 -1
- data/lib/rubocop/cop/style/select_by_regexp.rb +14 -6
- data/lib/rubocop/cop/style/self_assignment.rb +3 -3
- data/lib/rubocop/cop/style/semicolon.rb +64 -6
- data/lib/rubocop/cop/style/send.rb +1 -1
- data/lib/rubocop/cop/style/signal_exception.rb +9 -7
- data/lib/rubocop/cop/style/single_argument_dig.rb +5 -0
- data/lib/rubocop/cop/style/single_line_block_params.rb +2 -2
- data/lib/rubocop/cop/style/single_line_methods.rb +2 -2
- data/lib/rubocop/cop/style/slicing_with_range.rb +2 -2
- data/lib/rubocop/cop/style/sole_nested_conditional.rb +52 -24
- data/lib/rubocop/cop/style/special_global_vars.rb +66 -8
- data/lib/rubocop/cop/style/static_class.rb +33 -2
- data/lib/rubocop/cop/style/stderr_puts.rb +2 -2
- data/lib/rubocop/cop/style/string_chars.rb +1 -1
- data/lib/rubocop/cop/style/string_concatenation.rb +6 -7
- data/lib/rubocop/cop/style/string_hash_keys.rb +5 -2
- data/lib/rubocop/cop/style/string_literals.rb +1 -5
- data/lib/rubocop/cop/style/string_literals_in_interpolation.rb +1 -1
- data/lib/rubocop/cop/style/string_methods.rb +1 -1
- data/lib/rubocop/cop/style/strip.rb +1 -1
- data/lib/rubocop/cop/style/struct_inheritance.rb +5 -5
- data/lib/rubocop/cop/style/swap_values.rb +2 -2
- data/lib/rubocop/cop/style/symbol_array.rb +12 -7
- data/lib/rubocop/cop/style/symbol_literal.rb +1 -1
- data/lib/rubocop/cop/style/symbol_proc.rb +68 -12
- data/lib/rubocop/cop/style/ternary_parentheses.rb +2 -14
- data/lib/rubocop/cop/style/top_level_method_definition.rb +3 -1
- data/lib/rubocop/cop/style/trailing_body_on_class.rb +2 -1
- data/lib/rubocop/cop/style/trailing_body_on_method_definition.rb +1 -1
- data/lib/rubocop/cop/style/trailing_body_on_module.rb +1 -1
- data/lib/rubocop/cop/style/trailing_comma_in_arguments.rb +5 -5
- data/lib/rubocop/cop/style/trailing_comma_in_array_literal.rb +1 -1
- data/lib/rubocop/cop/style/trailing_comma_in_block_args.rb +2 -2
- data/lib/rubocop/cop/style/trailing_comma_in_hash_literal.rb +1 -1
- data/lib/rubocop/cop/style/trailing_method_end_statement.rb +1 -1
- data/lib/rubocop/cop/style/trailing_underscore_variable.rb +2 -2
- data/lib/rubocop/cop/style/trivial_accessors.rb +12 -10
- data/lib/rubocop/cop/style/unless_else.rb +1 -1
- data/lib/rubocop/cop/style/unless_logical_operators.rb +2 -1
- data/lib/rubocop/cop/style/unpack_first.rb +8 -5
- data/lib/rubocop/cop/style/variable_interpolation.rb +1 -1
- data/lib/rubocop/cop/style/when_then.rb +1 -1
- data/lib/rubocop/cop/style/word_array.rb +60 -6
- data/lib/rubocop/cop/style/yoda_condition.rb +14 -7
- data/lib/rubocop/cop/style/yoda_expression.rb +90 -0
- data/lib/rubocop/cop/style/zero_length_predicate.rb +41 -20
- data/lib/rubocop/cop/team.rb +65 -58
- data/lib/rubocop/cop/util.rb +44 -8
- data/lib/rubocop/cop/variable_force/assignment.rb +5 -1
- data/lib/rubocop/cop/variable_force/branch.rb +1 -1
- 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 +6 -4
- data/lib/rubocop/cop/variable_force.rb +18 -30
- data/lib/rubocop/cops_documentation_generator.rb +64 -17
- data/lib/rubocop/directive_comment.rb +4 -4
- data/lib/rubocop/ext/comment.rb +18 -0
- data/lib/rubocop/ext/processed_source.rb +2 -0
- data/lib/rubocop/ext/range.rb +15 -0
- data/lib/rubocop/ext/regexp_node.rb +1 -1
- data/lib/rubocop/ext/regexp_parser.rb +1 -1
- data/lib/rubocop/feature_loader.rb +94 -0
- data/lib/rubocop/file_patterns.rb +43 -0
- data/lib/rubocop/formatter/clang_style_formatter.rb +1 -1
- data/lib/rubocop/formatter/disabled_config_formatter.rb +36 -16
- data/lib/rubocop/formatter/formatter_set.rb +20 -18
- data/lib/rubocop/formatter/git_hub_actions_formatter.rb +15 -2
- data/lib/rubocop/formatter/html_formatter.rb +6 -14
- data/lib/rubocop/formatter/junit_formatter.rb +4 -1
- data/lib/rubocop/formatter/markdown_formatter.rb +78 -0
- data/lib/rubocop/formatter/offense_count_formatter.rb +10 -5
- data/lib/rubocop/formatter/simple_text_formatter.rb +9 -8
- data/lib/rubocop/formatter/tap_formatter.rb +1 -1
- data/lib/rubocop/formatter/worst_offenders_formatter.rb +6 -3
- data/lib/rubocop/formatter.rb +34 -0
- data/lib/rubocop/magic_comment.rb +31 -5
- data/lib/rubocop/options.rb +154 -49
- data/lib/rubocop/path_util.rb +50 -22
- data/lib/rubocop/rake_task.rb +34 -9
- data/lib/rubocop/result_cache.rb +28 -25
- data/lib/rubocop/rspec/cop_helper.rb +27 -4
- data/lib/rubocop/rspec/expect_offense.rb +9 -7
- data/lib/rubocop/rspec/parallel_formatter.rb +1 -1
- data/lib/rubocop/rspec/shared_contexts.rb +48 -11
- data/lib/rubocop/rspec/support.rb +17 -2
- data/lib/rubocop/runner.rb +106 -25
- data/lib/rubocop/server/cache.rb +155 -0
- data/lib/rubocop/server/cli.rb +147 -0
- data/lib/rubocop/server/client_command/base.rb +44 -0
- data/lib/rubocop/server/client_command/exec.rb +64 -0
- data/lib/rubocop/server/client_command/restart.rb +25 -0
- data/lib/rubocop/server/client_command/start.rb +48 -0
- data/lib/rubocop/server/client_command/status.rb +28 -0
- data/lib/rubocop/server/client_command/stop.rb +31 -0
- data/lib/rubocop/server/client_command.rb +26 -0
- data/lib/rubocop/server/core.rb +111 -0
- data/lib/rubocop/server/errors.rb +23 -0
- data/lib/rubocop/server/helper.rb +34 -0
- data/lib/rubocop/server/server_command/base.rb +50 -0
- data/lib/rubocop/server/server_command/exec.rb +34 -0
- data/lib/rubocop/server/server_command/stop.rb +24 -0
- data/lib/rubocop/server/server_command.rb +21 -0
- data/lib/rubocop/server/socket_reader.rb +69 -0
- data/lib/rubocop/server.rb +53 -0
- data/lib/rubocop/string_interpreter.rb +4 -4
- data/lib/rubocop/target_finder.rb +1 -1
- data/lib/rubocop/target_ruby.rb +16 -8
- data/lib/rubocop/version.rb +24 -11
- data/lib/rubocop.rb +59 -35
- metadata +114 -37
- data/lib/rubocop/cop/gemspec/date_assignment.rb +0 -49
- data/lib/rubocop/cop/mixin/ignored_methods.rb +0 -52
- data/lib/rubocop/cop/mixin/ignored_pattern.rb +0 -29
data/config/default.yml
CHANGED
@@ -140,7 +140,7 @@ AllCops:
|
|
140
140
|
# or gems.locked file. (Although the Ruby version is specified in the Gemfile
|
141
141
|
# or gems.rb file, RuboCop reads the final value from the lock file.) If the
|
142
142
|
# Ruby version is still unresolved, RuboCop will use the oldest officially
|
143
|
-
# supported Ruby version (currently Ruby 2.
|
143
|
+
# supported Ruby version (currently Ruby 2.7).
|
144
144
|
TargetRubyVersion: ~
|
145
145
|
# Determines if a notification for extension libraries should be shown when
|
146
146
|
# rubocop is run. Keys are the name of the extension, and values are an array
|
@@ -153,13 +153,19 @@ AllCops:
|
|
153
153
|
rubocop-sequel: [sequel]
|
154
154
|
rubocop-rake: [rake]
|
155
155
|
rubocop-graphql: [graphql]
|
156
|
+
rubocop-capybara: [capybara]
|
157
|
+
rubocop-factory_bot: [factory_bot, factory_bot_rails]
|
158
|
+
# Enable/Disable checking the methods extended by Active Support.
|
159
|
+
ActiveSupportExtensionsEnabled: false
|
156
160
|
|
157
161
|
#################### Bundler ###############################
|
158
162
|
|
159
163
|
Bundler/DuplicatedGem:
|
160
164
|
Description: 'Checks for duplicate gem entries in Gemfile.'
|
161
165
|
Enabled: true
|
166
|
+
Severity: warning
|
162
167
|
VersionAdded: '0.46'
|
168
|
+
VersionChanged: '1.40'
|
163
169
|
Include:
|
164
170
|
- '**/*.gemfile'
|
165
171
|
- '**/Gemfile'
|
@@ -211,7 +217,9 @@ Bundler/InsecureProtocolSource:
|
|
211
217
|
because HTTP requests are insecure. Please change your source to
|
212
218
|
'https://rubygems.org' if possible, or 'http://rubygems.org' if not.
|
213
219
|
Enabled: true
|
220
|
+
Severity: warning
|
214
221
|
VersionAdded: '0.50'
|
222
|
+
VersionChanged: '1.40'
|
215
223
|
AllowHttpProtocol: true
|
216
224
|
Include:
|
217
225
|
- '**/*.gemfile'
|
@@ -235,17 +243,48 @@ Bundler/OrderedGems:
|
|
235
243
|
|
236
244
|
#################### Gemspec ###############################
|
237
245
|
|
238
|
-
Gemspec/
|
239
|
-
Description: '
|
246
|
+
Gemspec/DependencyVersion:
|
247
|
+
Description: 'Requires or forbids specifying gem dependency versions.'
|
248
|
+
Enabled: false
|
249
|
+
VersionAdded: '1.29'
|
250
|
+
EnforcedStyle: 'required'
|
251
|
+
SupportedStyles:
|
252
|
+
- 'required'
|
253
|
+
- 'forbidden'
|
254
|
+
Include:
|
255
|
+
- '**/*.gemspec'
|
256
|
+
AllowedGems: []
|
257
|
+
|
258
|
+
Gemspec/DeprecatedAttributeAssignment:
|
259
|
+
Description: Checks that deprecated attribute assignments are not set in a gemspec file.
|
240
260
|
Enabled: pending
|
241
|
-
|
261
|
+
Severity: warning
|
262
|
+
VersionAdded: '1.30'
|
263
|
+
VersionChanged: '1.40'
|
242
264
|
Include:
|
243
265
|
- '**/*.gemspec'
|
244
266
|
|
267
|
+
Gemspec/DevelopmentDependencies:
|
268
|
+
Description: Checks that development dependencies are specified in Gemfile rather than gemspec.
|
269
|
+
Enabled: pending
|
270
|
+
VersionAdded: '1.44'
|
271
|
+
EnforcedStyle: Gemfile
|
272
|
+
SupportedStyles:
|
273
|
+
- Gemfile
|
274
|
+
- gems.rb
|
275
|
+
- gemspec
|
276
|
+
AllowedGems: []
|
277
|
+
Include:
|
278
|
+
- '**/*.gemspec'
|
279
|
+
- '**/Gemfile'
|
280
|
+
- '**/gems.rb'
|
281
|
+
|
245
282
|
Gemspec/DuplicatedAssignment:
|
246
283
|
Description: 'An attribute assignment method calls should be listed only once in a gemspec.'
|
247
284
|
Enabled: true
|
285
|
+
Severity: warning
|
248
286
|
VersionAdded: '0.52'
|
287
|
+
VersionChanged: '1.40'
|
249
288
|
Include:
|
250
289
|
- '**/*.gemspec'
|
251
290
|
|
@@ -264,7 +303,9 @@ Gemspec/OrderedDependencies:
|
|
264
303
|
Gemspec/RequireMFA:
|
265
304
|
Description: 'Checks that the gemspec has metadata to require Multi-Factor Authentication from RubyGems.'
|
266
305
|
Enabled: pending
|
306
|
+
Severity: warning
|
267
307
|
VersionAdded: '1.23'
|
308
|
+
VersionChanged: '1.40'
|
268
309
|
Reference:
|
269
310
|
- https://guides.rubygems.org/mfa-requirement-opt-in/
|
270
311
|
Include:
|
@@ -273,8 +314,9 @@ Gemspec/RequireMFA:
|
|
273
314
|
Gemspec/RequiredRubyVersion:
|
274
315
|
Description: 'Checks that `required_ruby_version` of gemspec is specified and equal to `TargetRubyVersion` of .rubocop.yml.'
|
275
316
|
Enabled: true
|
317
|
+
Severity: warning
|
276
318
|
VersionAdded: '0.52'
|
277
|
-
VersionChanged: '1.
|
319
|
+
VersionChanged: '1.40'
|
278
320
|
Include:
|
279
321
|
- '**/*.gemspec'
|
280
322
|
|
@@ -282,7 +324,9 @@ Gemspec/RubyVersionGlobalsUsage:
|
|
282
324
|
Description: Checks usage of RUBY_VERSION in gemspec.
|
283
325
|
StyleGuide: '#no-ruby-version-in-the-gemspec'
|
284
326
|
Enabled: true
|
327
|
+
Severity: warning
|
285
328
|
VersionAdded: '0.72'
|
329
|
+
VersionChanged: '1.40'
|
286
330
|
Include:
|
287
331
|
- '**/*.gemspec'
|
288
332
|
|
@@ -365,7 +409,7 @@ Layout/AssignmentIndentation:
|
|
365
409
|
right-hand-side of a multi-line assignment.
|
366
410
|
Enabled: true
|
367
411
|
VersionAdded: '0.49'
|
368
|
-
VersionChanged: '
|
412
|
+
VersionChanged: '1.45'
|
369
413
|
# By default the indentation width from `Layout/IndentationWidth` is used,
|
370
414
|
# but it can be overridden by setting this parameter.
|
371
415
|
IndentationWidth: ~
|
@@ -734,6 +778,7 @@ Layout/FirstArrayElementLineBreak:
|
|
734
778
|
multi-line array.
|
735
779
|
Enabled: false
|
736
780
|
VersionAdded: '0.49'
|
781
|
+
AllowMultilineFinalElement: false
|
737
782
|
|
738
783
|
Layout/FirstHashElementIndentation:
|
739
784
|
Description: 'Checks the indentation of the first key in a hash literal.'
|
@@ -766,6 +811,7 @@ Layout/FirstHashElementLineBreak:
|
|
766
811
|
multi-line hash.
|
767
812
|
Enabled: false
|
768
813
|
VersionAdded: '0.49'
|
814
|
+
AllowMultilineFinalElement: false
|
769
815
|
|
770
816
|
Layout/FirstMethodArgumentLineBreak:
|
771
817
|
Description: >-
|
@@ -773,6 +819,7 @@ Layout/FirstMethodArgumentLineBreak:
|
|
773
819
|
multi-line method call.
|
774
820
|
Enabled: false
|
775
821
|
VersionAdded: '0.49'
|
822
|
+
AllowMultilineFinalElement: false
|
776
823
|
|
777
824
|
Layout/FirstMethodParameterLineBreak:
|
778
825
|
Description: >-
|
@@ -780,6 +827,7 @@ Layout/FirstMethodParameterLineBreak:
|
|
780
827
|
multi-line method parameter definition.
|
781
828
|
Enabled: false
|
782
829
|
VersionAdded: '0.49'
|
830
|
+
AllowMultilineFinalElement: false
|
783
831
|
|
784
832
|
Layout/FirstParameterIndentation:
|
785
833
|
Description: >-
|
@@ -883,7 +931,7 @@ Layout/HeredocArgumentClosingParenthesis:
|
|
883
931
|
VersionAdded: '0.68'
|
884
932
|
|
885
933
|
Layout/HeredocIndentation:
|
886
|
-
Description: '
|
934
|
+
Description: 'Checks the indentation of the here document bodies.'
|
887
935
|
StyleGuide: '#squiggly-heredocs'
|
888
936
|
Enabled: true
|
889
937
|
VersionAdded: '0.49'
|
@@ -916,7 +964,7 @@ Layout/IndentationStyle:
|
|
916
964
|
VersionChanged: '0.82'
|
917
965
|
# By default the indentation width from `Layout/IndentationWidth` is used,
|
918
966
|
# but it can be overridden by setting this parameter.
|
919
|
-
# It is used during
|
967
|
+
# It is used during autocorrection to determine how many spaces should
|
920
968
|
# replace each tab.
|
921
969
|
IndentationWidth: ~
|
922
970
|
EnforcedStyle: spaces
|
@@ -931,7 +979,7 @@ Layout/IndentationWidth:
|
|
931
979
|
VersionAdded: '0.49'
|
932
980
|
# Number of spaces for each indentation level.
|
933
981
|
Width: 2
|
934
|
-
|
982
|
+
AllowedPatterns: []
|
935
983
|
|
936
984
|
Layout/InitialIndentation:
|
937
985
|
Description: >-
|
@@ -954,6 +1002,27 @@ Layout/LeadingEmptyLines:
|
|
954
1002
|
VersionAdded: '0.57'
|
955
1003
|
VersionChanged: '0.77'
|
956
1004
|
|
1005
|
+
Layout/LineContinuationLeadingSpace:
|
1006
|
+
Description: >-
|
1007
|
+
Use trailing spaces instead of leading spaces in strings
|
1008
|
+
broken over multiple lines (by a backslash).
|
1009
|
+
Enabled: pending
|
1010
|
+
VersionAdded: '1.31'
|
1011
|
+
VersionChanged: '1.45'
|
1012
|
+
EnforcedStyle: trailing
|
1013
|
+
SupportedStyles:
|
1014
|
+
- leading
|
1015
|
+
- trailing
|
1016
|
+
|
1017
|
+
Layout/LineContinuationSpacing:
|
1018
|
+
Description: 'Checks the spacing in front of backslash in line continuations.'
|
1019
|
+
Enabled: pending
|
1020
|
+
VersionAdded: '1.31'
|
1021
|
+
EnforcedStyle: space
|
1022
|
+
SupportedStyles:
|
1023
|
+
- space
|
1024
|
+
- no_space
|
1025
|
+
|
957
1026
|
Layout/LineEndStringConcatenationIndentation:
|
958
1027
|
Description: >-
|
959
1028
|
Checks the indentation of the next line after a line that
|
@@ -985,10 +1054,10 @@ Layout/LineLength:
|
|
985
1054
|
# The IgnoreCopDirectives option causes the LineLength rule to ignore cop
|
986
1055
|
# directives like '# rubocop: enable ...' when calculating a line's length.
|
987
1056
|
IgnoreCopDirectives: true
|
988
|
-
# The
|
1057
|
+
# The AllowedPatterns option is a list of !ruby/regexp and/or string
|
989
1058
|
# elements. Strings will be converted to Regexp objects. A line that matches
|
990
1059
|
# any regular expression listed in this option will be ignored by LineLength.
|
991
|
-
|
1060
|
+
AllowedPatterns: []
|
992
1061
|
|
993
1062
|
Layout/MultilineArrayBraceLayout:
|
994
1063
|
Description: >-
|
@@ -1012,6 +1081,7 @@ Layout/MultilineArrayLineBreaks:
|
|
1012
1081
|
starts on a separate line.
|
1013
1082
|
Enabled: false
|
1014
1083
|
VersionAdded: '0.67'
|
1084
|
+
AllowMultilineFinalElement: false
|
1015
1085
|
|
1016
1086
|
Layout/MultilineAssignmentLayout:
|
1017
1087
|
Description: 'Check for a newline after the assignment operator in multi-line assignments.'
|
@@ -1062,6 +1132,7 @@ Layout/MultilineHashKeyLineBreaks:
|
|
1062
1132
|
starts on a separate line.
|
1063
1133
|
Enabled: false
|
1064
1134
|
VersionAdded: '0.67'
|
1135
|
+
AllowMultilineFinalElement: false
|
1065
1136
|
|
1066
1137
|
Layout/MultilineMethodArgumentLineBreaks:
|
1067
1138
|
Description: >-
|
@@ -1069,6 +1140,7 @@ Layout/MultilineMethodArgumentLineBreaks:
|
|
1069
1140
|
starts on a separate line.
|
1070
1141
|
Enabled: false
|
1071
1142
|
VersionAdded: '0.67'
|
1143
|
+
AllowMultilineFinalElement: false
|
1072
1144
|
|
1073
1145
|
Layout/MultilineMethodCallBraceLayout:
|
1074
1146
|
Description: >-
|
@@ -1117,6 +1189,14 @@ Layout/MultilineMethodDefinitionBraceLayout:
|
|
1117
1189
|
- new_line
|
1118
1190
|
- same_line
|
1119
1191
|
|
1192
|
+
Layout/MultilineMethodParameterLineBreaks:
|
1193
|
+
Description: >-
|
1194
|
+
Checks that each parameter in a multi-line method definition
|
1195
|
+
starts on a separate line.
|
1196
|
+
Enabled: false
|
1197
|
+
VersionAdded: '1.32'
|
1198
|
+
AllowMultilineFinalElement: false
|
1199
|
+
|
1120
1200
|
Layout/MultilineOperationIndentation:
|
1121
1201
|
Description: >-
|
1122
1202
|
Checks indentation of binary operations that span more than
|
@@ -1454,7 +1534,8 @@ Lint/AmbiguousBlockAssociation:
|
|
1454
1534
|
Enabled: true
|
1455
1535
|
VersionAdded: '0.48'
|
1456
1536
|
VersionChanged: '1.13'
|
1457
|
-
|
1537
|
+
AllowedMethods: []
|
1538
|
+
AllowedPatterns: []
|
1458
1539
|
|
1459
1540
|
Lint/AmbiguousOperator:
|
1460
1541
|
Description: >-
|
@@ -1491,7 +1572,9 @@ Lint/AssignmentInCondition:
|
|
1491
1572
|
Description: "Don't use assignment in conditions."
|
1492
1573
|
StyleGuide: '#safe-assignment-in-condition'
|
1493
1574
|
Enabled: true
|
1575
|
+
SafeAutoCorrect: false
|
1494
1576
|
VersionAdded: '0.9'
|
1577
|
+
VersionChanged: '1.45'
|
1495
1578
|
AllowSafeAssignment: true
|
1496
1579
|
|
1497
1580
|
Lint/BigDecimalNew:
|
@@ -1500,7 +1583,7 @@ Lint/BigDecimalNew:
|
|
1500
1583
|
VersionAdded: '0.53'
|
1501
1584
|
|
1502
1585
|
Lint/BinaryOperatorWithIdenticalOperands:
|
1503
|
-
Description: '
|
1586
|
+
Description: 'Checks for places where binary operator has identical operands.'
|
1504
1587
|
Enabled: true
|
1505
1588
|
Safe: false
|
1506
1589
|
VersionAdded: '0.89'
|
@@ -1529,6 +1612,11 @@ Lint/ConstantDefinitionInBlock:
|
|
1529
1612
|
AllowedMethods:
|
1530
1613
|
- enums
|
1531
1614
|
|
1615
|
+
Lint/ConstantOverwrittenInRescue:
|
1616
|
+
Description: 'Checks for overwriting an exception with an exception result by use `rescue =>`.'
|
1617
|
+
Enabled: pending
|
1618
|
+
VersionAdded: '1.31'
|
1619
|
+
|
1532
1620
|
Lint/ConstantResolution:
|
1533
1621
|
Description: 'Check that constants are fully qualified with `::`.'
|
1534
1622
|
Enabled: false
|
@@ -1542,13 +1630,13 @@ Lint/Debugger:
|
|
1542
1630
|
Description: 'Check for debugger calls.'
|
1543
1631
|
Enabled: true
|
1544
1632
|
VersionAdded: '0.14'
|
1545
|
-
VersionChanged: '1.
|
1546
|
-
DebuggerReceivers: [] # deprecated
|
1633
|
+
VersionChanged: '1.46'
|
1547
1634
|
DebuggerMethods:
|
1548
1635
|
# Groups are available so that a specific group can be disabled in
|
1549
1636
|
# a user's configuration, but are otherwise not significant.
|
1550
1637
|
Kernel:
|
1551
1638
|
- binding.irb
|
1639
|
+
- Kernel.binding.irb
|
1552
1640
|
Byebug:
|
1553
1641
|
- byebug
|
1554
1642
|
- remote_byebug
|
@@ -1566,7 +1654,11 @@ Lint/Debugger:
|
|
1566
1654
|
- binding.pry
|
1567
1655
|
- binding.remote_pry
|
1568
1656
|
- binding.pry_remote
|
1657
|
+
- Kernel.binding.pry
|
1658
|
+
- Kernel.binding.remote_pry
|
1659
|
+
- Kernel.binding.pry_remote
|
1569
1660
|
- Pry.rescue
|
1661
|
+
- pry
|
1570
1662
|
Rails:
|
1571
1663
|
- debugger
|
1572
1664
|
- Kernel.debugger
|
@@ -1584,7 +1676,7 @@ Lint/DeprecatedConstants:
|
|
1584
1676
|
Description: 'Checks for deprecated constants.'
|
1585
1677
|
Enabled: pending
|
1586
1678
|
VersionAdded: '1.8'
|
1587
|
-
VersionChanged: '1.
|
1679
|
+
VersionChanged: '1.40'
|
1588
1680
|
# You can configure deprecated constants.
|
1589
1681
|
# If there is an alternative method, you can set alternative value as `Alternative`.
|
1590
1682
|
# And you can set the deprecated version as `DeprecatedVersion`.
|
@@ -1611,6 +1703,12 @@ Lint/DeprecatedConstants:
|
|
1611
1703
|
'Random::DEFAULT':
|
1612
1704
|
Alternative: 'Random.new'
|
1613
1705
|
DeprecatedVersion: '3.0'
|
1706
|
+
'Struct::Group':
|
1707
|
+
Alternative: 'Etc::Group'
|
1708
|
+
DeprecatedVersion: '3.0'
|
1709
|
+
'Struct::Passwd':
|
1710
|
+
Alternative: 'Etc::Passwd'
|
1711
|
+
DeprecatedVersion: '3.0'
|
1614
1712
|
|
1615
1713
|
Lint/DeprecatedOpenSSLConstant:
|
1616
1714
|
Description: "Don't use algorithm constants for `OpenSSL::Cipher` and `OpenSSL::Digest`."
|
@@ -1648,6 +1746,16 @@ Lint/DuplicateHashKey:
|
|
1648
1746
|
VersionAdded: '0.34'
|
1649
1747
|
VersionChanged: '0.77'
|
1650
1748
|
|
1749
|
+
Lint/DuplicateMagicComment:
|
1750
|
+
Description: 'Check for duplicated magic comments.'
|
1751
|
+
Enabled: pending
|
1752
|
+
VersionAdded: '1.37'
|
1753
|
+
|
1754
|
+
Lint/DuplicateMatchPattern:
|
1755
|
+
Description: 'Do not repeat patterns in `in` keywords.'
|
1756
|
+
Enabled: pending
|
1757
|
+
VersionAdded: '1.50'
|
1758
|
+
|
1651
1759
|
Lint/DuplicateMethods:
|
1652
1760
|
Description: 'Check for duplicate method definitions.'
|
1653
1761
|
Enabled: true
|
@@ -1661,7 +1769,9 @@ Lint/DuplicateRegexpCharacterClassElement:
|
|
1661
1769
|
Lint/DuplicateRequire:
|
1662
1770
|
Description: 'Check for duplicate `require`s and `require_relative`s.'
|
1663
1771
|
Enabled: true
|
1772
|
+
SafeAutoCorrect: false
|
1664
1773
|
VersionAdded: '0.90'
|
1774
|
+
VersionChanged: '1.28'
|
1665
1775
|
|
1666
1776
|
Lint/DuplicateRescueException:
|
1667
1777
|
Description: 'Checks that there are no repeated exceptions used in `rescue` expressions.'
|
@@ -1680,7 +1790,7 @@ Lint/ElseLayout:
|
|
1680
1790
|
VersionChanged: '1.2'
|
1681
1791
|
|
1682
1792
|
Lint/EmptyBlock:
|
1683
|
-
Description: '
|
1793
|
+
Description: 'Checks for blocks without a body.'
|
1684
1794
|
Enabled: pending
|
1685
1795
|
VersionAdded: '1.1'
|
1686
1796
|
VersionChanged: '1.15'
|
@@ -1694,10 +1804,12 @@ Lint/EmptyClass:
|
|
1694
1804
|
AllowComments: false
|
1695
1805
|
|
1696
1806
|
Lint/EmptyConditionalBody:
|
1697
|
-
Description: '
|
1807
|
+
Description: 'Checks for the presence of `if`, `elsif` and `unless` branches without a body.'
|
1698
1808
|
Enabled: true
|
1809
|
+
SafeAutoCorrect: false
|
1699
1810
|
AllowComments: true
|
1700
1811
|
VersionAdded: '0.89'
|
1812
|
+
VersionChanged: '1.34'
|
1701
1813
|
|
1702
1814
|
Lint/EmptyEnsure:
|
1703
1815
|
Description: 'Checks for empty ensure block.'
|
@@ -1826,11 +1938,11 @@ Lint/InheritException:
|
|
1826
1938
|
- runtime_error
|
1827
1939
|
|
1828
1940
|
Lint/InterpolationCheck:
|
1829
|
-
Description: '
|
1941
|
+
Description: 'Checks for interpolation in a single quoted string.'
|
1830
1942
|
Enabled: true
|
1831
|
-
|
1943
|
+
SafeAutoCorrect: false
|
1832
1944
|
VersionAdded: '0.50'
|
1833
|
-
VersionChanged: '
|
1945
|
+
VersionChanged: '1.40'
|
1834
1946
|
|
1835
1947
|
Lint/LambdaWithoutLiteralBlock:
|
1836
1948
|
Description: 'Checks uses of lambda without a literal block.'
|
@@ -1873,7 +1985,7 @@ Lint/MissingCopEnableDirective:
|
|
1873
1985
|
|
1874
1986
|
Lint/MissingSuper:
|
1875
1987
|
Description: >-
|
1876
|
-
|
1988
|
+
Checks for the presence of constructors and lifecycle callbacks
|
1877
1989
|
without calls to `super`.
|
1878
1990
|
Enabled: true
|
1879
1991
|
VersionAdded: '0.89'
|
@@ -1894,6 +2006,8 @@ Lint/NestedMethodDefinition:
|
|
1894
2006
|
Description: 'Do not use nested method definitions.'
|
1895
2007
|
StyleGuide: '#no-nested-methods'
|
1896
2008
|
Enabled: true
|
2009
|
+
AllowedMethods: []
|
2010
|
+
AllowedPatterns: []
|
1897
2011
|
VersionAdded: '0.32'
|
1898
2012
|
|
1899
2013
|
Lint/NestedPercentLiteral:
|
@@ -1913,6 +2027,13 @@ Lint/NoReturnInBeginEndBlocks:
|
|
1913
2027
|
Enabled: pending
|
1914
2028
|
VersionAdded: '1.2'
|
1915
2029
|
|
2030
|
+
Lint/NonAtomicFileOperation:
|
2031
|
+
Description: Checks for non-atomic file operations.
|
2032
|
+
StyleGuide: '#atomic-file-operations'
|
2033
|
+
Enabled: pending
|
2034
|
+
VersionAdded: '1.31'
|
2035
|
+
SafeAutoCorrect: false
|
2036
|
+
|
1916
2037
|
Lint/NonDeterministicRequireOrder:
|
1917
2038
|
Description: 'Always sort arrays returned by Dir.glob when requiring files.'
|
1918
2039
|
Enabled: true
|
@@ -1930,7 +2051,8 @@ Lint/NumberConversion:
|
|
1930
2051
|
VersionAdded: '0.53'
|
1931
2052
|
VersionChanged: '1.1'
|
1932
2053
|
SafeAutoCorrect: false
|
1933
|
-
|
2054
|
+
AllowedMethods: []
|
2055
|
+
AllowedPatterns: []
|
1934
2056
|
IgnoredClasses:
|
1935
2057
|
- Time
|
1936
2058
|
- DateTime
|
@@ -1949,7 +2071,9 @@ Lint/OrAssignmentToConstant:
|
|
1949
2071
|
Lint/OrderedMagicComments:
|
1950
2072
|
Description: 'Checks the proper ordering of magic comments and whether a magic comment is not placed before a shebang.'
|
1951
2073
|
Enabled: true
|
2074
|
+
SafeAutoCorrect: false
|
1952
2075
|
VersionAdded: '0.53'
|
2076
|
+
VersionChanged: '1.37'
|
1953
2077
|
|
1954
2078
|
Lint/OutOfRangeRegexpRef:
|
1955
2079
|
Description: 'Checks for out of range reference for Regexp because it always returns nil.'
|
@@ -2079,6 +2203,11 @@ Lint/RequireParentheses:
|
|
2079
2203
|
Enabled: true
|
2080
2204
|
VersionAdded: '0.18'
|
2081
2205
|
|
2206
|
+
Lint/RequireRangeParentheses:
|
2207
|
+
Description: 'Checks that a range literal is enclosed in parentheses when the end of the range is at a line break.'
|
2208
|
+
Enabled: pending
|
2209
|
+
VersionAdded: '1.32'
|
2210
|
+
|
2082
2211
|
Lint/RequireRelativeSelfPath:
|
2083
2212
|
Description: 'Checks for uses a file requiring itself with `require_relative`.'
|
2084
2213
|
Enabled: pending
|
@@ -2202,7 +2331,7 @@ Lint/Syntax:
|
|
2202
2331
|
VersionAdded: '0.9'
|
2203
2332
|
|
2204
2333
|
Lint/ToEnumArguments:
|
2205
|
-
Description: '
|
2334
|
+
Description: 'Ensures that `to_enum`/`enum_for`, called for the current method, has correct arguments.'
|
2206
2335
|
Enabled: pending
|
2207
2336
|
VersionAdded: '1.1'
|
2208
2337
|
|
@@ -2212,12 +2341,15 @@ Lint/ToJSON:
|
|
2212
2341
|
VersionAdded: '0.66'
|
2213
2342
|
|
2214
2343
|
Lint/TopLevelReturnWithArgument:
|
2215
|
-
Description: '
|
2344
|
+
Description: 'Detects top level return statements with argument.'
|
2216
2345
|
Enabled: true
|
2217
2346
|
VersionAdded: '0.89'
|
2347
|
+
# These codes are `eval`-ed in method and their return values may be used.
|
2348
|
+
Exclude:
|
2349
|
+
- '**/*.jb'
|
2218
2350
|
|
2219
2351
|
Lint/TrailingCommaInAttributeDeclaration:
|
2220
|
-
Description: '
|
2352
|
+
Description: 'Checks for trailing commas in attribute declarations.'
|
2221
2353
|
Enabled: true
|
2222
2354
|
VersionAdded: '0.90'
|
2223
2355
|
|
@@ -2266,11 +2398,11 @@ Lint/UnreachableCode:
|
|
2266
2398
|
VersionAdded: '0.9'
|
2267
2399
|
|
2268
2400
|
Lint/UnreachableLoop:
|
2269
|
-
Description: '
|
2401
|
+
Description: 'Checks for loops that will have at most one iteration.'
|
2270
2402
|
Enabled: true
|
2271
2403
|
VersionAdded: '0.89'
|
2272
2404
|
VersionChanged: '1.7'
|
2273
|
-
|
2405
|
+
AllowedPatterns:
|
2274
2406
|
# RSpec uses `times` in its message expectations
|
2275
2407
|
# eg. `exactly(2).times`
|
2276
2408
|
- !ruby/regexp /(exactly|at_least|at_most)\(\d+\)\.times/
|
@@ -2323,11 +2455,14 @@ Lint/UselessAssignment:
|
|
2323
2455
|
StyleGuide: '#underscore-unused-vars'
|
2324
2456
|
Enabled: true
|
2325
2457
|
VersionAdded: '0.11'
|
2458
|
+
VersionChanged: '1.51'
|
2459
|
+
SafeAutoCorrect: false
|
2326
2460
|
|
2327
2461
|
Lint/UselessElseWithoutRescue:
|
2328
2462
|
Description: 'Checks for useless `else` in `begin..end` without `rescue`.'
|
2329
2463
|
Enabled: true
|
2330
2464
|
VersionAdded: '0.17'
|
2465
|
+
VersionChanged: '1.31'
|
2331
2466
|
|
2332
2467
|
Lint/UselessMethodDefinition:
|
2333
2468
|
Description: 'Checks for useless method definitions.'
|
@@ -2336,6 +2471,11 @@ Lint/UselessMethodDefinition:
|
|
2336
2471
|
VersionChanged: '0.91'
|
2337
2472
|
Safe: false
|
2338
2473
|
|
2474
|
+
Lint/UselessRescue:
|
2475
|
+
Description: 'Checks for useless `rescue`s.'
|
2476
|
+
Enabled: pending
|
2477
|
+
VersionAdded: '1.43'
|
2478
|
+
|
2339
2479
|
Lint/UselessRuby2Keywords:
|
2340
2480
|
Description: 'Finds unnecessary uses of `ruby2_keywords`.'
|
2341
2481
|
Enabled: pending
|
@@ -2375,7 +2515,8 @@ Metrics/AbcSize:
|
|
2375
2515
|
VersionChanged: '1.5'
|
2376
2516
|
# The ABC size is a calculated magnitude, so this number can be an Integer or
|
2377
2517
|
# a Float.
|
2378
|
-
|
2518
|
+
AllowedMethods: []
|
2519
|
+
AllowedPatterns: []
|
2379
2520
|
CountRepeatedAttributes: true
|
2380
2521
|
Max: 17
|
2381
2522
|
|
@@ -2387,11 +2528,11 @@ Metrics/BlockLength:
|
|
2387
2528
|
CountComments: false # count full line comments?
|
2388
2529
|
Max: 25
|
2389
2530
|
CountAsOne: []
|
2390
|
-
|
2391
|
-
IgnoredMethods:
|
2531
|
+
AllowedMethods:
|
2392
2532
|
# By default, exclude the `#refine` method, as it tends to have larger
|
2393
2533
|
# associated blocks.
|
2394
2534
|
- refine
|
2535
|
+
AllowedPatterns: []
|
2395
2536
|
Exclude:
|
2396
2537
|
- '**/*.gemspec'
|
2397
2538
|
|
@@ -2413,6 +2554,12 @@ Metrics/ClassLength:
|
|
2413
2554
|
Max: 100
|
2414
2555
|
CountAsOne: []
|
2415
2556
|
|
2557
|
+
Metrics/CollectionLiteralLength:
|
2558
|
+
Description: 'Checks for `Array` or `Hash` literals with many entries.'
|
2559
|
+
Enabled: pending
|
2560
|
+
VersionAdded: '1.47'
|
2561
|
+
LengthThreshold: 250
|
2562
|
+
|
2416
2563
|
# Avoid complex methods.
|
2417
2564
|
Metrics/CyclomaticComplexity:
|
2418
2565
|
Description: >-
|
@@ -2421,7 +2568,8 @@ Metrics/CyclomaticComplexity:
|
|
2421
2568
|
Enabled: true
|
2422
2569
|
VersionAdded: '0.25'
|
2423
2570
|
VersionChanged: '0.81'
|
2424
|
-
|
2571
|
+
AllowedMethods: []
|
2572
|
+
AllowedPatterns: []
|
2425
2573
|
Max: 7
|
2426
2574
|
|
2427
2575
|
Metrics/MethodLength:
|
@@ -2433,8 +2581,8 @@ Metrics/MethodLength:
|
|
2433
2581
|
CountComments: false # count full line comments?
|
2434
2582
|
Max: 10
|
2435
2583
|
CountAsOne: []
|
2436
|
-
|
2437
|
-
|
2584
|
+
AllowedMethods: []
|
2585
|
+
AllowedPatterns: []
|
2438
2586
|
|
2439
2587
|
Metrics/ModuleLength:
|
2440
2588
|
Description: 'Avoid modules longer than 100 lines of code.'
|
@@ -2462,7 +2610,8 @@ Metrics/PerceivedComplexity:
|
|
2462
2610
|
Enabled: true
|
2463
2611
|
VersionAdded: '0.25'
|
2464
2612
|
VersionChanged: '0.81'
|
2465
|
-
|
2613
|
+
AllowedMethods: []
|
2614
|
+
AllowedPatterns: []
|
2466
2615
|
Max: 8
|
2467
2616
|
|
2468
2617
|
################## Migration #############################
|
@@ -2633,13 +2782,13 @@ Naming/HeredocDelimiterNaming:
|
|
2633
2782
|
Enabled: true
|
2634
2783
|
VersionAdded: '0.50'
|
2635
2784
|
ForbiddenDelimiters:
|
2636
|
-
- !ruby/regexp '/(^|\s)(EO[A-Z]{1}|END)(\s|$)/'
|
2785
|
+
- !ruby/regexp '/(^|\s)(EO[A-Z]{1}|END)(\s|$)/i'
|
2637
2786
|
|
2638
2787
|
Naming/InclusiveLanguage:
|
2639
2788
|
Description: 'Recommend the use of inclusive language instead of problematic terms.'
|
2640
2789
|
Enabled: false
|
2641
2790
|
VersionAdded: '1.18'
|
2642
|
-
VersionChanged: '1.
|
2791
|
+
VersionChanged: '1.49'
|
2643
2792
|
CheckIdentifiers: true
|
2644
2793
|
CheckConstants: true
|
2645
2794
|
CheckVariables: true
|
@@ -2686,11 +2835,11 @@ Naming/MethodName:
|
|
2686
2835
|
- camelCase
|
2687
2836
|
# Method names matching patterns are always allowed.
|
2688
2837
|
#
|
2689
|
-
#
|
2838
|
+
# AllowedPatterns:
|
2690
2839
|
# - '\A\s*onSelectionBulkChange\s*'
|
2691
2840
|
# - '\A\s*onSelectionCleared\s*'
|
2692
2841
|
#
|
2693
|
-
|
2842
|
+
AllowedPatterns: []
|
2694
2843
|
|
2695
2844
|
Naming/MethodParameterName:
|
2696
2845
|
Description: >-
|
@@ -2704,10 +2853,13 @@ Naming/MethodParameterName:
|
|
2704
2853
|
AllowNamesEndingInNumbers: true
|
2705
2854
|
# Allowed names that will not register an offense
|
2706
2855
|
AllowedNames:
|
2856
|
+
- as
|
2707
2857
|
- at
|
2708
2858
|
- by
|
2859
|
+
- cc
|
2709
2860
|
- db
|
2710
2861
|
- id
|
2862
|
+
- if
|
2711
2863
|
- in
|
2712
2864
|
- io
|
2713
2865
|
- ip
|
@@ -2766,6 +2918,7 @@ Naming/VariableName:
|
|
2766
2918
|
- snake_case
|
2767
2919
|
- camelCase
|
2768
2920
|
AllowedIdentifiers: []
|
2921
|
+
AllowedPatterns: []
|
2769
2922
|
|
2770
2923
|
Naming/VariableNumber:
|
2771
2924
|
Description: 'Use the configured style when numbering symbols, methods and variables.'
|
@@ -2787,9 +2940,18 @@ Naming/VariableNumber:
|
|
2787
2940
|
- rfc822 # Time#rfc822
|
2788
2941
|
- rfc2822 # Time#rfc2822
|
2789
2942
|
- rfc3339 # DateTime.rfc3339
|
2943
|
+
- x86_64 # Allowed by default as an underscore separated CPU architecture name
|
2944
|
+
AllowedPatterns: []
|
2790
2945
|
|
2791
2946
|
#################### Security ##############################
|
2792
2947
|
|
2948
|
+
Security/CompoundHash:
|
2949
|
+
Description: 'When overwriting Object#hash to combine values, prefer delegating to Array#hash over writing a custom implementation.'
|
2950
|
+
Enabled: pending
|
2951
|
+
Safe: false
|
2952
|
+
VersionAdded: '1.28'
|
2953
|
+
VersionChanged: '1.51'
|
2954
|
+
|
2793
2955
|
Security/Eval:
|
2794
2956
|
Description: 'The use of eval represents a serious security risk.'
|
2795
2957
|
Enabled: true
|
@@ -2851,6 +3013,7 @@ Style/AccessModifierDeclarations:
|
|
2851
3013
|
- inline
|
2852
3014
|
- group
|
2853
3015
|
AllowModifiersOnSymbols: true
|
3016
|
+
SafeAutoCorrect: false
|
2854
3017
|
|
2855
3018
|
Style/AccessorGrouping:
|
2856
3019
|
Description: 'Checks for grouping of accessors in `class` and `module` bodies.'
|
@@ -2904,6 +3067,12 @@ Style/ArrayCoercion:
|
|
2904
3067
|
Enabled: false
|
2905
3068
|
VersionAdded: '0.88'
|
2906
3069
|
|
3070
|
+
Style/ArrayIntersect:
|
3071
|
+
Description: 'Use `array1.intersect?(array2)` instead of `(array1 & array2).any?`.'
|
3072
|
+
Enabled: 'pending'
|
3073
|
+
Safe: false
|
3074
|
+
VersionAdded: '1.40'
|
3075
|
+
|
2907
3076
|
Style/ArrayJoin:
|
2908
3077
|
Description: 'Use Array#join instead of Array#*.'
|
2909
3078
|
StyleGuide: '#array-join'
|
@@ -2985,7 +3154,7 @@ Style/BlockDelimiters:
|
|
2985
3154
|
# This looks at the usage of a block's method to determine its type (e.g. is
|
2986
3155
|
# the result of a `map` assigned to a variable or passed to another
|
2987
3156
|
# method) but exceptions are permitted in the `ProceduralMethods`,
|
2988
|
-
# `FunctionalMethods` and `
|
3157
|
+
# `FunctionalMethods` and `AllowedMethods` sections below.
|
2989
3158
|
- semantic
|
2990
3159
|
# The `braces_for_chaining` style enforces braces around single line blocks
|
2991
3160
|
# and do..end around multi-line blocks, except for multi-line blocks whose
|
@@ -3026,7 +3195,7 @@ Style/BlockDelimiters:
|
|
3026
3195
|
- let!
|
3027
3196
|
- subject
|
3028
3197
|
- watch
|
3029
|
-
|
3198
|
+
AllowedMethods:
|
3030
3199
|
# Methods that can be either procedural or functional and cannot be
|
3031
3200
|
# categorised from their usage alone, e.g.
|
3032
3201
|
#
|
@@ -3043,6 +3212,7 @@ Style/BlockDelimiters:
|
|
3043
3212
|
- lambda
|
3044
3213
|
- proc
|
3045
3214
|
- it
|
3215
|
+
AllowedPatterns: []
|
3046
3216
|
# The AllowBracesOnProceduralOneLiners option is ignored unless the
|
3047
3217
|
# EnforcedStyle is set to `semantic`. If so:
|
3048
3218
|
#
|
@@ -3066,7 +3236,7 @@ Style/BlockDelimiters:
|
|
3066
3236
|
# collection.each do |element| puts element end
|
3067
3237
|
AllowBracesOnProceduralOneLiners: false
|
3068
3238
|
# The BracesRequiredMethods overrides all other configurations except
|
3069
|
-
#
|
3239
|
+
# AllowedMethods. It can be used to enforce that all blocks for specific
|
3070
3240
|
# methods use braces. For example, you can use this to enforce Sorbet
|
3071
3241
|
# signatures use braces even when the rest of your codebase enforces
|
3072
3242
|
# the `line_count_based` style.
|
@@ -3087,13 +3257,25 @@ Style/CaseEquality:
|
|
3087
3257
|
# # good
|
3088
3258
|
# String === "string"
|
3089
3259
|
AllowOnConstant: false
|
3260
|
+
# If `AllowOnSelfClass` option is enabled, the cop will ignore violations when the receiver of
|
3261
|
+
# the case equality operator is `self.class`.
|
3262
|
+
#
|
3263
|
+
# # bad
|
3264
|
+
# some_class === object
|
3265
|
+
#
|
3266
|
+
# # good
|
3267
|
+
# self.class === object
|
3268
|
+
AllowOnSelfClass: false
|
3090
3269
|
|
3091
3270
|
Style/CaseLikeIf:
|
3092
|
-
Description: '
|
3271
|
+
Description: 'Identifies places where `if-elsif` constructions can be replaced with `case-when`.'
|
3093
3272
|
StyleGuide: '#case-vs-if-else'
|
3094
3273
|
Enabled: true
|
3095
3274
|
Safe: false
|
3096
3275
|
VersionAdded: '0.88'
|
3276
|
+
VersionChanged: '1.48'
|
3277
|
+
# `MinBranchesCount` defines the number of branches `if` needs to have to trigger this cop.
|
3278
|
+
MinBranchesCount: 3
|
3097
3279
|
|
3098
3280
|
Style/CharacterLiteral:
|
3099
3281
|
Description: 'Checks for uses of character literals.'
|
@@ -3106,7 +3288,7 @@ Style/ClassAndModuleChildren:
|
|
3106
3288
|
StyleGuide: '#namespace-definition'
|
3107
3289
|
# Moving from compact to nested children requires knowledge of whether the
|
3108
3290
|
# outer parent is a module or a class. Moving from nested to compact requires
|
3109
|
-
# verification that the outer parent is defined elsewhere.
|
3291
|
+
# verification that the outer parent is defined elsewhere. RuboCop does not
|
3110
3292
|
# have the knowledge to perform either operation safely and thus requires
|
3111
3293
|
# manual oversight.
|
3112
3294
|
SafeAutoCorrect: false
|
@@ -3146,10 +3328,11 @@ Style/ClassEqualityComparison:
|
|
3146
3328
|
StyleGuide: '#instance-of-vs-class-comparison'
|
3147
3329
|
Enabled: true
|
3148
3330
|
VersionAdded: '0.93'
|
3149
|
-
|
3331
|
+
AllowedMethods:
|
3150
3332
|
- ==
|
3151
3333
|
- equal?
|
3152
3334
|
- eql?
|
3335
|
+
AllowedPatterns: []
|
3153
3336
|
|
3154
3337
|
Style/ClassMethods:
|
3155
3338
|
Description: 'Use self when defining module/class methods.'
|
@@ -3270,6 +3453,17 @@ Style/CommentedKeyword:
|
|
3270
3453
|
VersionAdded: '0.51'
|
3271
3454
|
VersionChanged: '1.19'
|
3272
3455
|
|
3456
|
+
Style/ComparableClamp:
|
3457
|
+
Description: 'Enforces the use of `Comparable#clamp` instead of comparison by minimum and maximum.'
|
3458
|
+
Enabled: pending
|
3459
|
+
VersionAdded: '1.44'
|
3460
|
+
|
3461
|
+
Style/ConcatArrayLiterals:
|
3462
|
+
Description: 'Enforces the use of `Array#push(item)` instead of `Array#concat([item])` to avoid redundant array literals.'
|
3463
|
+
Enabled: pending
|
3464
|
+
Safe: false
|
3465
|
+
VersionAdded: '1.41'
|
3466
|
+
|
3273
3467
|
Style/ConditionalAssignment:
|
3274
3468
|
Description: >-
|
3275
3469
|
Use the return value of `if` and `case` statements for
|
@@ -3325,9 +3519,17 @@ Style/Copyright:
|
|
3325
3519
|
Notice: '^Copyright (\(c\) )?2[0-9]{3} .+'
|
3326
3520
|
AutocorrectNotice: ''
|
3327
3521
|
|
3522
|
+
Style/DataInheritance:
|
3523
|
+
Description: 'Checks for inheritance from Data.define.'
|
3524
|
+
StyleGuide: '#no-extend-data-define'
|
3525
|
+
Enabled: pending
|
3526
|
+
SafeAutoCorrect: false
|
3527
|
+
VersionAdded: '1.49'
|
3528
|
+
VersionChanged: '1.51'
|
3529
|
+
|
3328
3530
|
Style/DateTime:
|
3329
3531
|
Description: 'Use Time over DateTime.'
|
3330
|
-
StyleGuide: '#date
|
3532
|
+
StyleGuide: '#date-time'
|
3331
3533
|
Enabled: false
|
3332
3534
|
VersionAdded: '0.51'
|
3333
3535
|
VersionChanged: '0.92'
|
@@ -3348,6 +3550,12 @@ Style/Dir:
|
|
3348
3550
|
Enabled: true
|
3349
3551
|
VersionAdded: '0.50'
|
3350
3552
|
|
3553
|
+
Style/DirEmpty:
|
3554
|
+
Description: >-
|
3555
|
+
Prefer to use `Dir.empty?('path/to/dir')` when checking if a directory is empty.
|
3556
|
+
Enabled: pending
|
3557
|
+
VersionAdded: '1.48'
|
3558
|
+
|
3351
3559
|
Style/DisableCopsWithinSourceCodeDirective:
|
3352
3560
|
Description: >-
|
3353
3561
|
Forbids disabling/enabling cops within source code.
|
@@ -3436,6 +3644,12 @@ Style/EmptyElse:
|
|
3436
3644
|
- empty
|
3437
3645
|
- nil
|
3438
3646
|
- both
|
3647
|
+
AllowComments: false
|
3648
|
+
|
3649
|
+
Style/EmptyHeredoc:
|
3650
|
+
Description: 'Checks for using empty heredoc to reduce redundancy.'
|
3651
|
+
Enabled: pending
|
3652
|
+
VersionAdded: '1.32'
|
3439
3653
|
|
3440
3654
|
Style/EmptyLambdaParameter:
|
3441
3655
|
Description: 'Omit parens for empty lambda parameters.'
|
@@ -3484,6 +3698,12 @@ Style/EndlessMethod:
|
|
3484
3698
|
- allow_always
|
3485
3699
|
- disallow
|
3486
3700
|
|
3701
|
+
Style/EnvHome:
|
3702
|
+
Description: "Checks for consistent usage of `ENV['HOME']`."
|
3703
|
+
Enabled: pending
|
3704
|
+
Safe: false
|
3705
|
+
VersionAdded: '1.29'
|
3706
|
+
|
3487
3707
|
Style/EvalWithLocation:
|
3488
3708
|
Description: 'Pass `__FILE__` and `__LINE__` to `eval` method, as they are used by backtraces.'
|
3489
3709
|
Enabled: true
|
@@ -3496,6 +3716,11 @@ Style/EvenOdd:
|
|
3496
3716
|
VersionAdded: '0.12'
|
3497
3717
|
VersionChanged: '0.29'
|
3498
3718
|
|
3719
|
+
Style/ExactRegexpMatch:
|
3720
|
+
Description: 'Checks for exact regexp match inside Regexp literals.'
|
3721
|
+
Enabled: pending
|
3722
|
+
VersionAdded: '1.51'
|
3723
|
+
|
3499
3724
|
Style/ExpandPathArguments:
|
3500
3725
|
Description: "Use `expand_path(__dir__)` instead of `expand_path('..', __FILE__)`."
|
3501
3726
|
Enabled: true
|
@@ -3521,6 +3746,23 @@ Style/ExponentialNotation:
|
|
3521
3746
|
- engineering
|
3522
3747
|
- integral
|
3523
3748
|
|
3749
|
+
Style/FetchEnvVar:
|
3750
|
+
Description: >-
|
3751
|
+
Suggests `ENV.fetch` for the replacement of `ENV[]`.
|
3752
|
+
Reference:
|
3753
|
+
- https://rubystyle.guide/#hash-fetch-defaults
|
3754
|
+
Enabled: pending
|
3755
|
+
VersionAdded: '1.28'
|
3756
|
+
# Environment variables to be excluded from the inspection.
|
3757
|
+
AllowedVars: []
|
3758
|
+
|
3759
|
+
Style/FileEmpty:
|
3760
|
+
Description: >-
|
3761
|
+
Prefer to use `File.empty?('path/to/file')` when checking if a file is empty.
|
3762
|
+
Enabled: pending
|
3763
|
+
Safe: false
|
3764
|
+
VersionAdded: '1.48'
|
3765
|
+
|
3524
3766
|
Style/FileRead:
|
3525
3767
|
Description: 'Favor `File.(bin)read` convenience methods.'
|
3526
3768
|
StyleGuide: '#file-read'
|
@@ -3589,7 +3831,8 @@ Style/FormatStringToken:
|
|
3589
3831
|
MaxUnannotatedPlaceholdersAllowed: 1
|
3590
3832
|
VersionAdded: '0.49'
|
3591
3833
|
VersionChanged: '1.0'
|
3592
|
-
|
3834
|
+
AllowedMethods: []
|
3835
|
+
AllowedPatterns: []
|
3593
3836
|
|
3594
3837
|
Style/FrozenStringLiteralComment:
|
3595
3838
|
Description: >-
|
@@ -3634,10 +3877,11 @@ Style/GuardClause:
|
|
3634
3877
|
StyleGuide: '#no-nested-conditionals'
|
3635
3878
|
Enabled: true
|
3636
3879
|
VersionAdded: '0.20'
|
3637
|
-
VersionChanged: '
|
3880
|
+
VersionChanged: '1.31'
|
3638
3881
|
# `MinBodyLength` defines the number of lines of the a body of an `if` or `unless`
|
3639
3882
|
# needs to have to trigger this cop
|
3640
3883
|
MinBodyLength: 1
|
3884
|
+
AllowConsecutiveConditionals: false
|
3641
3885
|
|
3642
3886
|
Style/HashAsLastArrayItem:
|
3643
3887
|
Description: >-
|
@@ -3666,14 +3910,17 @@ Style/HashEachMethods:
|
|
3666
3910
|
Safe: false
|
3667
3911
|
VersionAdded: '0.80'
|
3668
3912
|
VersionChanged: '1.16'
|
3669
|
-
AllowedReceivers:
|
3913
|
+
AllowedReceivers:
|
3914
|
+
- Thread.current
|
3670
3915
|
|
3671
3916
|
Style/HashExcept:
|
3672
3917
|
Description: >-
|
3673
3918
|
Checks for usages of `Hash#reject`, `Hash#select`, and `Hash#filter` methods
|
3674
3919
|
that can be replaced with `Hash#except` method.
|
3675
3920
|
Enabled: pending
|
3921
|
+
Safe: false
|
3676
3922
|
VersionAdded: '1.7'
|
3923
|
+
VersionChanged: '1.39'
|
3677
3924
|
|
3678
3925
|
Style/HashLikeCase:
|
3679
3926
|
Description: >-
|
@@ -3712,6 +3959,8 @@ Style/HashSyntax:
|
|
3712
3959
|
- never
|
3713
3960
|
# accepts both shorthand and explicit use of hash literal value.
|
3714
3961
|
- either
|
3962
|
+
# forces use of the 3.1 syntax only if all values can be omitted in the hash.
|
3963
|
+
- consistent
|
3715
3964
|
# Force hashes that have a symbol value to use hash rockets
|
3716
3965
|
UseHashRocketsWithSymbolValues: false
|
3717
3966
|
# Do not suggest { a?: 1 } over { :a? => 1 } in ruby19 style
|
@@ -3824,16 +4073,41 @@ Style/InverseMethods:
|
|
3824
4073
|
:=~: :!~
|
3825
4074
|
:<: :>=
|
3826
4075
|
:>: :<=
|
3827
|
-
# `ActiveSupport` defines some common inverse methods. They are listed below,
|
3828
|
-
# and not enabled by default.
|
3829
|
-
# :present?: :blank?,
|
3830
|
-
# :include?: :exclude?
|
3831
4076
|
# `InverseBlocks` are methods that are inverted by inverting the return
|
3832
4077
|
# of the block that is passed to the method
|
3833
4078
|
InverseBlocks:
|
3834
4079
|
:select: :reject
|
3835
4080
|
:select!: :reject!
|
3836
4081
|
|
4082
|
+
Style/InvertibleUnlessCondition:
|
4083
|
+
Description: 'Favor `if` with inverted condition over `unless`.'
|
4084
|
+
Enabled: false
|
4085
|
+
Safe: false
|
4086
|
+
VersionAdded: '1.44'
|
4087
|
+
VersionChanged: '1.50'
|
4088
|
+
# `InverseMethods` are methods that can be inverted in a `unless` condition.
|
4089
|
+
# The relationship of inverse methods needs to be defined in both directions.
|
4090
|
+
# Keys and values both need to be defined as symbols.
|
4091
|
+
InverseMethods:
|
4092
|
+
:!=: :==
|
4093
|
+
:>: :<=
|
4094
|
+
:<=: :>
|
4095
|
+
:<: :>=
|
4096
|
+
:>=: :<
|
4097
|
+
:!~: :=~
|
4098
|
+
:zero?: :nonzero?
|
4099
|
+
:nonzero?: :zero?
|
4100
|
+
:any?: :none?
|
4101
|
+
:none?: :any?
|
4102
|
+
:even?: :odd?
|
4103
|
+
:odd?: :even?
|
4104
|
+
# `ActiveSupport` defines some common inverse methods. They are listed below,
|
4105
|
+
# and not enabled by default.
|
4106
|
+
# :present?: :blank?
|
4107
|
+
# :blank?: :present?
|
4108
|
+
# :include?: :exclude?
|
4109
|
+
# :exclude?: :include?
|
4110
|
+
|
3837
4111
|
Style/IpAddresses:
|
3838
4112
|
Description: "Don't include literal IP addresses in code."
|
3839
4113
|
Enabled: false
|
@@ -3888,12 +4162,43 @@ Style/LineEndConcatenation:
|
|
3888
4162
|
VersionAdded: '0.18'
|
3889
4163
|
VersionChanged: '0.64'
|
3890
4164
|
|
4165
|
+
Style/MagicCommentFormat:
|
4166
|
+
Description: 'Use a consistent style for magic comments.'
|
4167
|
+
Enabled: pending
|
4168
|
+
VersionAdded: '1.35'
|
4169
|
+
EnforcedStyle: snake_case
|
4170
|
+
SupportedStyles:
|
4171
|
+
# `snake` will enforce the magic comment is written
|
4172
|
+
# in snake case (words separated by underscores).
|
4173
|
+
# Eg: froze_string_literal: true
|
4174
|
+
- snake_case
|
4175
|
+
# `kebab` will enforce the magic comment is written
|
4176
|
+
# in kebab case (words separated by hyphens).
|
4177
|
+
# Eg: froze-string-literal: true
|
4178
|
+
- kebab_case
|
4179
|
+
DirectiveCapitalization: lowercase
|
4180
|
+
ValueCapitalization: ~
|
4181
|
+
SupportedCapitalizations:
|
4182
|
+
- lowercase
|
4183
|
+
- uppercase
|
4184
|
+
|
4185
|
+
Style/MapCompactWithConditionalBlock:
|
4186
|
+
Description: 'Prefer `select` or `reject` over `map { ... }.compact`.'
|
4187
|
+
Enabled: pending
|
4188
|
+
VersionAdded: '1.30'
|
4189
|
+
|
3891
4190
|
Style/MapToHash:
|
3892
4191
|
Description: 'Prefer `to_h` with a block over `map.to_h`.'
|
3893
4192
|
Enabled: pending
|
3894
4193
|
VersionAdded: '1.24'
|
3895
4194
|
Safe: false
|
3896
4195
|
|
4196
|
+
Style/MapToSet:
|
4197
|
+
Description: 'Prefer `to_set` with a block over `map.to_set`.'
|
4198
|
+
Enabled: pending
|
4199
|
+
Safe: false
|
4200
|
+
VersionAdded: '1.42'
|
4201
|
+
|
3897
4202
|
Style/MethodCallWithArgsParentheses:
|
3898
4203
|
Description: 'Use parentheses for method calls with arguments.'
|
3899
4204
|
StyleGuide: '#method-invocation-parens'
|
@@ -3901,8 +4206,8 @@ Style/MethodCallWithArgsParentheses:
|
|
3901
4206
|
VersionAdded: '0.47'
|
3902
4207
|
VersionChanged: '1.7'
|
3903
4208
|
IgnoreMacros: true
|
3904
|
-
|
3905
|
-
|
4209
|
+
AllowedMethods: []
|
4210
|
+
AllowedPatterns: []
|
3906
4211
|
IncludedMacros: []
|
3907
4212
|
AllowParenthesesInMultilineCall: false
|
3908
4213
|
AllowParenthesesInChaining: false
|
@@ -3917,7 +4222,8 @@ Style/MethodCallWithoutArgsParentheses:
|
|
3917
4222
|
Description: 'Do not use parentheses for method calls with no arguments.'
|
3918
4223
|
StyleGuide: '#method-invocation-parens'
|
3919
4224
|
Enabled: true
|
3920
|
-
|
4225
|
+
AllowedMethods: []
|
4226
|
+
AllowedPatterns: []
|
3921
4227
|
VersionAdded: '0.47'
|
3922
4228
|
VersionChanged: '0.55'
|
3923
4229
|
|
@@ -3948,6 +4254,12 @@ Style/MinMax:
|
|
3948
4254
|
Enabled: true
|
3949
4255
|
VersionAdded: '0.50'
|
3950
4256
|
|
4257
|
+
Style/MinMaxComparison:
|
4258
|
+
Description: 'Enforces the use of `max` or `min` instead of comparison for greater or less.'
|
4259
|
+
Enabled: pending
|
4260
|
+
Safe: false
|
4261
|
+
VersionAdded: '1.42'
|
4262
|
+
|
3951
4263
|
Style/MissingElse:
|
3952
4264
|
Description: >-
|
3953
4265
|
Require if/case expressions to have an else branches.
|
@@ -4108,7 +4420,7 @@ Style/NegatedIf:
|
|
4108
4420
|
|
4109
4421
|
Style/NegatedIfElseCondition:
|
4110
4422
|
Description: >-
|
4111
|
-
|
4423
|
+
Checks for uses of `if-else` and ternary operators with a negated condition
|
4112
4424
|
which can be simplified by inverting condition and swapping branches.
|
4113
4425
|
Enabled: pending
|
4114
4426
|
VersionAdded: '1.2'
|
@@ -4269,17 +4581,17 @@ Style/NumericLiterals:
|
|
4269
4581
|
Strict: false
|
4270
4582
|
# You can specify allowed numbers. (e.g. port number 3000, 8080, and etc)
|
4271
4583
|
AllowedNumbers: []
|
4584
|
+
AllowedPatterns: []
|
4272
4585
|
|
4273
4586
|
Style/NumericPredicate:
|
4274
4587
|
Description: >-
|
4275
4588
|
Checks for the use of predicate- or comparison methods for
|
4276
4589
|
numeric comparisons.
|
4277
4590
|
StyleGuide: '#predicate-methods'
|
4278
|
-
Safe: false
|
4279
4591
|
# This will change to a new method call which isn't guaranteed to be on the
|
4280
4592
|
# object. Switching these methods has to be done with knowledge of the types
|
4281
4593
|
# of the variables which rubocop doesn't have.
|
4282
|
-
|
4594
|
+
Safe: false
|
4283
4595
|
Enabled: true
|
4284
4596
|
VersionAdded: '0.42'
|
4285
4597
|
VersionChanged: '0.59'
|
@@ -4287,12 +4599,26 @@ Style/NumericPredicate:
|
|
4287
4599
|
SupportedStyles:
|
4288
4600
|
- predicate
|
4289
4601
|
- comparison
|
4290
|
-
|
4602
|
+
AllowedMethods: []
|
4603
|
+
AllowedPatterns: []
|
4291
4604
|
# Exclude RSpec specs because assertions like `expect(1).to be > 0` cause
|
4292
4605
|
# false positives.
|
4293
4606
|
Exclude:
|
4294
4607
|
- 'spec/**/*'
|
4295
4608
|
|
4609
|
+
Style/ObjectThen:
|
4610
|
+
Description: 'Enforces the use of consistent method names `Object#yield_self` or `Object#then`.'
|
4611
|
+
StyleGuide: '#object-yield-self-vs-object-then'
|
4612
|
+
Enabled: pending
|
4613
|
+
VersionAdded: '1.28'
|
4614
|
+
# Use `Object#yield_self` or `Object#then`?
|
4615
|
+
# Prefer `Object#yield_self` to `Object#then` (yield_self)
|
4616
|
+
# Prefer `Object#then` to `Object#yield_self` (then)
|
4617
|
+
EnforcedStyle: 'then'
|
4618
|
+
SupportedStyles:
|
4619
|
+
- then
|
4620
|
+
- yield_self
|
4621
|
+
|
4296
4622
|
Style/OneLineConditional:
|
4297
4623
|
Description: >-
|
4298
4624
|
Favor the ternary operator (?:) or multi-line constructs over
|
@@ -4311,7 +4637,15 @@ Style/OpenStructUse:
|
|
4311
4637
|
- https://docs.ruby-lang.org/en/3.0.0/OpenStruct.html#class-OpenStruct-label-Caveats
|
4312
4638
|
|
4313
4639
|
Enabled: pending
|
4640
|
+
Safe: false
|
4314
4641
|
VersionAdded: '1.23'
|
4642
|
+
VersionChanged: '1.51'
|
4643
|
+
|
4644
|
+
Style/OperatorMethodCall:
|
4645
|
+
Description: 'Checks for redundant dot before operator method call.'
|
4646
|
+
StyleGuide: '#operator-method-call'
|
4647
|
+
Enabled: pending
|
4648
|
+
VersionAdded: '1.37'
|
4315
4649
|
|
4316
4650
|
Style/OptionHash:
|
4317
4651
|
Description: "Don't use option hashes when you can use keyword arguments."
|
@@ -4458,10 +4792,12 @@ Style/RedundantArgument:
|
|
4458
4792
|
Enabled: pending
|
4459
4793
|
Safe: false
|
4460
4794
|
VersionAdded: '1.4'
|
4461
|
-
VersionChanged: '1.
|
4795
|
+
VersionChanged: '1.40'
|
4462
4796
|
Methods:
|
4463
4797
|
# Array#join
|
4464
4798
|
join: ''
|
4799
|
+
# Array#sum
|
4800
|
+
sum: 0
|
4465
4801
|
# String#split
|
4466
4802
|
split: ' '
|
4467
4803
|
# String#chomp
|
@@ -4496,6 +4832,22 @@ Style/RedundantConditional:
|
|
4496
4832
|
Enabled: true
|
4497
4833
|
VersionAdded: '0.50'
|
4498
4834
|
|
4835
|
+
Style/RedundantConstantBase:
|
4836
|
+
Description: Avoid redundant `::` prefix on constant.
|
4837
|
+
Enabled: pending
|
4838
|
+
VersionAdded: '1.40'
|
4839
|
+
|
4840
|
+
Style/RedundantDoubleSplatHashBraces:
|
4841
|
+
Description: 'Checks for redundant uses of double splat hash braces.'
|
4842
|
+
Enabled: pending
|
4843
|
+
VersionAdded: '1.41'
|
4844
|
+
|
4845
|
+
Style/RedundantEach:
|
4846
|
+
Description: 'Checks for redundant `each`.'
|
4847
|
+
Enabled: pending
|
4848
|
+
Safe: false
|
4849
|
+
VersionAdded: '1.38'
|
4850
|
+
|
4499
4851
|
Style/RedundantException:
|
4500
4852
|
Description: "Checks for an obsolete RuntimeException argument in raise/fail."
|
4501
4853
|
StyleGuide: '#no-explicit-runtimeerror'
|
@@ -4530,15 +4882,30 @@ Style/RedundantFreeze:
|
|
4530
4882
|
VersionAdded: '0.34'
|
4531
4883
|
VersionChanged: '0.66'
|
4532
4884
|
|
4885
|
+
Style/RedundantHeredocDelimiterQuotes:
|
4886
|
+
Description: 'Checks for redundant heredoc delimiter quotes.'
|
4887
|
+
Enabled: pending
|
4888
|
+
VersionAdded: '1.45'
|
4889
|
+
|
4533
4890
|
Style/RedundantInitialize:
|
4534
4891
|
Description: 'Checks for redundant `initialize` methods.'
|
4535
4892
|
Enabled: pending
|
4893
|
+
Safe: false
|
4894
|
+
AllowComments: true
|
4536
4895
|
VersionAdded: '1.27'
|
4896
|
+
VersionChanged: '1.28'
|
4537
4897
|
|
4538
4898
|
Style/RedundantInterpolation:
|
4539
4899
|
Description: 'Checks for strings that are just an interpolated expression.'
|
4540
4900
|
Enabled: true
|
4901
|
+
SafeAutoCorrect: false
|
4541
4902
|
VersionAdded: '0.76'
|
4903
|
+
VersionChanged: '1.30'
|
4904
|
+
|
4905
|
+
Style/RedundantLineContinuation:
|
4906
|
+
Description: 'Check for redundant line continuation.'
|
4907
|
+
Enabled: pending
|
4908
|
+
VersionAdded: '1.49'
|
4542
4909
|
|
4543
4910
|
Style/RedundantParentheses:
|
4544
4911
|
Description: "Checks for parentheses that seem not to serve any purpose."
|
@@ -4602,6 +4969,11 @@ Style/RedundantSortBy:
|
|
4602
4969
|
Enabled: true
|
4603
4970
|
VersionAdded: '0.36'
|
4604
4971
|
|
4972
|
+
Style/RedundantStringEscape:
|
4973
|
+
Description: 'Checks for redundant escapes in string literals.'
|
4974
|
+
Enabled: pending
|
4975
|
+
VersionAdded: '1.37'
|
4976
|
+
|
4605
4977
|
Style/RegexpLiteral:
|
4606
4978
|
Description: 'Use / or %r around regular expressions.'
|
4607
4979
|
StyleGuide: '#percent-r'
|
@@ -4620,6 +4992,12 @@ Style/RegexpLiteral:
|
|
4620
4992
|
# are found in the regexp string.
|
4621
4993
|
AllowInnerSlashes: false
|
4622
4994
|
|
4995
|
+
Style/RequireOrder:
|
4996
|
+
Description: Sort `require` and `require_relative` in alphabetical order.
|
4997
|
+
Enabled: false
|
4998
|
+
SafeAutoCorrect: false
|
4999
|
+
VersionAdded: '1.40'
|
5000
|
+
|
4623
5001
|
Style/RescueModifier:
|
4624
5002
|
Description: 'Avoid using rescue in its modifier form.'
|
4625
5003
|
StyleGuide: '#no-rescue-modifiers'
|
@@ -4649,10 +5027,10 @@ Style/ReturnNil:
|
|
4649
5027
|
|
4650
5028
|
Style/SafeNavigation:
|
4651
5029
|
Description: >-
|
4652
|
-
|
5030
|
+
Transforms usages of a method call safeguarded by
|
4653
5031
|
a check for the existence of the object to
|
4654
5032
|
safe navigation (`&.`).
|
4655
|
-
|
5033
|
+
Autocorrection is unsafe as it assumes the object will
|
4656
5034
|
be `nil` or truthy, but never `false`.
|
4657
5035
|
Enabled: true
|
4658
5036
|
VersionAdded: '0.43'
|
@@ -4774,6 +5152,7 @@ Style/SpecialGlobalVars:
|
|
4774
5152
|
SupportedStyles:
|
4775
5153
|
- use_perl_names
|
4776
5154
|
- use_english_names
|
5155
|
+
- use_builtin_english_names
|
4777
5156
|
|
4778
5157
|
Style/StabbyLambdaParentheses:
|
4779
5158
|
Description: 'Check for the usage of parentheses around stabby lambda arguments.'
|
@@ -4875,7 +5254,7 @@ Style/StructInheritance:
|
|
4875
5254
|
VersionChanged: '1.20'
|
4876
5255
|
|
4877
5256
|
Style/SwapValues:
|
4878
|
-
Description: '
|
5257
|
+
Description: 'Enforces the use of shorthand-style swapping of 2 variables.'
|
4879
5258
|
StyleGuide: '#values-swapping'
|
4880
5259
|
Enabled: pending
|
4881
5260
|
VersionAdded: '1.1'
|
@@ -4903,13 +5282,14 @@ Style/SymbolProc:
|
|
4903
5282
|
Enabled: true
|
4904
5283
|
Safe: false
|
4905
5284
|
VersionAdded: '0.26'
|
4906
|
-
VersionChanged: '1.
|
5285
|
+
VersionChanged: '1.40'
|
4907
5286
|
AllowMethodsWithArguments: false
|
4908
|
-
# A list of method names to be
|
5287
|
+
# A list of method names to be always allowed by the check.
|
4909
5288
|
# The names should be fairly unique, otherwise you'll end up ignoring lots of code.
|
4910
|
-
|
4911
|
-
- respond_to
|
5289
|
+
AllowedMethods:
|
4912
5290
|
- define_method
|
5291
|
+
AllowedPatterns: []
|
5292
|
+
AllowComments: false
|
4913
5293
|
|
4914
5294
|
Style/TernaryParentheses:
|
4915
5295
|
Description: 'Checks for use of parentheses around ternary conditions.'
|
@@ -4924,7 +5304,7 @@ Style/TernaryParentheses:
|
|
4924
5304
|
AllowSafeAssignment: true
|
4925
5305
|
|
4926
5306
|
Style/TopLevelMethodDefinition:
|
4927
|
-
Description: '
|
5307
|
+
Description: 'Looks for top-level method definitions.'
|
4928
5308
|
StyleGuide: '#top-level-methods'
|
4929
5309
|
Enabled: false
|
4930
5310
|
VersionAdded: '1.15'
|
@@ -5147,6 +5527,19 @@ Style/YodaCondition:
|
|
5147
5527
|
VersionAdded: '0.49'
|
5148
5528
|
VersionChanged: '0.75'
|
5149
5529
|
|
5530
|
+
Style/YodaExpression:
|
5531
|
+
Description: 'Forbid the use of yoda expressions.'
|
5532
|
+
Enabled: false
|
5533
|
+
Safe: false
|
5534
|
+
VersionAdded: '1.42'
|
5535
|
+
VersionChanged: '1.43'
|
5536
|
+
SupportedOperators:
|
5537
|
+
- '*'
|
5538
|
+
- '+'
|
5539
|
+
- '&'
|
5540
|
+
- '|'
|
5541
|
+
- '^'
|
5542
|
+
|
5150
5543
|
Style/ZeroLengthPredicate:
|
5151
5544
|
Description: 'Use #empty? when testing for objects of length 0.'
|
5152
5545
|
Enabled: true
|