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
data/lib/rubocop/cli.rb
CHANGED
@@ -75,7 +75,7 @@ module RuboCop
|
|
75
75
|
|
76
76
|
def validate_options_vs_config
|
77
77
|
if @options[:parallel] &&
|
78
|
-
!@config_store.
|
78
|
+
!@config_store.for_pwd.for_all_cops['UseCache']
|
79
79
|
raise OptionArgumentError, '-P/--parallel uses caching to speed up ' \
|
80
80
|
'execution, so combining with AllCops: ' \
|
81
81
|
'UseCache: false is not allowed.'
|
@@ -121,7 +121,7 @@ module RuboCop
|
|
121
121
|
if @options[:auto_gen_config]
|
122
122
|
formatter = 'autogenconf'
|
123
123
|
else
|
124
|
-
cfg = @config_store.
|
124
|
+
cfg = @config_store.for_pwd.for_all_cops
|
125
125
|
formatter = cfg['DefaultFormatter'] || 'progress'
|
126
126
|
end
|
127
127
|
[[formatter, @options[:output_path]]]
|
@@ -27,10 +27,10 @@ module RuboCop
|
|
27
27
|
private
|
28
28
|
|
29
29
|
def maybe_run_line_length_cop
|
30
|
-
if !line_length_enabled?(@config_store.
|
30
|
+
if !line_length_enabled?(@config_store.for_pwd)
|
31
31
|
skip_line_length_cop(PHASE_1_DISABLED)
|
32
32
|
elsif !same_max_line_length?(
|
33
|
-
@config_store.
|
33
|
+
@config_store.for_pwd, ConfigLoader.default_configuration
|
34
34
|
)
|
35
35
|
skip_line_length_cop(PHASE_1_OVERRIDDEN)
|
36
36
|
else
|
@@ -113,7 +113,7 @@ module RuboCop
|
|
113
113
|
return if files.include?(AUTO_GENERATED_FILE)
|
114
114
|
|
115
115
|
files.unshift(AUTO_GENERATED_FILE)
|
116
|
-
file_string = "\n -
|
116
|
+
file_string = "\n - #{files.join("\n - ")}" if files.size > 1
|
117
117
|
rubocop_yml_contents = existing_configuration(config_file)
|
118
118
|
end
|
119
119
|
|
@@ -22,7 +22,7 @@ module RuboCop
|
|
22
22
|
private
|
23
23
|
|
24
24
|
def print_available_cops
|
25
|
-
registry = Cop::
|
25
|
+
registry = Cop::Registry.global
|
26
26
|
show_all = @options[:show_cops].empty?
|
27
27
|
|
28
28
|
if show_all
|
@@ -68,7 +68,7 @@ module RuboCop
|
|
68
68
|
|
69
69
|
def config_lines(cop)
|
70
70
|
cnf = @config.for_cop(cop)
|
71
|
-
cnf.to_yaml.lines.to_a.drop(1).map { |line|
|
71
|
+
cnf.to_yaml.lines.to_a.drop(1).map { |line| " #{line}" }
|
72
72
|
end
|
73
73
|
end
|
74
74
|
end
|
@@ -8,8 +8,8 @@ module RuboCop
|
|
8
8
|
self.command_name = :version
|
9
9
|
|
10
10
|
def run
|
11
|
-
puts RuboCop::Version.version(false) if @options[:version]
|
12
|
-
puts RuboCop::Version.version(true) if @options[:verbose_version]
|
11
|
+
puts RuboCop::Version.version(debug: false) if @options[:version]
|
12
|
+
puts RuboCop::Version.version(debug: true) if @options[:verbose_version]
|
13
13
|
end
|
14
14
|
end
|
15
15
|
end
|
@@ -11,7 +11,7 @@ module RuboCop
|
|
11
11
|
COPS_PATTERN = "(all|#{COP_NAMES_PATTERN})"
|
12
12
|
|
13
13
|
COMMENT_DIRECTIVE_REGEXP = Regexp.new(
|
14
|
-
|
14
|
+
"# rubocop : ((?:disable|enable|todo))\\b #{COPS_PATTERN}"
|
15
15
|
.gsub(' ', '\s*')
|
16
16
|
)
|
17
17
|
|
@@ -55,7 +55,7 @@ module RuboCop
|
|
55
55
|
extras
|
56
56
|
end
|
57
57
|
|
58
|
-
def analyze
|
58
|
+
def analyze # rubocop:todo Metrics/AbcSize
|
59
59
|
analyses = Hash.new { |hash, key| hash[key] = CopAnalysis.new([], nil) }
|
60
60
|
|
61
61
|
each_mentioned_cop do |cop_name, disabled, line, single_line|
|
@@ -128,9 +128,7 @@ module RuboCop
|
|
128
128
|
end
|
129
129
|
|
130
130
|
def each_directive
|
131
|
-
|
132
|
-
|
133
|
-
processed_source.each_comment do |comment|
|
131
|
+
processed_source.comments.each do |comment|
|
134
132
|
directive = directive_parts(comment)
|
135
133
|
next unless directive
|
136
134
|
|
@@ -153,11 +151,11 @@ module RuboCop
|
|
153
151
|
end
|
154
152
|
|
155
153
|
def qualified_cop_name(cop_name)
|
156
|
-
Cop::
|
154
|
+
Cop::Registry.qualified_cop_name(cop_name.strip, processed_source.file_path)
|
157
155
|
end
|
158
156
|
|
159
157
|
def all_cop_names
|
160
|
-
@all_cop_names ||= Cop::
|
158
|
+
@all_cop_names ||= Cop::Registry.global.names - [REDUNDANT_DISABLE]
|
161
159
|
end
|
162
160
|
|
163
161
|
def comment_only_line?(line_number)
|
data/lib/rubocop/config.rb
CHANGED
@@ -24,7 +24,7 @@ module RuboCop
|
|
24
24
|
def initialize(hash = {}, loaded_path = nil)
|
25
25
|
@loaded_path = loaded_path
|
26
26
|
@for_cop = Hash.new do |h, cop|
|
27
|
-
qualified_cop_name = Cop::
|
27
|
+
qualified_cop_name = Cop::Registry.qualified_cop_name(cop, loaded_path)
|
28
28
|
cop_options = self[qualified_cop_name] || {}
|
29
29
|
cop_options['Enabled'] = enable_cop?(qualified_cop_name, cop_options)
|
30
30
|
h[cop] = cop_options
|
@@ -47,7 +47,7 @@ module RuboCop
|
|
47
47
|
end
|
48
48
|
|
49
49
|
def_delegators :@hash, :[], :[]=, :delete, :each, :key?, :keys, :each_key,
|
50
|
-
:map, :merge, :to_h, :to_hash, :transform_values
|
50
|
+
:fetch, :map, :merge, :to_h, :to_hash, :transform_values
|
51
51
|
def_delegators :@validator, :validate, :target_ruby_version
|
52
52
|
|
53
53
|
def to_s
|
@@ -104,12 +104,29 @@ module RuboCop
|
|
104
104
|
end
|
105
105
|
end
|
106
106
|
|
107
|
+
# @return [Config] for the given cop / cop name.
|
108
|
+
# Note: the 'Enabled' attribute is calculated according to the department's
|
109
|
+
# and 'AllCops' configuration; other attributes are not inherited.
|
107
110
|
def for_cop(cop)
|
108
111
|
@for_cop[cop.respond_to?(:cop_name) ? cop.cop_name : cop]
|
109
112
|
end
|
110
113
|
|
114
|
+
# @return [Config] for the given cop merged with that of its department (if any)
|
115
|
+
# Note: the 'Enabled' attribute is same as that returned by `for_cop`
|
116
|
+
def for_badge(badge)
|
117
|
+
cop_config = for_cop(badge.to_s)
|
118
|
+
fetch(badge.department.to_s) { return cop_config }
|
119
|
+
.merge(cop_config)
|
120
|
+
end
|
121
|
+
|
122
|
+
# @return [Config] for the given department name.
|
123
|
+
# Note: the 'Enabled' attribute will be present only if specified
|
124
|
+
# at the department's level
|
111
125
|
def for_department(department_name)
|
112
|
-
@
|
126
|
+
@for_department ||= Hash.new do |h, dept|
|
127
|
+
h[dept] = self[dept] || {}
|
128
|
+
end
|
129
|
+
@for_department[department_name.to_s]
|
113
130
|
end
|
114
131
|
|
115
132
|
def for_all_cops
|
@@ -24,7 +24,7 @@ module RuboCop
|
|
24
24
|
|
25
25
|
attr_accessor :debug, :ignore_parent_exclusion,
|
26
26
|
:disable_pending_cops, :enable_pending_cops
|
27
|
-
attr_writer :default_configuration
|
27
|
+
attr_writer :default_configuration, :project_root
|
28
28
|
|
29
29
|
alias debug? debug
|
30
30
|
alias ignore_parent_exclusion? ignore_parent_exclusion
|
@@ -34,7 +34,7 @@ module RuboCop
|
|
34
34
|
FileFinder.root_level = nil
|
35
35
|
end
|
36
36
|
|
37
|
-
def load_file(file)
|
37
|
+
def load_file(file)
|
38
38
|
path = File.absolute_path(file.is_a?(RemoteConfig) ? file.file : file)
|
39
39
|
|
40
40
|
hash = load_yaml_configuration(path)
|
@@ -73,7 +73,7 @@ module RuboCop
|
|
73
73
|
# `can't add a new key into hash during iteration` error
|
74
74
|
hash_keys = hash.keys
|
75
75
|
hash_keys.each do |key|
|
76
|
-
q = Cop::
|
76
|
+
q = Cop::Registry.qualified_cop_name(key, path)
|
77
77
|
next if q == key
|
78
78
|
|
79
79
|
hash[q] = hash.delete(key)
|
@@ -118,14 +118,13 @@ module RuboCop
|
|
118
118
|
end
|
119
119
|
|
120
120
|
def add_excludes_from_files(config, config_file)
|
121
|
-
|
121
|
+
exclusion_file = find_last_file_upwards(DOTFILE, config_file, project_root)
|
122
122
|
|
123
|
-
return
|
124
|
-
return if PathUtil.relative_path(
|
125
|
-
PathUtil.relative_path(config_file)
|
123
|
+
return unless exclusion_file
|
124
|
+
return if PathUtil.relative_path(exclusion_file) == PathUtil.relative_path(config_file)
|
126
125
|
|
127
126
|
print 'AllCops/Exclude ' if debug?
|
128
|
-
config.add_excludes_from_higher_level(load_file(
|
127
|
+
config.add_excludes_from_higher_level(load_file(exclusion_file))
|
129
128
|
end
|
130
129
|
|
131
130
|
def default_configuration
|
@@ -135,6 +134,12 @@ module RuboCop
|
|
135
134
|
end
|
136
135
|
end
|
137
136
|
|
137
|
+
# Returns the path rubocop inferred as the root of the project. No file
|
138
|
+
# searches will go past this directory.
|
139
|
+
def project_root
|
140
|
+
@project_root ||= find_project_root
|
141
|
+
end
|
142
|
+
|
138
143
|
def warn_on_pending_cops(pending_cops)
|
139
144
|
return if pending_cops.empty?
|
140
145
|
|
@@ -159,7 +164,15 @@ module RuboCop
|
|
159
164
|
private
|
160
165
|
|
161
166
|
def find_project_dotfile(target_dir)
|
162
|
-
find_file_upwards(DOTFILE, target_dir)
|
167
|
+
find_file_upwards(DOTFILE, target_dir, project_root)
|
168
|
+
end
|
169
|
+
|
170
|
+
def find_project_root
|
171
|
+
pwd = Dir.pwd
|
172
|
+
gems_file = find_last_file_upwards('Gemfile', pwd) || find_last_file_upwards('gems.rb', pwd)
|
173
|
+
return unless gems_file
|
174
|
+
|
175
|
+
File.dirname(gems_file)
|
163
176
|
end
|
164
177
|
|
165
178
|
def find_user_dotfile
|
@@ -201,7 +201,7 @@ module RuboCop
|
|
201
201
|
next unless dept_params['Enabled']
|
202
202
|
|
203
203
|
new_default_configuration.each do |cop, params|
|
204
|
-
next unless cop.start_with?(dept
|
204
|
+
next unless cop.start_with?("#{dept}/")
|
205
205
|
|
206
206
|
# Retain original default configuration for cops in the department.
|
207
207
|
params['Enabled'] = ConfigLoader.default_configuration[cop]['Enabled']
|
@@ -213,8 +213,8 @@ module RuboCop
|
|
213
213
|
end
|
214
214
|
end
|
215
215
|
|
216
|
-
def transform(config)
|
217
|
-
config.transform_values
|
216
|
+
def transform(config, &block)
|
217
|
+
config.transform_values(&block)
|
218
218
|
end
|
219
219
|
|
220
220
|
def gem_config_path(gem_name, relative_config_path)
|
@@ -84,7 +84,12 @@ module RuboCop
|
|
84
84
|
'Lint/InvalidCharacterLiteral' => 'it was never being actually triggered',
|
85
85
|
'Lint/SpaceBeforeFirstArg' =>
|
86
86
|
'it was a duplicate of `Layout/SpaceBeforeFirstArg`. Please use ' \
|
87
|
-
'`Layout/SpaceBeforeFirstArg` instead'
|
87
|
+
'`Layout/SpaceBeforeFirstArg` instead',
|
88
|
+
'Style/MethodMissingSuper' => 'it has been superseded by `Lint/MissingSuper`. Please use ' \
|
89
|
+
'`Lint/MissingSuper` instead',
|
90
|
+
'Lint/UselessComparison' => 'it has been superseded by '\
|
91
|
+
'`Lint/BinaryOperatorWithIdenticalOperands`. Please use '\
|
92
|
+
'`Lint/BinaryOperatorWithIdenticalOperands` instead'
|
88
93
|
}.map do |cop_name, reason|
|
89
94
|
[cop_name, "The `#{cop_name}` cop has been removed since #{reason}."]
|
90
95
|
end
|
data/lib/rubocop/config_store.rb
CHANGED
@@ -23,7 +23,6 @@ module RuboCop
|
|
23
23
|
@target_ruby = TargetRuby.new(config)
|
24
24
|
end
|
25
25
|
|
26
|
-
# rubocop:disable Metrics/AbcSize
|
27
26
|
def validate
|
28
27
|
check_cop_config_value(@config)
|
29
28
|
reject_conflicting_safe_settings
|
@@ -45,7 +44,6 @@ module RuboCop
|
|
45
44
|
validate_syntax_cop
|
46
45
|
reject_mutually_exclusive_defaults
|
47
46
|
end
|
48
|
-
# rubocop:enable Metrics/AbcSize
|
49
47
|
|
50
48
|
def target_ruby_version
|
51
49
|
target_ruby.version
|
@@ -86,7 +84,7 @@ module RuboCop
|
|
86
84
|
unknown_cops = []
|
87
85
|
invalid_cop_names.each do |name|
|
88
86
|
# There could be a custom cop with this name. If so, don't warn
|
89
|
-
next if Cop::
|
87
|
+
next if Cop::Registry.global.contains_cop_matching?([name])
|
90
88
|
|
91
89
|
# Special case for inherit_mode, which is a directive that we keep in
|
92
90
|
# the configuration (even though it's not a cop), because it's easier
|
@@ -150,7 +148,7 @@ module RuboCop
|
|
150
148
|
end
|
151
149
|
end
|
152
150
|
|
153
|
-
def validate_enforced_styles(valid_cop_names)
|
151
|
+
def validate_enforced_styles(valid_cop_names) # rubocop:todo Metrics/AbcSize
|
154
152
|
valid_cop_names.each do |name|
|
155
153
|
styles = @config[name].select { |key, _| key.start_with?('Enforced') }
|
156
154
|
|
data/lib/rubocop/cop/badge.rb
CHANGED
data/lib/rubocop/cop/base.rb
CHANGED
@@ -105,7 +105,7 @@ module RuboCop
|
|
105
105
|
# If message is not specified, the method `message` will be called.
|
106
106
|
def add_offense(node_or_range, message: nil, severity: nil, &block)
|
107
107
|
range = range_from_node_or_range(node_or_range)
|
108
|
-
return unless
|
108
|
+
return unless current_offense_locations.add?(range)
|
109
109
|
|
110
110
|
range_to_pass = callback_argument(range)
|
111
111
|
|
@@ -137,6 +137,7 @@ module RuboCop
|
|
137
137
|
end
|
138
138
|
|
139
139
|
def self.inherited(subclass)
|
140
|
+
super
|
140
141
|
Registry.global.enlist(subclass)
|
141
142
|
end
|
142
143
|
|
@@ -189,8 +190,7 @@ module RuboCop
|
|
189
190
|
def cop_config
|
190
191
|
# Use department configuration as basis, but let individual cop
|
191
192
|
# configuration override.
|
192
|
-
@cop_config ||= @config.
|
193
|
-
.merge(@config.for_cop(self))
|
193
|
+
@cop_config ||= @config.for_badge(self.class.badge)
|
194
194
|
end
|
195
195
|
|
196
196
|
def config_to_allow_offenses
|
@@ -271,11 +271,19 @@ module RuboCop
|
|
271
271
|
|
272
272
|
### Reserved for Commissioner:
|
273
273
|
|
274
|
+
def current_offense_locations
|
275
|
+
@current_offense_locations ||= Set.new
|
276
|
+
end
|
277
|
+
|
278
|
+
def currently_disabled_lines
|
279
|
+
@currently_disabled_lines ||= Set.new
|
280
|
+
end
|
281
|
+
|
274
282
|
# Called before any investigation
|
275
283
|
def begin_investigation(processed_source)
|
276
284
|
@current_offenses = []
|
277
|
-
@current_offense_locations =
|
278
|
-
@currently_disabled_lines =
|
285
|
+
@current_offense_locations = nil
|
286
|
+
@currently_disabled_lines = nil
|
279
287
|
@processed_source = processed_source
|
280
288
|
@current_corrector = Corrector.new(@processed_source) if @processed_source.valid_syntax?
|
281
289
|
end
|
@@ -327,7 +335,7 @@ module RuboCop
|
|
327
335
|
|
328
336
|
def disable_uncorrectable(range)
|
329
337
|
line = range.line
|
330
|
-
return unless
|
338
|
+
return unless currently_disabled_lines.add?(line)
|
331
339
|
|
332
340
|
disable_offense(range)
|
333
341
|
end
|
data/lib/rubocop/cop/cop.rb
CHANGED
@@ -16,7 +16,7 @@ module RuboCop
|
|
16
16
|
processed_source:)
|
17
17
|
@processed_source = processed_source
|
18
18
|
range = first_part_of(node.to_a.last)
|
19
|
-
eol_comment =
|
19
|
+
eol_comment = processed_source.comment_at_line(node.source_range.line)
|
20
20
|
|
21
21
|
break_line_before(range: range, node: node, corrector: corrector,
|
22
22
|
configured_width: configured_width)
|
@@ -29,8 +29,8 @@ module RuboCop
|
|
29
29
|
configured_width:)
|
30
30
|
corrector.insert_before(
|
31
31
|
range,
|
32
|
-
"\n
|
33
|
-
indent_steps * configured_width)
|
32
|
+
"\n#{' ' * (node.loc.keyword.column +
|
33
|
+
indent_steps * configured_width)}"
|
34
34
|
)
|
35
35
|
end
|
36
36
|
|
@@ -39,7 +39,7 @@ module RuboCop
|
|
39
39
|
|
40
40
|
text = eol_comment.loc.expression.source
|
41
41
|
corrector.insert_before(node,
|
42
|
-
text
|
42
|
+
"#{text}\n#{' ' * node.loc.keyword.column}")
|
43
43
|
corrector.remove(eol_comment)
|
44
44
|
end
|
45
45
|
|