rubocop 0.87.1 → 0.89.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/bin/rubocop-profile +32 -0
- data/config/default.yml +153 -22
- data/lib/rubocop.rb +22 -4
- data/lib/rubocop/cli.rb +2 -2
- data/lib/rubocop/cli/command/auto_genenerate_config.rb +3 -3
- data/lib/rubocop/cli/command/base.rb +1 -0
- data/lib/rubocop/cli/command/execute_runner.rb +1 -1
- data/lib/rubocop/cli/command/show_cops.rb +2 -2
- data/lib/rubocop/cli/command/version.rb +2 -2
- data/lib/rubocop/comment_config.rb +5 -7
- data/lib/rubocop/config.rb +20 -3
- data/lib/rubocop/config_loader.rb +22 -9
- data/lib/rubocop/config_loader_resolver.rb +3 -3
- data/lib/rubocop/config_obsoletion.rb +6 -1
- data/lib/rubocop/config_store.rb +4 -0
- data/lib/rubocop/config_validator.rb +2 -4
- data/lib/rubocop/cop/autocorrect_logic.rb +1 -1
- data/lib/rubocop/cop/badge.rb +1 -1
- data/lib/rubocop/cop/base.rb +14 -6
- data/lib/rubocop/cop/commissioner.rb +0 -1
- data/lib/rubocop/cop/cop.rb +1 -1
- data/lib/rubocop/cop/correctors/line_break_corrector.rb +4 -4
- data/lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb +26 -0
- data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +2 -2
- data/lib/rubocop/cop/correctors/punctuation_corrector.rb +1 -1
- data/lib/rubocop/cop/correctors/unused_arg_corrector.rb +15 -18
- data/lib/rubocop/cop/force.rb +1 -0
- data/lib/rubocop/cop/gemspec/required_ruby_version.rb +38 -12
- data/lib/rubocop/cop/generator/configuration_injector.rb +2 -2
- data/lib/rubocop/cop/internal_affairs/method_name_equal.rb +4 -12
- data/lib/rubocop/cop/internal_affairs/node_destructuring.rb +1 -1
- data/lib/rubocop/cop/internal_affairs/offense_location_keyword.rb +8 -8
- data/lib/rubocop/cop/internal_affairs/redundant_location_argument.rb +10 -7
- data/lib/rubocop/cop/internal_affairs/redundant_message_argument.rb +7 -8
- data/lib/rubocop/cop/internal_affairs/useless_message_assertion.rb +2 -2
- data/lib/rubocop/cop/layout/block_alignment.rb +1 -1
- data/lib/rubocop/cop/layout/class_structure.rb +3 -7
- data/lib/rubocop/cop/layout/comment_indentation.rb +1 -1
- data/lib/rubocop/cop/layout/empty_lines.rb +0 -2
- data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +1 -0
- data/lib/rubocop/cop/layout/end_alignment.rb +3 -2
- data/lib/rubocop/cop/layout/extra_spacing.rb +22 -36
- data/lib/rubocop/cop/layout/first_method_argument_line_break.rb +1 -1
- data/lib/rubocop/cop/layout/heredoc_indentation.rb +2 -2
- data/lib/rubocop/cop/layout/indentation_style.rb +0 -2
- data/lib/rubocop/cop/layout/leading_comment_space.rb +1 -1
- data/lib/rubocop/cop/layout/multiline_block_layout.rb +16 -5
- data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +1 -1
- data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +0 -2
- data/lib/rubocop/cop/layout/space_around_block_parameters.rb +3 -2
- data/lib/rubocop/cop/layout/space_around_method_call_operator.rb +33 -66
- data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +3 -2
- data/lib/rubocop/cop/lint/ambiguous_block_association.rb +7 -4
- data/lib/rubocop/cop/lint/ambiguous_operator.rb +15 -10
- data/lib/rubocop/cop/lint/ambiguous_regexp_literal.rb +11 -13
- data/lib/rubocop/cop/lint/assignment_in_condition.rb +2 -2
- data/lib/rubocop/cop/lint/big_decimal_new.rb +10 -10
- data/lib/rubocop/cop/lint/binary_operator_with_identical_operands.rb +50 -0
- data/lib/rubocop/cop/lint/boolean_symbol.rb +16 -11
- data/lib/rubocop/cop/lint/circular_argument_reference.rb +1 -1
- data/lib/rubocop/cop/lint/constant_resolution.rb +1 -1
- data/lib/rubocop/cop/lint/debugger.rb +7 -1
- data/lib/rubocop/cop/lint/deprecated_class_methods.rb +9 -10
- data/lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb +17 -13
- data/lib/rubocop/cop/lint/disjunctive_assignment_in_constructor.rb +8 -2
- data/lib/rubocop/cop/lint/duplicate_case_condition.rb +1 -1
- data/lib/rubocop/cop/lint/duplicate_elsif_condition.rb +39 -0
- data/lib/rubocop/cop/lint/duplicate_hash_key.rb +1 -1
- data/lib/rubocop/cop/lint/duplicate_methods.rb +9 -6
- data/lib/rubocop/cop/lint/duplicate_rescue_exception.rb +60 -0
- data/lib/rubocop/cop/lint/each_with_object_argument.rb +1 -1
- data/lib/rubocop/cop/lint/else_layout.rb +1 -1
- data/lib/rubocop/cop/lint/empty_conditional_body.rb +67 -0
- data/lib/rubocop/cop/lint/empty_ensure.rb +5 -5
- data/lib/rubocop/cop/lint/empty_expression.rb +2 -2
- data/lib/rubocop/cop/lint/empty_interpolation.rb +5 -6
- data/lib/rubocop/cop/lint/empty_when.rb +2 -2
- data/lib/rubocop/cop/lint/ensure_return.rb +27 -29
- data/lib/rubocop/cop/lint/erb_new_arguments.rb +11 -10
- data/lib/rubocop/cop/lint/flip_flop.rb +1 -1
- data/lib/rubocop/cop/lint/float_comparison.rb +93 -0
- data/lib/rubocop/cop/lint/float_out_of_range.rb +1 -1
- data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +5 -4
- data/lib/rubocop/cop/lint/heredoc_method_call_position.rb +13 -14
- data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +5 -4
- data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +8 -8
- data/lib/rubocop/cop/lint/inherit_exception.rb +12 -7
- data/lib/rubocop/cop/lint/interpolation_check.rb +18 -15
- data/lib/rubocop/cop/lint/literal_as_condition.rb +14 -2
- data/lib/rubocop/cop/lint/literal_in_interpolation.rb +7 -7
- data/lib/rubocop/cop/lint/loop.rb +23 -2
- data/lib/rubocop/cop/lint/missing_cop_enable_directive.rb +6 -5
- data/lib/rubocop/cop/lint/missing_super.rb +99 -0
- data/lib/rubocop/cop/lint/mixed_regexp_capture_types.rb +1 -1
- data/lib/rubocop/cop/lint/multiple_comparison.rb +6 -9
- data/lib/rubocop/cop/lint/nested_method_definition.rb +14 -20
- data/lib/rubocop/cop/lint/nested_percent_literal.rb +1 -1
- data/lib/rubocop/cop/lint/next_without_accumulator.rb +1 -1
- data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +82 -11
- data/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +2 -2
- data/lib/rubocop/cop/lint/number_conversion.rb +6 -9
- data/lib/rubocop/cop/lint/ordered_magic_comments.rb +11 -13
- data/lib/rubocop/cop/lint/out_of_range_regexp_ref.rb +90 -0
- data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +4 -10
- data/lib/rubocop/cop/lint/percent_string_array.rb +13 -12
- data/lib/rubocop/cop/lint/percent_symbol_array.rb +13 -12
- data/lib/rubocop/cop/lint/raise_exception.rb +12 -10
- data/lib/rubocop/cop/lint/rand_one.rb +2 -2
- data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +16 -19
- data/lib/rubocop/cop/lint/redundant_cop_enable_directive.rb +7 -11
- data/lib/rubocop/cop/lint/redundant_require_statement.rb +4 -7
- data/lib/rubocop/cop/lint/redundant_splat_expansion.rb +13 -9
- data/lib/rubocop/cop/lint/redundant_string_coercion.rb +6 -13
- data/lib/rubocop/cop/lint/redundant_with_index.rb +11 -14
- data/lib/rubocop/cop/lint/redundant_with_object.rb +11 -14
- data/lib/rubocop/cop/lint/regexp_as_condition.rb +4 -6
- data/lib/rubocop/cop/lint/require_parentheses.rb +2 -2
- data/lib/rubocop/cop/lint/rescue_exception.rb +1 -1
- data/lib/rubocop/cop/lint/rescue_type.rb +8 -8
- data/lib/rubocop/cop/lint/return_in_void_context.rb +2 -4
- data/lib/rubocop/cop/lint/safe_navigation_chain.rb +3 -6
- data/lib/rubocop/cop/lint/safe_navigation_consistency.rb +14 -10
- data/lib/rubocop/cop/lint/safe_navigation_with_empty.rb +7 -7
- data/lib/rubocop/cop/lint/script_permission.rb +10 -7
- data/lib/rubocop/cop/lint/self_assignment.rb +78 -0
- data/lib/rubocop/cop/lint/send_with_mixin_argument.rb +5 -11
- data/lib/rubocop/cop/lint/shadowed_argument.rb +3 -3
- data/lib/rubocop/cop/lint/shadowed_exception.rb +2 -2
- data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +3 -3
- data/lib/rubocop/cop/lint/struct_new_override.rb +1 -1
- data/lib/rubocop/cop/lint/suppressed_exception.rb +4 -7
- data/lib/rubocop/cop/lint/to_json.rb +4 -6
- data/lib/rubocop/cop/lint/top_level_return_with_argument.rb +34 -0
- data/lib/rubocop/cop/lint/underscore_prefixed_variable_name.rb +4 -4
- data/lib/rubocop/cop/lint/unified_integer.rb +4 -6
- data/lib/rubocop/cop/lint/unreachable_code.rb +1 -1
- data/lib/rubocop/cop/lint/unreachable_loop.rb +174 -0
- data/lib/rubocop/cop/lint/unused_block_argument.rb +8 -3
- data/lib/rubocop/cop/lint/unused_method_argument.rb +8 -3
- data/lib/rubocop/cop/lint/uri_escape_unescape.rb +1 -1
- data/lib/rubocop/cop/lint/uri_regexp.rb +11 -47
- data/lib/rubocop/cop/lint/useless_access_modifier.rb +25 -15
- data/lib/rubocop/cop/lint/useless_assignment.rb +4 -4
- data/lib/rubocop/cop/lint/useless_else_without_rescue.rb +6 -15
- data/lib/rubocop/cop/lint/useless_setter_call.rb +4 -6
- data/lib/rubocop/cop/lint/void.rb +3 -7
- data/lib/rubocop/cop/metrics/abc_size.rb +1 -1
- 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 +2 -2
- data/lib/rubocop/cop/metrics/cyclomatic_complexity.rb +2 -1
- data/lib/rubocop/cop/metrics/method_length.rb +2 -2
- data/lib/rubocop/cop/metrics/module_length.rb +2 -2
- data/lib/rubocop/cop/metrics/parameter_lists.rb +2 -6
- data/lib/rubocop/cop/metrics/perceived_complexity.rb +7 -8
- data/lib/rubocop/cop/metrics/utils/abc_size_calculator.rb +48 -5
- data/lib/rubocop/cop/metrics/utils/code_length_calculator.rb +52 -24
- data/lib/rubocop/cop/metrics/utils/repeated_csend_discount.rb +37 -0
- data/lib/rubocop/cop/migration/department_name.rb +14 -16
- data/lib/rubocop/cop/mixin/alignment.rb +2 -1
- data/lib/rubocop/cop/mixin/array_min_size.rb +1 -1
- data/lib/rubocop/cop/mixin/check_line_breakable.rb +2 -2
- data/lib/rubocop/cop/mixin/code_length.rb +22 -5
- data/lib/rubocop/cop/mixin/hash_transform_method.rb +5 -11
- data/lib/rubocop/cop/mixin/line_length_help.rb +1 -3
- data/lib/rubocop/cop/mixin/method_complexity.rb +10 -2
- data/lib/rubocop/cop/mixin/multiline_literal_brace_layout.rb +1 -2
- data/lib/rubocop/cop/mixin/percent_array.rb +2 -6
- data/lib/rubocop/cop/mixin/range_help.rb +18 -4
- data/lib/rubocop/cop/mixin/statement_modifier.rb +39 -10
- data/lib/rubocop/cop/mixin/surrounding_space.rb +0 -25
- data/lib/rubocop/cop/mixin/trailing_comma.rb +2 -4
- data/lib/rubocop/cop/mixin/uncommunicative_name.rb +6 -13
- data/lib/rubocop/cop/mixin/unused_argument.rb +4 -6
- data/lib/rubocop/cop/naming/accessor_method_name.rb +4 -2
- data/lib/rubocop/cop/naming/ascii_identifiers.rb +3 -3
- data/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +1 -1
- data/lib/rubocop/cop/naming/block_parameter_name.rb +1 -1
- data/lib/rubocop/cop/naming/class_and_module_camel_case.rb +2 -2
- data/lib/rubocop/cop/naming/constant_name.rb +2 -2
- data/lib/rubocop/cop/naming/file_name.rb +3 -3
- data/lib/rubocop/cop/naming/heredoc_delimiter_case.rb +2 -2
- data/lib/rubocop/cop/naming/heredoc_delimiter_naming.rb +2 -2
- data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +2 -2
- data/lib/rubocop/cop/naming/method_parameter_name.rb +1 -1
- data/lib/rubocop/cop/naming/predicate_name.rb +3 -5
- data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +12 -11
- data/lib/rubocop/cop/registry.rb +3 -3
- data/lib/rubocop/cop/security/eval.rb +2 -2
- data/lib/rubocop/cop/security/json_load.rb +6 -8
- data/lib/rubocop/cop/security/marshal_load.rb +2 -4
- data/lib/rubocop/cop/security/open.rb +2 -2
- data/lib/rubocop/cop/security/yaml_load.rb +6 -6
- data/lib/rubocop/cop/style/access_modifier_declarations.rb +16 -9
- data/lib/rubocop/cop/style/accessor_grouping.rb +29 -20
- data/lib/rubocop/cop/style/alias.rb +41 -36
- data/lib/rubocop/cop/style/and_or.rb +9 -11
- data/lib/rubocop/cop/style/array_coercion.rb +63 -0
- data/lib/rubocop/cop/style/array_join.rb +6 -8
- data/lib/rubocop/cop/style/ascii_comments.rb +4 -4
- data/lib/rubocop/cop/style/attr.rb +11 -9
- data/lib/rubocop/cop/style/auto_resource_cleanup.rb +5 -7
- data/lib/rubocop/cop/style/bare_percent_literals.rb +10 -12
- data/lib/rubocop/cop/style/begin_block.rb +2 -2
- data/lib/rubocop/cop/style/bisected_attr_accessor.rb +14 -18
- data/lib/rubocop/cop/style/block_comments.rb +14 -18
- data/lib/rubocop/cop/style/block_delimiters.rb +23 -23
- data/lib/rubocop/cop/style/case_equality.rb +22 -3
- data/lib/rubocop/cop/style/case_like_if.rb +220 -0
- data/lib/rubocop/cop/style/class_and_module_children.rb +14 -11
- data/lib/rubocop/cop/style/class_check.rb +7 -9
- data/lib/rubocop/cop/style/class_methods.rb +7 -11
- data/lib/rubocop/cop/style/class_vars.rb +6 -10
- data/lib/rubocop/cop/style/collection_methods.rb +11 -17
- data/lib/rubocop/cop/style/colon_method_call.rb +8 -9
- data/lib/rubocop/cop/style/colon_method_definition.rb +6 -6
- data/lib/rubocop/cop/style/command_literal.rb +23 -24
- data/lib/rubocop/cop/style/comment_annotation.rb +15 -15
- data/lib/rubocop/cop/style/commented_keyword.rb +6 -3
- data/lib/rubocop/cop/style/conditional_assignment.rb +13 -4
- data/lib/rubocop/cop/style/constant_visibility.rb +3 -2
- data/lib/rubocop/cop/style/copyright.rb +12 -12
- data/lib/rubocop/cop/style/date_time.rb +1 -1
- data/lib/rubocop/cop/style/def_with_parentheses.rb +8 -10
- data/lib/rubocop/cop/style/dir.rb +7 -10
- data/lib/rubocop/cop/style/disable_cops_within_source_code_directive.rb +7 -9
- data/lib/rubocop/cop/style/documentation.rb +6 -8
- data/lib/rubocop/cop/style/documentation_method.rb +1 -1
- data/lib/rubocop/cop/style/double_cop_disable_directive.rb +12 -15
- data/lib/rubocop/cop/style/double_negation.rb +2 -2
- data/lib/rubocop/cop/style/each_for_simple_loop.rb +5 -8
- data/lib/rubocop/cop/style/each_with_object.rb +16 -19
- data/lib/rubocop/cop/style/empty_case_condition.rb +19 -20
- data/lib/rubocop/cop/style/empty_else.rb +17 -19
- data/lib/rubocop/cop/style/empty_literal.rb +15 -16
- data/lib/rubocop/cop/style/empty_method.rb +10 -13
- data/lib/rubocop/cop/style/encoding.rb +5 -9
- data/lib/rubocop/cop/style/end_block.rb +4 -6
- data/lib/rubocop/cop/style/eval_with_location.rb +9 -7
- data/lib/rubocop/cop/style/even_odd.rb +7 -11
- data/lib/rubocop/cop/style/expand_path_arguments.rb +21 -20
- data/lib/rubocop/cop/style/explicit_block_argument.rb +102 -0
- data/lib/rubocop/cop/style/exponential_notation.rb +7 -9
- data/lib/rubocop/cop/style/float_division.rb +8 -11
- data/lib/rubocop/cop/style/for.rb +11 -15
- data/lib/rubocop/cop/style/format_string.rb +21 -19
- data/lib/rubocop/cop/style/format_string_token.rb +10 -12
- data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +19 -41
- data/lib/rubocop/cop/style/global_std_stream.rb +65 -0
- data/lib/rubocop/cop/style/global_vars.rb +2 -2
- data/lib/rubocop/cop/style/guard_clause.rb +5 -6
- data/lib/rubocop/cop/style/hash_as_last_array_item.rb +69 -0
- data/lib/rubocop/cop/style/hash_each_methods.rb +5 -8
- data/lib/rubocop/cop/style/hash_like_case.rb +76 -0
- data/lib/rubocop/cop/style/hash_syntax.rb +4 -3
- data/lib/rubocop/cop/style/hash_transform_keys.rb +3 -2
- data/lib/rubocop/cop/style/hash_transform_values.rb +2 -1
- data/lib/rubocop/cop/style/identical_conditional_branches.rb +2 -2
- data/lib/rubocop/cop/style/if_inside_else.rb +3 -3
- data/lib/rubocop/cop/style/if_unless_modifier.rb +18 -40
- data/lib/rubocop/cop/style/if_unless_modifier_of_if_unless.rb +3 -7
- data/lib/rubocop/cop/style/if_with_semicolon.rb +3 -6
- data/lib/rubocop/cop/style/implicit_runtime_error.rb +1 -1
- data/lib/rubocop/cop/style/infinite_loop.rb +24 -24
- data/lib/rubocop/cop/style/inline_comment.rb +3 -3
- data/lib/rubocop/cop/style/inverse_methods.rb +22 -32
- data/lib/rubocop/cop/style/lambda.rb +7 -12
- data/lib/rubocop/cop/style/lambda_call.rb +14 -13
- data/lib/rubocop/cop/style/line_end_concatenation.rb +19 -16
- data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +2 -1
- data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +16 -11
- data/lib/rubocop/cop/style/method_call_with_args_parentheses/require_parentheses.rb +4 -8
- data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +8 -7
- data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +2 -2
- data/lib/rubocop/cop/style/method_def_parentheses.rb +11 -16
- data/lib/rubocop/cop/style/min_max.rb +8 -12
- data/lib/rubocop/cop/style/missing_else.rb +11 -21
- data/lib/rubocop/cop/style/missing_respond_to_missing.rb +10 -3
- data/lib/rubocop/cop/style/mixin_grouping.rb +24 -27
- data/lib/rubocop/cop/style/mixin_usage.rb +1 -1
- data/lib/rubocop/cop/style/module_function.rb +10 -13
- data/lib/rubocop/cop/style/multiline_if_modifier.rb +3 -10
- data/lib/rubocop/cop/style/multiline_if_then.rb +4 -10
- data/lib/rubocop/cop/style/multiline_memoization.rb +14 -12
- data/lib/rubocop/cop/style/multiline_method_signature.rb +2 -2
- data/lib/rubocop/cop/style/multiline_ternary_operator.rb +4 -6
- data/lib/rubocop/cop/style/multiline_when_then.rb +7 -9
- data/lib/rubocop/cop/style/multiple_comparison.rb +1 -1
- data/lib/rubocop/cop/style/mutable_constant.rb +23 -20
- data/lib/rubocop/cop/style/nested_parenthesized_calls.rb +3 -1
- data/lib/rubocop/cop/style/numeric_predicate.rb +7 -4
- data/lib/rubocop/cop/style/optional_boolean_parameter.rb +42 -0
- data/lib/rubocop/cop/style/parallel_assignment.rb +5 -5
- data/lib/rubocop/cop/style/percent_literal_delimiters.rb +1 -1
- data/lib/rubocop/cop/style/random_with_offset.rb +1 -0
- data/lib/rubocop/cop/style/redundant_condition.rb +15 -3
- data/lib/rubocop/cop/style/redundant_exception.rb +4 -0
- data/lib/rubocop/cop/style/redundant_file_extension_in_require.rb +50 -0
- data/lib/rubocop/cop/style/redundant_regexp_escape.rb +9 -9
- data/lib/rubocop/cop/style/redundant_sort.rb +26 -12
- data/lib/rubocop/cop/style/safe_navigation.rb +4 -4
- data/lib/rubocop/cop/style/signal_exception.rb +2 -0
- data/lib/rubocop/cop/style/single_argument_dig.rb +54 -0
- data/lib/rubocop/cop/style/single_line_methods.rb +1 -1
- data/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +3 -2
- data/lib/rubocop/cop/style/string_concatenation.rb +92 -0
- data/lib/rubocop/cop/style/struct_inheritance.rb +1 -1
- data/lib/rubocop/cop/style/symbol_array.rb +1 -1
- data/lib/rubocop/cop/style/symbol_proc.rb +1 -1
- data/lib/rubocop/cop/style/trailing_method_end_statement.rb +9 -32
- data/lib/rubocop/cop/style/zero_length_predicate.rb +10 -6
- data/lib/rubocop/cop/team.rb +1 -1
- data/lib/rubocop/cop/tokens_util.rb +84 -0
- data/lib/rubocop/cop/util.rb +3 -13
- data/lib/rubocop/cop/variable_force.rb +0 -2
- data/lib/rubocop/cop/variable_force/branch.rb +1 -0
- data/lib/rubocop/cop/variable_force/variable.rb +7 -5
- data/lib/rubocop/cops_documentation_generator.rb +282 -0
- data/lib/rubocop/error.rb +1 -0
- data/lib/rubocop/file_finder.rb +12 -12
- data/lib/rubocop/formatter/disabled_config_formatter.rb +1 -1
- data/lib/rubocop/formatter/formatter_set.rb +1 -0
- data/lib/rubocop/formatter/junit_formatter.rb +1 -1
- data/lib/rubocop/options.rb +3 -3
- data/lib/rubocop/path_util.rb +17 -17
- data/lib/rubocop/rake_task.rb +1 -0
- data/lib/rubocop/result_cache.rb +12 -8
- data/lib/rubocop/rspec/expect_offense.rb +31 -5
- data/lib/rubocop/rspec/shared_contexts.rb +13 -14
- data/lib/rubocop/runner.rb +6 -7
- data/lib/rubocop/target_finder.rb +13 -10
- data/lib/rubocop/version.rb +2 -2
- metadata +28 -8
- data/lib/rubocop/cop/lint/useless_comparison.rb +0 -28
- data/lib/rubocop/cop/mixin/parser_diagnostic.rb +0 -37
- data/lib/rubocop/cop/mixin/too_many_lines.rb +0 -25
- data/lib/rubocop/cop/style/method_missing_super.rb +0 -34
@@ -14,27 +14,23 @@ module RuboCop
|
|
14
14
|
# # good
|
15
15
|
# bar = foo.minmax
|
16
16
|
# return foo.minmax
|
17
|
-
class MinMax <
|
17
|
+
class MinMax < Base
|
18
|
+
extend AutoCorrector
|
19
|
+
|
18
20
|
MSG = 'Use `%<receiver>s.minmax` instead of `%<offender>s`.'
|
19
21
|
|
20
22
|
def on_array(node)
|
21
23
|
min_max_candidate(node) do |receiver|
|
22
24
|
offender = offending_range(node)
|
23
25
|
|
24
|
-
add_offense(
|
25
|
-
|
26
|
-
end
|
27
|
-
end
|
28
|
-
alias on_return on_array
|
29
|
-
|
30
|
-
def autocorrect(node)
|
31
|
-
receiver = node.children.first.receiver
|
26
|
+
add_offense(offender, message: message(offender, receiver)) do |corrector|
|
27
|
+
receiver = node.children.first.receiver
|
32
28
|
|
33
|
-
|
34
|
-
|
35
|
-
"#{receiver.source}.minmax")
|
29
|
+
corrector.replace(offending_range(node), "#{receiver.source}.minmax")
|
30
|
+
end
|
36
31
|
end
|
37
32
|
end
|
33
|
+
alias on_return on_array
|
38
34
|
|
39
35
|
private
|
40
36
|
|
@@ -93,7 +93,7 @@ module RuboCop
|
|
93
93
|
# else
|
94
94
|
# # the content of `else` branch will be determined by Style/EmptyElse
|
95
95
|
# end
|
96
|
-
class MissingElse <
|
96
|
+
class MissingElse < Base
|
97
97
|
include OnNormalIfUnless
|
98
98
|
include ConfigurableEnforcedStyle
|
99
99
|
|
@@ -121,28 +121,18 @@ module RuboCop
|
|
121
121
|
def check(node)
|
122
122
|
return if node.else?
|
123
123
|
|
124
|
-
|
125
|
-
if empty_else_style == :empty
|
126
|
-
add_offense(node)
|
127
|
-
elsif empty_else_style == :nil
|
128
|
-
add_offense(node)
|
129
|
-
end
|
130
|
-
end
|
131
|
-
|
132
|
-
add_offense(node)
|
124
|
+
add_offense(node, message: format(message_template, type: node.type))
|
133
125
|
end
|
134
126
|
|
135
|
-
def
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
format(template, type: node.type)
|
127
|
+
def message_template
|
128
|
+
case empty_else_style
|
129
|
+
when :empty
|
130
|
+
MSG_NIL
|
131
|
+
when :nil
|
132
|
+
MSG_EMPTY
|
133
|
+
else
|
134
|
+
MSG
|
135
|
+
end
|
146
136
|
end
|
147
137
|
|
148
138
|
def if_style?
|
@@ -21,7 +21,7 @@ module RuboCop
|
|
21
21
|
# # ...
|
22
22
|
# end
|
23
23
|
#
|
24
|
-
class MissingRespondToMissing <
|
24
|
+
class MissingRespondToMissing < Base
|
25
25
|
MSG =
|
26
26
|
'When using `method_missing`, define `respond_to_missing?`.'
|
27
27
|
|
@@ -36,9 +36,16 @@ module RuboCop
|
|
36
36
|
private
|
37
37
|
|
38
38
|
def implements_respond_to_missing?(node)
|
39
|
-
node.parent.
|
40
|
-
|
39
|
+
return false unless (grand_parent = node.parent.parent)
|
40
|
+
|
41
|
+
grand_parent.each_descendant(node.type) do |descendant|
|
42
|
+
return true if descendant.method?(:respond_to_missing?)
|
43
|
+
|
44
|
+
child = descendant.children.first
|
45
|
+
return true if child.respond_to?(:method?) && child.method?(:respond_to_missing?)
|
41
46
|
end
|
47
|
+
|
48
|
+
false
|
42
49
|
end
|
43
50
|
end
|
44
51
|
end
|
@@ -30,8 +30,9 @@ module RuboCop
|
|
30
30
|
# class Foo
|
31
31
|
# extend Qox, Bar
|
32
32
|
# end
|
33
|
-
class MixinGrouping <
|
33
|
+
class MixinGrouping < Base
|
34
34
|
include ConfigurableEnforcedStyle
|
35
|
+
extend AutoCorrector
|
35
36
|
|
36
37
|
MIXIN_METHODS = %i[extend include prepend].freeze
|
37
38
|
MSG = 'Put `%<mixin>s` mixins in %<suffix>s.'
|
@@ -47,23 +48,6 @@ module RuboCop
|
|
47
48
|
|
48
49
|
alias on_module on_class
|
49
50
|
|
50
|
-
def autocorrect(node)
|
51
|
-
range = node.loc.expression
|
52
|
-
if separated_style?
|
53
|
-
correction = separate_mixins(node)
|
54
|
-
else
|
55
|
-
mixins = sibling_mixins(node)
|
56
|
-
if node == mixins.first
|
57
|
-
correction = group_mixins(node, mixins)
|
58
|
-
else
|
59
|
-
range = range_to_remove_for_subsequent_mixin(mixins, node)
|
60
|
-
correction = ''
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
->(corrector) { corrector.replace(range, correction) }
|
65
|
-
end
|
66
|
-
|
67
51
|
private
|
68
52
|
|
69
53
|
def range_to_remove_for_subsequent_mixin(mixins, node)
|
@@ -89,13 +73,33 @@ module RuboCop
|
|
89
73
|
def check_grouped_style(send_node)
|
90
74
|
return if sibling_mixins(send_node).size == 1
|
91
75
|
|
92
|
-
|
76
|
+
message = format(MSG, mixin: send_node.method_name, suffix: 'a single statement')
|
77
|
+
|
78
|
+
add_offense(send_node, message: message) do |corrector|
|
79
|
+
range = send_node.loc.expression
|
80
|
+
mixins = sibling_mixins(send_node)
|
81
|
+
if send_node == mixins.first
|
82
|
+
correction = group_mixins(send_node, mixins)
|
83
|
+
else
|
84
|
+
range = range_to_remove_for_subsequent_mixin(mixins, send_node)
|
85
|
+
correction = ''
|
86
|
+
end
|
87
|
+
|
88
|
+
corrector.replace(range, correction)
|
89
|
+
end
|
93
90
|
end
|
94
91
|
|
95
92
|
def check_separated_style(send_node)
|
96
93
|
return if send_node.arguments.one?
|
97
94
|
|
98
|
-
|
95
|
+
message = format(MSG, mixin: send_node.method_name, suffix: 'separate statements')
|
96
|
+
|
97
|
+
add_offense(send_node, message: message) do |corrector|
|
98
|
+
range = send_node.loc.expression
|
99
|
+
correction = separate_mixins(send_node)
|
100
|
+
|
101
|
+
corrector.replace(range, correction)
|
102
|
+
end
|
99
103
|
end
|
100
104
|
|
101
105
|
def sibling_mixins(send_node)
|
@@ -107,13 +111,6 @@ module RuboCop
|
|
107
111
|
end
|
108
112
|
end
|
109
113
|
|
110
|
-
def message(send_node)
|
111
|
-
suffix =
|
112
|
-
separated_style? ? 'separate statements' : 'a single statement'
|
113
|
-
|
114
|
-
format(MSG, mixin: send_node.method_name, suffix: suffix)
|
115
|
-
end
|
116
|
-
|
117
114
|
def grouped_style?
|
118
115
|
style == :grouped
|
119
116
|
end
|
@@ -71,8 +71,9 @@ module RuboCop
|
|
71
71
|
#
|
72
72
|
# These offenses are not safe to auto-correct since there are different
|
73
73
|
# implications to each approach.
|
74
|
-
class ModuleFunction <
|
74
|
+
class ModuleFunction < Base
|
75
75
|
include ConfigurableEnforcedStyle
|
76
|
+
extend AutoCorrector
|
76
77
|
|
77
78
|
MODULE_FUNCTION_MSG =
|
78
79
|
'Use `module_function` instead of `extend self`.'
|
@@ -89,18 +90,14 @@ module RuboCop
|
|
89
90
|
return unless node.body&.begin_type?
|
90
91
|
|
91
92
|
each_wrong_style(node.body.children) do |child_node|
|
92
|
-
add_offense(child_node)
|
93
|
-
|
94
|
-
end
|
95
|
-
|
96
|
-
def autocorrect(node)
|
97
|
-
return if style == :forbidden
|
93
|
+
add_offense(child_node) do |corrector|
|
94
|
+
next if style == :forbidden
|
98
95
|
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
96
|
+
if extend_self_node?(child_node)
|
97
|
+
corrector.replace(child_node, 'module_function')
|
98
|
+
else
|
99
|
+
corrector.replace(child_node, 'extend self')
|
100
|
+
end
|
104
101
|
end
|
105
102
|
end
|
106
103
|
end
|
@@ -139,7 +136,7 @@ module RuboCop
|
|
139
136
|
end
|
140
137
|
end
|
141
138
|
|
142
|
-
def message(
|
139
|
+
def message(_range)
|
143
140
|
return FORBIDDEN_MSG if style == :forbidden
|
144
141
|
|
145
142
|
style == :module_function ? MODULE_FUNCTION_MSG : EXTEND_SELF_MSG
|
@@ -14,9 +14,10 @@ module RuboCop
|
|
14
14
|
#
|
15
15
|
# # good
|
16
16
|
# { result: 'ok' } if cond
|
17
|
-
class MultilineIfModifier <
|
17
|
+
class MultilineIfModifier < Base
|
18
18
|
include StatementModifier
|
19
19
|
include Alignment
|
20
|
+
extend AutoCorrector
|
20
21
|
|
21
22
|
MSG = 'Favor a normal %<keyword>s-statement over a modifier' \
|
22
23
|
' clause in a multiline statement.'
|
@@ -24,21 +25,13 @@ module RuboCop
|
|
24
25
|
def on_if(node)
|
25
26
|
return unless node.modifier_form? && node.body.multiline?
|
26
27
|
|
27
|
-
add_offense(node)
|
28
|
-
end
|
29
|
-
|
30
|
-
def autocorrect(node)
|
31
|
-
lambda do |corrector|
|
28
|
+
add_offense(node, message: format(MSG, keyword: node.keyword)) do |corrector|
|
32
29
|
corrector.replace(node, to_normal_if(node))
|
33
30
|
end
|
34
31
|
end
|
35
32
|
|
36
33
|
private
|
37
34
|
|
38
|
-
def message(node)
|
39
|
-
format(MSG, keyword: node.keyword)
|
40
|
-
end
|
41
|
-
|
42
35
|
def to_normal_if(node)
|
43
36
|
indented_body = indented_body(node.body, node)
|
44
37
|
condition = "#{node.keyword} #{node.condition.source}"
|
@@ -16,9 +16,10 @@ module RuboCop
|
|
16
16
|
# if cond then a
|
17
17
|
# elsif cond then b
|
18
18
|
# end
|
19
|
-
class MultilineIfThen <
|
19
|
+
class MultilineIfThen < Base
|
20
20
|
include OnNormalIfUnless
|
21
21
|
include RangeHelp
|
22
|
+
extend AutoCorrector
|
22
23
|
|
23
24
|
NON_MODIFIER_THEN = /then\s*(#.*)?$/.freeze
|
24
25
|
|
@@ -27,15 +28,8 @@ module RuboCop
|
|
27
28
|
def on_normal_if_unless(node)
|
28
29
|
return unless non_modifier_then?(node)
|
29
30
|
|
30
|
-
add_offense(node,
|
31
|
-
|
32
|
-
end
|
33
|
-
|
34
|
-
def autocorrect(node)
|
35
|
-
lambda do |corrector|
|
36
|
-
corrector.remove(
|
37
|
-
range_with_surrounding_space(range: node.loc.begin, side: :left)
|
38
|
-
)
|
31
|
+
add_offense(node.loc.begin, message: format(MSG, keyword: node.keyword)) do |corrector|
|
32
|
+
corrector.remove(range_with_surrounding_space(range: node.loc.begin, side: :left))
|
39
33
|
end
|
40
34
|
end
|
41
35
|
|
@@ -30,30 +30,32 @@ module RuboCop
|
|
30
30
|
# bar
|
31
31
|
# baz
|
32
32
|
# )
|
33
|
-
class MultilineMemoization <
|
33
|
+
class MultilineMemoization < Base
|
34
34
|
include ConfigurableEnforcedStyle
|
35
|
+
extend AutoCorrector
|
35
36
|
|
36
|
-
|
37
|
+
KEYWORD_MSG = 'Wrap multiline memoization blocks in `begin` and `end`.'
|
38
|
+
BRACES_MSG = 'Wrap multiline memoization blocks in `(` and `)`.'
|
37
39
|
|
38
40
|
def on_or_asgn(node)
|
39
41
|
_lhs, rhs = *node
|
40
42
|
|
41
43
|
return unless bad_rhs?(rhs)
|
42
44
|
|
43
|
-
add_offense(
|
44
|
-
end
|
45
|
-
|
46
|
-
def autocorrect(node)
|
47
|
-
lambda do |corrector|
|
45
|
+
add_offense(node.source_range) do |corrector|
|
48
46
|
if style == :keyword
|
49
|
-
keyword_autocorrect(
|
47
|
+
keyword_autocorrect(rhs, corrector)
|
50
48
|
else
|
51
|
-
corrector.replace(
|
52
|
-
corrector.replace(
|
49
|
+
corrector.replace(rhs.loc.begin, '(')
|
50
|
+
corrector.replace(rhs.loc.end, ')')
|
53
51
|
end
|
54
52
|
end
|
55
53
|
end
|
56
54
|
|
55
|
+
def message(_node)
|
56
|
+
style == :braces ? BRACES_MSG : KEYWORD_MSG
|
57
|
+
end
|
58
|
+
|
57
59
|
private
|
58
60
|
|
59
61
|
def bad_rhs?(rhs)
|
@@ -77,13 +79,13 @@ module RuboCop
|
|
77
79
|
if node_buf.source[node.loc.begin.end_pos] == "\n"
|
78
80
|
'begin'
|
79
81
|
else
|
80
|
-
"begin\n
|
82
|
+
"begin\n#{' ' * (node.loc.column + indent)}"
|
81
83
|
end
|
82
84
|
end
|
83
85
|
|
84
86
|
def keyword_end_str(node, node_buf)
|
85
87
|
if /[^\s)]/.match?(node_buf.source_line(node.loc.end.line))
|
86
|
-
"\n
|
88
|
+
"\n#{' ' * node.loc.column}end"
|
87
89
|
else
|
88
90
|
'end'
|
89
91
|
end
|
@@ -18,7 +18,7 @@ module RuboCop
|
|
18
18
|
# baz)
|
19
19
|
# end
|
20
20
|
#
|
21
|
-
class MultilineMethodSignature <
|
21
|
+
class MultilineMethodSignature < Base
|
22
22
|
MSG = 'Avoid multi-line method signatures.'
|
23
23
|
|
24
24
|
def on_def(node)
|
@@ -53,7 +53,7 @@ module RuboCop
|
|
53
53
|
end
|
54
54
|
|
55
55
|
def max_line_length
|
56
|
-
config.for_cop('Layout/LineLength')['Max'] ||
|
56
|
+
config.for_cop('Layout/LineLength')['Max'] || 120
|
57
57
|
end
|
58
58
|
end
|
59
59
|
end
|
@@ -22,18 +22,16 @@ module RuboCop
|
|
22
22
|
# else
|
23
23
|
# c
|
24
24
|
# end
|
25
|
-
class MultilineTernaryOperator <
|
25
|
+
class MultilineTernaryOperator < Base
|
26
|
+
extend AutoCorrector
|
27
|
+
|
26
28
|
MSG = 'Avoid multi-line ternary operators, ' \
|
27
29
|
'use `if` or `unless` instead.'
|
28
30
|
|
29
31
|
def on_if(node)
|
30
32
|
return unless node.ternary? && node.multiline?
|
31
33
|
|
32
|
-
add_offense(node)
|
33
|
-
end
|
34
|
-
|
35
|
-
def autocorrect(node)
|
36
|
-
lambda do |corrector|
|
34
|
+
add_offense(node) do |corrector|
|
37
35
|
corrector.replace(node, <<~RUBY.chop)
|
38
36
|
if #{node.condition.source}
|
39
37
|
#{node.if_branch.source}
|
@@ -28,8 +28,9 @@ module RuboCop
|
|
28
28
|
# arg2)
|
29
29
|
# end
|
30
30
|
#
|
31
|
-
class MultilineWhenThen <
|
31
|
+
class MultilineWhenThen < Base
|
32
32
|
include RangeHelp
|
33
|
+
extend AutoCorrector
|
33
34
|
|
34
35
|
MSG = 'Do not use `then` for multiline `when` statement.'
|
35
36
|
|
@@ -46,19 +47,16 @@ module RuboCop
|
|
46
47
|
# With more than one statements after then, there's not offense
|
47
48
|
return if accept_node_type?(node.body)
|
48
49
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
def autocorrect(node)
|
53
|
-
lambda do |corrector|
|
50
|
+
range = node.loc.begin
|
51
|
+
add_offense(range) do |corrector|
|
54
52
|
corrector.remove(
|
55
|
-
range_with_surrounding_space(
|
56
|
-
range: node.loc.begin, side: :left, newlines: false
|
57
|
-
)
|
53
|
+
range_with_surrounding_space(range: range, side: :left, newlines: false)
|
58
54
|
)
|
59
55
|
end
|
60
56
|
end
|
61
57
|
|
58
|
+
private
|
59
|
+
|
62
60
|
def require_then?(when_node)
|
63
61
|
return false unless when_node.body
|
64
62
|
|