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
@@ -20,8 +20,9 @@ module RuboCop
|
|
20
20
|
# # good
|
21
21
|
#
|
22
22
|
# %w(foo bar)
|
23
|
-
class PercentStringArray <
|
23
|
+
class PercentStringArray < Base
|
24
24
|
include PercentLiteral
|
25
|
+
extend AutoCorrector
|
25
26
|
|
26
27
|
QUOTES_AND_COMMAS = [/,$/, /^'.*'$/, /^".*"$/].freeze
|
27
28
|
LEADING_QUOTE = /^['"]/.freeze
|
@@ -37,24 +38,24 @@ module RuboCop
|
|
37
38
|
def on_percent_literal(node)
|
38
39
|
return unless contains_quotes_or_commas?(node)
|
39
40
|
|
40
|
-
add_offense(node)
|
41
|
+
add_offense(node) do |corrector|
|
42
|
+
autocorrect(corrector, node)
|
43
|
+
end
|
41
44
|
end
|
42
45
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
46
|
+
private
|
47
|
+
|
48
|
+
def autocorrect(corrector, node)
|
49
|
+
node.each_value do |value|
|
50
|
+
range = value.loc.expression
|
47
51
|
|
48
|
-
|
49
|
-
|
52
|
+
match = range.source.match(TRAILING_QUOTE)
|
53
|
+
corrector.remove_trailing(range, match[0].length) if match
|
50
54
|
|
51
|
-
|
52
|
-
end
|
55
|
+
corrector.remove_leading(range, 1) if LEADING_QUOTE.match?(range.source)
|
53
56
|
end
|
54
57
|
end
|
55
58
|
|
56
|
-
private
|
57
|
-
|
58
59
|
def contains_quotes_or_commas?(node)
|
59
60
|
node.values.any? do |value|
|
60
61
|
literal = value.children.first.to_s.scrub
|
@@ -20,8 +20,9 @@ module RuboCop
|
|
20
20
|
# # good
|
21
21
|
#
|
22
22
|
# %i(foo bar)
|
23
|
-
class PercentSymbolArray <
|
23
|
+
class PercentSymbolArray < Base
|
24
24
|
include PercentLiteral
|
25
|
+
extend AutoCorrector
|
25
26
|
|
26
27
|
MSG = "Within `%i`/`%I`, ':' and ',' are unnecessary and may be " \
|
27
28
|
'unwanted in the resulting symbols.'
|
@@ -33,23 +34,23 @@ module RuboCop
|
|
33
34
|
def on_percent_literal(node)
|
34
35
|
return unless contains_colons_or_commas?(node)
|
35
36
|
|
36
|
-
add_offense(node)
|
37
|
+
add_offense(node) do |corrector|
|
38
|
+
autocorrect(corrector, node)
|
39
|
+
end
|
37
40
|
end
|
38
41
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
42
|
+
private
|
43
|
+
|
44
|
+
def autocorrect(corrector, node)
|
45
|
+
node.children.each do |child|
|
46
|
+
range = child.loc.expression
|
43
47
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
end
|
48
|
+
corrector.remove_trailing(range, 1) if range.source.end_with?(',')
|
49
|
+
corrector.remove_leading(range, 1) if
|
50
|
+
range.source.start_with?(':')
|
48
51
|
end
|
49
52
|
end
|
50
53
|
|
51
|
-
private
|
52
|
-
|
53
54
|
def contains_colons_or_commas?(node)
|
54
55
|
node.children.any? do |child|
|
55
56
|
literal = child.children.first.to_s
|
@@ -27,7 +27,9 @@ module RuboCop
|
|
27
27
|
# raise Exception # This exception means `Gem::Exception`.
|
28
28
|
# end
|
29
29
|
# end
|
30
|
-
class RaiseException <
|
30
|
+
class RaiseException < Base
|
31
|
+
extend AutoCorrector
|
32
|
+
|
31
33
|
MSG = 'Use `StandardError` over `Exception`.'
|
32
34
|
|
33
35
|
def_node_matcher :exception?, <<~PATTERN
|
@@ -44,21 +46,21 @@ module RuboCop
|
|
44
46
|
exception_new_with_message?(node, &check(node))
|
45
47
|
end
|
46
48
|
|
47
|
-
def autocorrect(node)
|
48
|
-
lambda do |corrector|
|
49
|
-
exception_class = node.children.first&.cbase_type? ? '::StandardError' : 'StandardError'
|
50
|
-
|
51
|
-
corrector.replace(node, exception_class)
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
49
|
private
|
56
50
|
|
57
51
|
def check(node)
|
58
52
|
lambda do |exception_class, cbase|
|
59
53
|
return if cbase.nil? && implicit_namespace?(node)
|
60
54
|
|
61
|
-
add_offense(exception_class)
|
55
|
+
add_offense(exception_class) do |corrector|
|
56
|
+
prefer_exception = if exception_class.children.first&.cbase_type?
|
57
|
+
'::StandardError'
|
58
|
+
else
|
59
|
+
'StandardError'
|
60
|
+
end
|
61
|
+
|
62
|
+
corrector.replace(exception_class, prefer_exception)
|
63
|
+
end
|
62
64
|
end
|
63
65
|
end
|
64
66
|
|
@@ -20,7 +20,7 @@ module RuboCop
|
|
20
20
|
# # good
|
21
21
|
#
|
22
22
|
# 0 # just use 0 instead
|
23
|
-
class RandOne <
|
23
|
+
class RandOne < Base
|
24
24
|
MSG = '`%<method>s` always returns `0`. ' \
|
25
25
|
'Perhaps you meant `rand(2)` or `rand`?'
|
26
26
|
|
@@ -29,7 +29,7 @@ module RuboCop
|
|
29
29
|
PATTERN
|
30
30
|
|
31
31
|
def on_send(node)
|
32
|
-
return unless rand_one?(node)
|
32
|
+
return unless node.method?(:rand) && rand_one?(node)
|
33
33
|
|
34
34
|
add_offense(node)
|
35
35
|
end
|
@@ -41,13 +41,12 @@ module RuboCop
|
|
41
41
|
def on_new_investigation
|
42
42
|
return unless offenses_to_check
|
43
43
|
|
44
|
-
comments = processed_source.comments
|
45
44
|
cop_disabled_line_ranges = processed_source.disabled_line_ranges
|
46
45
|
|
47
46
|
redundant_cops = Hash.new { |h, k| h[k] = Set.new }
|
48
47
|
|
49
48
|
each_redundant_disable(cop_disabled_line_ranges,
|
50
|
-
offenses_to_check
|
49
|
+
offenses_to_check) do |comment, redundant_cop|
|
51
50
|
redundant_cops[comment].add(redundant_cop)
|
52
51
|
end
|
53
52
|
|
@@ -88,25 +87,25 @@ module RuboCop
|
|
88
87
|
newlines: false)
|
89
88
|
end
|
90
89
|
|
91
|
-
def each_redundant_disable(cop_disabled_line_ranges, offenses,
|
90
|
+
def each_redundant_disable(cop_disabled_line_ranges, offenses,
|
92
91
|
&block)
|
93
92
|
disabled_ranges = cop_disabled_line_ranges[COP_NAME] || [0..0]
|
94
93
|
|
95
94
|
cop_disabled_line_ranges.each do |cop, line_ranges|
|
96
95
|
each_already_disabled(line_ranges,
|
97
|
-
disabled_ranges
|
96
|
+
disabled_ranges) do |comment|
|
98
97
|
yield comment, cop
|
99
98
|
end
|
100
99
|
|
101
|
-
each_line_range(line_ranges, disabled_ranges, offenses,
|
100
|
+
each_line_range(line_ranges, disabled_ranges, offenses,
|
102
101
|
cop, &block)
|
103
102
|
end
|
104
103
|
end
|
105
104
|
|
106
|
-
def each_line_range(line_ranges, disabled_ranges, offenses,
|
105
|
+
def each_line_range(line_ranges, disabled_ranges, offenses,
|
107
106
|
cop)
|
108
107
|
line_ranges.each_with_index do |line_range, ix|
|
109
|
-
comment =
|
108
|
+
comment = processed_source.comment_at_line(line_range.begin)
|
110
109
|
next if ignore_offense?(disabled_ranges, line_range)
|
111
110
|
|
112
111
|
redundant_cop = find_redundant(comment, offenses, cop, line_range,
|
@@ -115,7 +114,7 @@ module RuboCop
|
|
115
114
|
end
|
116
115
|
end
|
117
116
|
|
118
|
-
def each_already_disabled(line_ranges, disabled_ranges
|
117
|
+
def each_already_disabled(line_ranges, disabled_ranges)
|
119
118
|
line_ranges.each_cons(2) do |previous_range, range|
|
120
119
|
next if ignore_offense?(disabled_ranges, range)
|
121
120
|
next if previous_range.end != range.begin
|
@@ -124,18 +123,16 @@ module RuboCop
|
|
124
123
|
# the end of the previous range, it means that the cop was
|
125
124
|
# already disabled by an earlier comment. So it's redundant
|
126
125
|
# whether there are offenses or not.
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
end
|
134
|
-
yield redundant_comment if redundant_comment
|
126
|
+
comment = processed_source.comment_at_line(range.begin)
|
127
|
+
|
128
|
+
# Comments disabling all cops don't count since it's reasonable
|
129
|
+
# to disable a few select cops first and then all cops further
|
130
|
+
# down in the code.
|
131
|
+
yield comment if comment && !all_disabled?(comment)
|
135
132
|
end
|
136
133
|
end
|
137
134
|
|
138
|
-
# rubocop:todo Metrics/CyclomaticComplexity
|
135
|
+
# rubocop:todo Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
139
136
|
def find_redundant(comment, offenses, cop, line_range, next_line_range)
|
140
137
|
if all_disabled?(comment)
|
141
138
|
# If there's a disable all comment followed by a comment
|
@@ -153,7 +150,7 @@ module RuboCop
|
|
153
150
|
cop if cop_offenses.none? { |o| line_range.cover?(o.line) }
|
154
151
|
end
|
155
152
|
end
|
156
|
-
# rubocop:enable Metrics/CyclomaticComplexity
|
153
|
+
# rubocop:enable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
157
154
|
|
158
155
|
def all_disabled?(comment)
|
159
156
|
/rubocop\s*:\s*(?:disable|todo)\s+all\b/.match?(comment.text)
|
@@ -250,7 +247,7 @@ module RuboCop
|
|
250
247
|
end
|
251
248
|
|
252
249
|
def all_cop_names
|
253
|
-
@all_cop_names ||=
|
250
|
+
@all_cop_names ||= Registry.global.names
|
254
251
|
end
|
255
252
|
|
256
253
|
def ends_its_line?(range)
|
@@ -34,28 +34,24 @@ module RuboCop
|
|
34
34
|
# foo = "1"
|
35
35
|
# # rubocop:enable all
|
36
36
|
# baz
|
37
|
-
class RedundantCopEnableDirective <
|
37
|
+
class RedundantCopEnableDirective < Base
|
38
38
|
include RangeHelp
|
39
39
|
include SurroundingSpace
|
40
|
+
extend AutoCorrector
|
40
41
|
|
41
42
|
MSG = 'Unnecessary enabling of %<cop>s.'
|
42
43
|
|
43
|
-
def
|
44
|
+
def on_new_investigation
|
44
45
|
return if processed_source.blank?
|
45
46
|
|
46
47
|
offenses = processed_source.comment_config.extra_enabled_comments
|
47
48
|
offenses.each do |comment, name|
|
48
49
|
add_offense(
|
49
|
-
|
50
|
-
location: range_of_offense(comment, name),
|
50
|
+
range_of_offense(comment, name),
|
51
51
|
message: format(MSG, cop: all_or_name(name))
|
52
|
-
)
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
def autocorrect(comment_and_name)
|
57
|
-
lambda do |corrector|
|
58
|
-
corrector.remove(range_with_comma(*comment_and_name))
|
52
|
+
) do |corrector|
|
53
|
+
corrector.remove(range_with_comma(comment, name))
|
54
|
+
end
|
59
55
|
end
|
60
56
|
end
|
61
57
|
|
@@ -21,8 +21,9 @@ module RuboCop
|
|
21
21
|
#
|
22
22
|
# # good
|
23
23
|
# require 'unloaded_feature'
|
24
|
-
class RedundantRequireStatement <
|
24
|
+
class RedundantRequireStatement < Base
|
25
25
|
include RangeHelp
|
26
|
+
extend AutoCorrector
|
26
27
|
|
27
28
|
MSG = 'Remove unnecessary `require` statement.'
|
28
29
|
|
@@ -34,13 +35,9 @@ module RuboCop
|
|
34
35
|
def on_send(node)
|
35
36
|
return unless unnecessary_require_statement?(node)
|
36
37
|
|
37
|
-
add_offense(node)
|
38
|
-
|
38
|
+
add_offense(node) do |corrector|
|
39
|
+
range = range_with_surrounding_space(range: node.loc.expression, side: :right)
|
39
40
|
|
40
|
-
def autocorrect(node)
|
41
|
-
lambda do |corrector|
|
42
|
-
range = range_with_surrounding_space(range: node.loc.expression,
|
43
|
-
side: :right)
|
44
41
|
corrector.remove(range)
|
45
42
|
end
|
46
43
|
end
|
@@ -49,7 +49,9 @@ module RuboCop
|
|
49
49
|
# else
|
50
50
|
# baz
|
51
51
|
# end
|
52
|
-
class RedundantSplatExpansion <
|
52
|
+
class RedundantSplatExpansion < Base
|
53
|
+
extend AutoCorrector
|
54
|
+
|
53
55
|
MSG = 'Replace splat expansion with comma separated values.'
|
54
56
|
ARRAY_PARAM_MSG = 'Pass array contents as separate arguments.'
|
55
57
|
PERCENT_W = '%w'
|
@@ -73,23 +75,25 @@ module RuboCop
|
|
73
75
|
redundant_splat_expansion(node) do
|
74
76
|
if array_splat?(node) &&
|
75
77
|
(method_argument?(node) || part_of_an_array?(node))
|
76
|
-
add_offense(node, message: ARRAY_PARAM_MSG)
|
78
|
+
add_offense(node, message: ARRAY_PARAM_MSG) do |corrector|
|
79
|
+
autocorrect(corrector, node)
|
80
|
+
end
|
77
81
|
else
|
78
|
-
add_offense(node)
|
82
|
+
add_offense(node) do |corrector|
|
83
|
+
autocorrect(corrector, node)
|
84
|
+
end
|
79
85
|
end
|
80
86
|
end
|
81
87
|
end
|
82
88
|
|
83
|
-
|
89
|
+
private
|
90
|
+
|
91
|
+
def autocorrect(corrector, node)
|
84
92
|
range, content = replacement_range_and_content(node)
|
85
93
|
|
86
|
-
|
87
|
-
corrector.replace(range, content)
|
88
|
-
end
|
94
|
+
corrector.replace(range, content)
|
89
95
|
end
|
90
96
|
|
91
|
-
private
|
92
|
-
|
93
97
|
def redundant_splat_expansion(node)
|
94
98
|
literal_expansion(node) do |expanded_item|
|
95
99
|
if expanded_item.send_type?
|
@@ -17,8 +17,9 @@ module RuboCop
|
|
17
17
|
# # good
|
18
18
|
#
|
19
19
|
# "result is #{something}"
|
20
|
-
class RedundantStringCoercion <
|
20
|
+
class RedundantStringCoercion < Base
|
21
21
|
include Interpolation
|
22
|
+
extend AutoCorrector
|
22
23
|
|
23
24
|
MSG_DEFAULT = 'Redundant use of `Object#to_s` in interpolation.'
|
24
25
|
MSG_SELF = 'Use `self` instead of `Object#to_s` in ' \
|
@@ -31,14 +32,12 @@ module RuboCop
|
|
31
32
|
|
32
33
|
return unless to_s_without_args?(final_node)
|
33
34
|
|
34
|
-
|
35
|
-
end
|
35
|
+
message = final_node.receiver ? MSG_DEFAULT : MSG_SELF
|
36
36
|
|
37
|
-
|
38
|
-
|
39
|
-
receiver = node.receiver
|
37
|
+
add_offense(final_node.loc.selector, message: message) do |corrector|
|
38
|
+
receiver = final_node.receiver
|
40
39
|
corrector.replace(
|
41
|
-
|
40
|
+
final_node,
|
42
41
|
if receiver
|
43
42
|
receiver.source
|
44
43
|
else
|
@@ -47,12 +46,6 @@ module RuboCop
|
|
47
46
|
)
|
48
47
|
end
|
49
48
|
end
|
50
|
-
|
51
|
-
private
|
52
|
-
|
53
|
-
def message(node)
|
54
|
-
node.receiver ? MSG_DEFAULT : MSG_SELF
|
55
|
-
end
|
56
49
|
end
|
57
50
|
end
|
58
51
|
end
|
@@ -26,8 +26,9 @@ module RuboCop
|
|
26
26
|
# v
|
27
27
|
# end
|
28
28
|
#
|
29
|
-
class RedundantWithIndex <
|
29
|
+
class RedundantWithIndex < Base
|
30
30
|
include RangeHelp
|
31
|
+
extend AutoCorrector
|
31
32
|
|
32
33
|
MSG_EACH_WITH_INDEX = 'Use `each` instead of `each_with_index`.'
|
33
34
|
MSG_WITH_INDEX = 'Remove redundant `with_index`.'
|
@@ -42,20 +43,16 @@ module RuboCop
|
|
42
43
|
PATTERN
|
43
44
|
|
44
45
|
def on_block(node)
|
45
|
-
redundant_with_index?(node)
|
46
|
-
|
47
|
-
|
48
|
-
end
|
46
|
+
return unless (send = redundant_with_index?(node))
|
47
|
+
|
48
|
+
range = with_index_range(send)
|
49
49
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
corrector.remove(with_index_range(send))
|
57
|
-
corrector.remove(send.loc.dot)
|
58
|
-
end
|
50
|
+
add_offense(range, message: message(send)) do |corrector|
|
51
|
+
if send.method?(:each_with_index)
|
52
|
+
corrector.replace(send.loc.selector, 'each')
|
53
|
+
else
|
54
|
+
corrector.remove(range)
|
55
|
+
corrector.remove(send.loc.dot)
|
59
56
|
end
|
60
57
|
end
|
61
58
|
end
|
@@ -26,8 +26,9 @@ module RuboCop
|
|
26
26
|
# v
|
27
27
|
# end
|
28
28
|
#
|
29
|
-
class RedundantWithObject <
|
29
|
+
class RedundantWithObject < Base
|
30
30
|
include RangeHelp
|
31
|
+
extend AutoCorrector
|
31
32
|
|
32
33
|
MSG_EACH_WITH_OBJECT = 'Use `each` instead of `each_with_object`.'
|
33
34
|
|
@@ -43,20 +44,16 @@ module RuboCop
|
|
43
44
|
PATTERN
|
44
45
|
|
45
46
|
def on_block(node)
|
46
|
-
redundant_with_object?(node)
|
47
|
-
|
48
|
-
|
49
|
-
end
|
47
|
+
return unless (send = redundant_with_object?(node))
|
48
|
+
|
49
|
+
range = with_object_range(send)
|
50
50
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
corrector.remove(with_object_range(send))
|
58
|
-
corrector.remove(send.loc.dot)
|
59
|
-
end
|
51
|
+
add_offense(range, message: message(send)) do |corrector|
|
52
|
+
if send.method?(:each_with_object)
|
53
|
+
corrector.replace(range, 'each')
|
54
|
+
else
|
55
|
+
corrector.remove(range)
|
56
|
+
corrector.remove(send.loc.dot)
|
60
57
|
end
|
61
58
|
end
|
62
59
|
end
|