rubocop 1.12.0 → 1.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +3 -2
- data/config/default.yml +10 -0
- data/exe/rubocop +1 -3
- data/lib/rubocop.rb +1 -1
- data/lib/rubocop/cached_data.rb +1 -3
- data/lib/rubocop/cli.rb +4 -6
- data/lib/rubocop/cli/command/auto_genenerate_config.rb +9 -19
- data/lib/rubocop/cli/command/init_dotfile.rb +1 -3
- data/lib/rubocop/cli/command/show_cops.rb +1 -4
- data/lib/rubocop/comment_config.rb +2 -7
- data/lib/rubocop/config.rb +11 -26
- data/lib/rubocop/config_loader.rb +5 -11
- data/lib/rubocop/config_loader_resolver.rb +22 -14
- data/lib/rubocop/config_obsoletion/cop_rule.rb +1 -2
- data/lib/rubocop/config_store.rb +1 -2
- data/lib/rubocop/config_validator.rb +5 -10
- data/lib/rubocop/cop/autocorrect_logic.rb +3 -8
- data/lib/rubocop/cop/badge.rb +1 -2
- data/lib/rubocop/cop/base.rb +8 -6
- data/lib/rubocop/cop/bundler/duplicated_gem.rb +1 -2
- data/lib/rubocop/cop/bundler/gem_comment.rb +42 -8
- data/lib/rubocop/cop/bundler/ordered_gems.rb +1 -4
- data/lib/rubocop/cop/commissioner.rb +2 -8
- data/lib/rubocop/cop/cop.rb +4 -18
- data/lib/rubocop/cop/corrector.rb +1 -4
- data/lib/rubocop/cop/correctors/alignment_corrector.rb +3 -6
- data/lib/rubocop/cop/correctors/each_to_for_corrector.rb +2 -4
- data/lib/rubocop/cop/correctors/for_to_each_corrector.rb +1 -2
- data/lib/rubocop/cop/correctors/line_break_corrector.rb +3 -6
- data/lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb +1 -3
- data/lib/rubocop/cop/correctors/ordered_gem_corrector.rb +1 -3
- data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +2 -8
- data/lib/rubocop/cop/gemspec/duplicated_assignment.rb +1 -2
- data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +1 -4
- data/lib/rubocop/cop/generator.rb +1 -4
- data/lib/rubocop/cop/generator/configuration_injector.rb +1 -2
- data/lib/rubocop/cop/generator/require_file_injector.rb +2 -5
- data/lib/rubocop/cop/internal_affairs/example_description.rb +6 -4
- data/lib/rubocop/cop/internal_affairs/method_name_equal.rb +2 -5
- data/lib/rubocop/cop/internal_affairs/node_destructuring.rb +1 -3
- data/lib/rubocop/cop/internal_affairs/node_type_predicate.rb +1 -3
- data/lib/rubocop/cop/internal_affairs/offense_location_keyword.rb +1 -2
- data/lib/rubocop/cop/internal_affairs/style_detected_api_use.rb +1 -2
- data/lib/rubocop/cop/internal_affairs/useless_message_assertion.rb +1 -3
- data/lib/rubocop/cop/layout/access_modifier_indentation.rb +1 -2
- data/lib/rubocop/cop/layout/argument_alignment.rb +2 -4
- data/lib/rubocop/cop/layout/assignment_indentation.rb +2 -4
- data/lib/rubocop/cop/layout/begin_end_alignment.rb +1 -4
- data/lib/rubocop/cop/layout/block_alignment.rb +7 -19
- data/lib/rubocop/cop/layout/case_indentation.rb +1 -3
- data/lib/rubocop/cop/layout/class_structure.rb +4 -10
- data/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +4 -15
- data/lib/rubocop/cop/layout/comment_indentation.rb +1 -5
- data/lib/rubocop/cop/layout/def_end_alignment.rb +2 -6
- data/lib/rubocop/cop/layout/dot_position.rb +1 -3
- data/lib/rubocop/cop/layout/else_alignment.rb +1 -3
- data/lib/rubocop/cop/layout/empty_comment.rb +5 -12
- data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +22 -8
- data/lib/rubocop/cop/layout/empty_line_between_defs.rb +2 -6
- data/lib/rubocop/cop/layout/empty_lines.rb +1 -3
- data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +8 -18
- data/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +2 -8
- data/lib/rubocop/cop/layout/end_alignment.rb +1 -2
- data/lib/rubocop/cop/layout/end_of_line.rb +1 -1
- data/lib/rubocop/cop/layout/extra_spacing.rb +3 -7
- data/lib/rubocop/cop/layout/first_array_element_indentation.rb +1 -2
- data/lib/rubocop/cop/layout/first_array_element_line_break.rb +1 -2
- data/lib/rubocop/cop/layout/first_hash_element_indentation.rb +2 -5
- data/lib/rubocop/cop/layout/first_hash_element_line_break.rb +1 -2
- data/lib/rubocop/cop/layout/first_method_argument_line_break.rb +1 -2
- data/lib/rubocop/cop/layout/first_method_parameter_line_break.rb +1 -2
- data/lib/rubocop/cop/layout/hash_alignment.rb +3 -6
- data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +2 -9
- data/lib/rubocop/cop/layout/heredoc_indentation.rb +2 -6
- data/lib/rubocop/cop/layout/indentation_style.rb +1 -3
- data/lib/rubocop/cop/layout/indentation_width.rb +1 -2
- data/lib/rubocop/cop/layout/initial_indentation.rb +1 -4
- data/lib/rubocop/cop/layout/line_length.rb +4 -15
- data/lib/rubocop/cop/layout/multiline_array_line_breaks.rb +1 -2
- data/lib/rubocop/cop/layout/multiline_block_layout.rb +7 -15
- data/lib/rubocop/cop/layout/multiline_hash_key_line_breaks.rb +1 -2
- data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +1 -2
- data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +16 -10
- data/lib/rubocop/cop/layout/multiline_operation_indentation.rb +4 -0
- data/lib/rubocop/cop/layout/redundant_line_break.rb +125 -0
- data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +3 -6
- data/lib/rubocop/cop/layout/space_after_colon.rb +1 -3
- data/lib/rubocop/cop/layout/space_after_method_name.rb +2 -4
- data/lib/rubocop/cop/layout/space_around_block_parameters.rb +6 -14
- data/lib/rubocop/cop/layout/space_around_equals_in_parameter_default.rb +1 -2
- data/lib/rubocop/cop/layout/space_around_keyword.rb +3 -6
- data/lib/rubocop/cop/layout/space_around_operators.rb +4 -9
- data/lib/rubocop/cop/layout/space_before_block_braces.rb +1 -2
- data/lib/rubocop/cop/layout/space_before_brackets.rb +1 -3
- data/lib/rubocop/cop/layout/space_before_comment.rb +1 -3
- data/lib/rubocop/cop/layout/space_before_first_arg.rb +5 -11
- data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +2 -4
- data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +5 -10
- data/lib/rubocop/cop/layout/space_inside_array_percent_literal.rb +2 -7
- data/lib/rubocop/cop/layout/space_inside_block_braces.rb +5 -10
- data/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +1 -2
- data/lib/rubocop/cop/layout/space_inside_reference_brackets.rb +1 -2
- data/lib/rubocop/cop/legacy/corrections_proxy.rb +2 -8
- data/lib/rubocop/cop/legacy/corrector.rb +1 -3
- data/lib/rubocop/cop/lint/ambiguous_assignment.rb +1 -6
- data/lib/rubocop/cop/lint/ambiguous_block_association.rb +14 -7
- data/lib/rubocop/cop/lint/boolean_symbol.rb +1 -2
- data/lib/rubocop/cop/lint/constant_resolution.rb +1 -2
- data/lib/rubocop/cop/lint/deprecated_class_methods.rb +2 -4
- data/lib/rubocop/cop/lint/deprecated_constants.rb +3 -3
- data/lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb +2 -5
- data/lib/rubocop/cop/lint/duplicate_branch.rb +1 -2
- data/lib/rubocop/cop/lint/duplicate_hash_key.rb +1 -3
- data/lib/rubocop/cop/lint/duplicate_methods.rb +3 -7
- data/lib/rubocop/cop/lint/else_layout.rb +1 -3
- data/lib/rubocop/cop/lint/empty_ensure.rb +1 -3
- data/lib/rubocop/cop/lint/empty_file.rb +1 -3
- data/lib/rubocop/cop/lint/empty_interpolation.rb +1 -3
- data/lib/rubocop/cop/lint/ensure_return.rb +1 -3
- data/lib/rubocop/cop/lint/erb_new_arguments.rb +3 -7
- data/lib/rubocop/cop/lint/float_out_of_range.rb +1 -2
- data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +3 -6
- data/lib/rubocop/cop/lint/heredoc_method_call_position.rb +1 -2
- data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +1 -2
- data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +3 -7
- data/lib/rubocop/cop/lint/inherit_exception.rb +1 -2
- data/lib/rubocop/cop/lint/interpolation_check.rb +3 -11
- data/lib/rubocop/cop/lint/literal_in_interpolation.rb +3 -6
- data/lib/rubocop/cop/lint/loop.rb +1 -2
- data/lib/rubocop/cop/lint/missing_cop_enable_directive.rb +3 -7
- data/lib/rubocop/cop/lint/missing_super.rb +1 -2
- data/lib/rubocop/cop/lint/mixed_regexp_capture_types.rb +1 -2
- data/lib/rubocop/cop/lint/nested_method_definition.rb +1 -2
- data/lib/rubocop/cop/lint/nested_percent_literal.rb +1 -3
- data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +1 -3
- data/lib/rubocop/cop/lint/number_conversion.rb +3 -4
- data/lib/rubocop/cop/lint/ordered_magic_comments.rb +1 -2
- data/lib/rubocop/cop/lint/out_of_range_regexp_ref.rb +1 -3
- data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +1 -3
- data/lib/rubocop/cop/lint/percent_symbol_array.rb +1 -3
- data/lib/rubocop/cop/lint/raise_exception.rb +1 -2
- data/lib/rubocop/cop/lint/rand_one.rb +1 -2
- data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +8 -20
- data/lib/rubocop/cop/lint/redundant_safe_navigation.rb +1 -3
- data/lib/rubocop/cop/lint/redundant_splat_expansion.rb +3 -7
- data/lib/rubocop/cop/lint/redundant_string_coercion.rb +1 -2
- data/lib/rubocop/cop/lint/redundant_with_index.rb +1 -4
- data/lib/rubocop/cop/lint/redundant_with_object.rb +1 -4
- data/lib/rubocop/cop/lint/regexp_as_condition.rb +1 -3
- data/lib/rubocop/cop/lint/require_parentheses.rb +2 -4
- data/lib/rubocop/cop/lint/rescue_exception.rb +1 -2
- data/lib/rubocop/cop/lint/rescue_type.rb +2 -7
- data/lib/rubocop/cop/lint/return_in_void_context.rb +1 -2
- data/lib/rubocop/cop/lint/safe_navigation_chain.rb +1 -2
- data/lib/rubocop/cop/lint/safe_navigation_consistency.rb +4 -10
- data/lib/rubocop/cop/lint/safe_navigation_with_empty.rb +1 -2
- data/lib/rubocop/cop/lint/send_with_mixin_argument.rb +2 -7
- data/lib/rubocop/cop/lint/shadowed_argument.rb +4 -11
- data/lib/rubocop/cop/lint/shadowed_exception.rb +7 -8
- data/lib/rubocop/cop/lint/struct_new_override.rb +1 -2
- data/lib/rubocop/cop/lint/symbol_conversion.rb +2 -4
- data/lib/rubocop/cop/lint/syntax.rb +1 -3
- data/lib/rubocop/cop/lint/to_json.rb +1 -2
- data/lib/rubocop/cop/lint/trailing_comma_in_attribute_declaration.rb +1 -3
- data/lib/rubocop/cop/lint/underscore_prefixed_variable_name.rb +1 -3
- data/lib/rubocop/cop/lint/unreachable_code.rb +2 -5
- data/lib/rubocop/cop/lint/unreachable_loop.rb +2 -5
- data/lib/rubocop/cop/lint/unused_block_argument.rb +4 -8
- data/lib/rubocop/cop/lint/unused_method_argument.rb +1 -2
- data/lib/rubocop/cop/lint/useless_access_modifier.rb +2 -4
- data/lib/rubocop/cop/lint/useless_assignment.rb +4 -9
- data/lib/rubocop/cop/lint/useless_setter_call.rb +1 -3
- data/lib/rubocop/cop/lint/void.rb +4 -11
- data/lib/rubocop/cop/message_annotator.rb +1 -3
- data/lib/rubocop/cop/metrics/block_nesting.rb +2 -7
- data/lib/rubocop/cop/metrics/class_length.rb +1 -3
- data/lib/rubocop/cop/metrics/cyclomatic_complexity.rb +1 -2
- data/lib/rubocop/cop/metrics/module_length.rb +2 -6
- data/lib/rubocop/cop/metrics/parameter_lists.rb +2 -5
- data/lib/rubocop/cop/metrics/perceived_complexity.rb +1 -2
- data/lib/rubocop/cop/metrics/utils/abc_size_calculator.rb +4 -7
- data/lib/rubocop/cop/metrics/utils/repeated_attribute_discount.rb +2 -7
- data/lib/rubocop/cop/migration/department_name.rb +3 -7
- data/lib/rubocop/cop/mixin/alignment.rb +2 -4
- data/lib/rubocop/cop/mixin/check_line_breakable.rb +1 -1
- data/lib/rubocop/cop/mixin/code_length.rb +1 -3
- data/lib/rubocop/cop/mixin/configurable_enforced_style.rb +2 -2
- data/lib/rubocop/cop/mixin/configurable_formatting.rb +3 -8
- data/lib/rubocop/cop/mixin/def_node.rb +2 -5
- data/lib/rubocop/cop/mixin/documentation_comment.rb +2 -5
- data/lib/rubocop/cop/mixin/empty_lines_around_body.rb +3 -7
- data/lib/rubocop/cop/mixin/empty_parameter.rb +1 -3
- data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +1 -3
- data/lib/rubocop/cop/mixin/enforce_superclass.rb +2 -6
- data/lib/rubocop/cop/mixin/first_element_line_break.rb +1 -3
- data/lib/rubocop/cop/mixin/frozen_string_literal.rb +3 -9
- data/lib/rubocop/cop/mixin/hash_alignment_styles.rb +3 -6
- data/lib/rubocop/cop/mixin/hash_transform_method.rb +7 -22
- data/lib/rubocop/cop/mixin/interpolation.rb +1 -3
- data/lib/rubocop/cop/mixin/line_length_help.rb +2 -4
- data/lib/rubocop/cop/mixin/match_range.rb +2 -5
- data/lib/rubocop/cop/mixin/method_complexity.rb +1 -3
- data/lib/rubocop/cop/mixin/method_preference.rb +1 -2
- data/lib/rubocop/cop/mixin/multiline_element_indentation.rb +1 -2
- data/lib/rubocop/cop/mixin/multiline_element_line_breaks.rb +1 -3
- data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +7 -37
- data/lib/rubocop/cop/mixin/multiline_literal_brace_layout.rb +1 -2
- data/lib/rubocop/cop/mixin/negative_conditional.rb +1 -2
- data/lib/rubocop/cop/mixin/ordered_gem_node.rb +1 -4
- data/lib/rubocop/cop/mixin/percent_array.rb +1 -3
- data/lib/rubocop/cop/mixin/percent_literal.rb +0 -6
- data/lib/rubocop/cop/mixin/preceding_following_alignment.rb +5 -11
- data/lib/rubocop/cop/mixin/preferred_delimiters.rb +3 -6
- data/lib/rubocop/cop/mixin/range_help.rb +10 -13
- data/lib/rubocop/cop/mixin/rescue_node.rb +2 -6
- data/lib/rubocop/cop/mixin/safe_assignment.rb +1 -2
- data/lib/rubocop/cop/mixin/space_after_punctuation.rb +2 -4
- data/lib/rubocop/cop/mixin/space_before_punctuation.rb +1 -2
- data/lib/rubocop/cop/mixin/statement_modifier.rb +1 -3
- data/lib/rubocop/cop/mixin/trailing_body.rb +1 -2
- data/lib/rubocop/cop/mixin/trailing_comma.rb +1 -2
- data/lib/rubocop/cop/mixin/uncommunicative_name.rb +3 -7
- data/lib/rubocop/cop/mixin/unused_argument.rb +1 -3
- data/lib/rubocop/cop/naming/ascii_identifiers.rb +2 -4
- data/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +1 -2
- data/lib/rubocop/cop/naming/file_name.rb +7 -16
- data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +2 -3
- data/lib/rubocop/cop/naming/method_name.rb +1 -2
- data/lib/rubocop/cop/naming/predicate_name.rb +1 -2
- data/lib/rubocop/cop/offense.rb +3 -8
- data/lib/rubocop/cop/registry.rb +3 -11
- data/lib/rubocop/cop/style/access_modifier_declarations.rb +2 -4
- data/lib/rubocop/cop/style/accessor_grouping.rb +1 -3
- data/lib/rubocop/cop/style/alias.rb +5 -12
- data/lib/rubocop/cop/style/and_or.rb +3 -1
- data/lib/rubocop/cop/style/arguments_forwarding.rb +1 -3
- data/lib/rubocop/cop/style/ascii_comments.rb +1 -2
- data/lib/rubocop/cop/style/attr.rb +1 -3
- data/lib/rubocop/cop/style/auto_resource_cleanup.rb +2 -5
- data/lib/rubocop/cop/style/bisected_attr_accessor/macro.rb +1 -3
- data/lib/rubocop/cop/style/case_like_if.rb +1 -2
- data/lib/rubocop/cop/style/character_literal.rb +2 -4
- data/lib/rubocop/cop/style/class_and_module_children.rb +3 -6
- data/lib/rubocop/cop/style/class_methods.rb +1 -3
- data/lib/rubocop/cop/style/collection_compact.rb +1 -3
- data/lib/rubocop/cop/style/colon_method_call.rb +1 -3
- data/lib/rubocop/cop/style/combinable_loops.rb +3 -2
- data/lib/rubocop/cop/style/command_literal.rb +3 -8
- data/lib/rubocop/cop/style/comment_annotation.rb +3 -6
- data/lib/rubocop/cop/style/commented_keyword.rb +7 -13
- data/lib/rubocop/cop/style/conditional_assignment.rb +10 -24
- data/lib/rubocop/cop/style/copyright.rb +3 -6
- data/lib/rubocop/cop/style/date_time.rb +2 -5
- data/lib/rubocop/cop/style/def_with_parentheses.rb +1 -2
- data/lib/rubocop/cop/style/each_for_simple_loop.rb +1 -2
- data/lib/rubocop/cop/style/empty_case_condition.rb +2 -7
- data/lib/rubocop/cop/style/empty_else.rb +3 -9
- data/lib/rubocop/cop/style/empty_literal.rb +4 -8
- data/lib/rubocop/cop/style/empty_method.rb +3 -7
- data/lib/rubocop/cop/style/end_block.rb +1 -2
- data/lib/rubocop/cop/style/endless_method.rb +1 -3
- data/lib/rubocop/cop/style/eval_with_location.rb +2 -4
- data/lib/rubocop/cop/style/expand_path_arguments.rb +1 -3
- data/lib/rubocop/cop/style/explicit_block_argument.rb +1 -4
- data/lib/rubocop/cop/style/format_string_token.rb +1 -4
- data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +3 -11
- data/lib/rubocop/cop/style/guard_clause.rb +3 -7
- data/lib/rubocop/cop/style/hash_conversion.rb +31 -3
- data/lib/rubocop/cop/style/hash_each_methods.rb +1 -2
- data/lib/rubocop/cop/style/hash_like_case.rb +1 -2
- data/lib/rubocop/cop/style/hash_syntax.rb +4 -9
- data/lib/rubocop/cop/style/identical_conditional_branches.rb +1 -3
- data/lib/rubocop/cop/style/if_unless_modifier.rb +41 -13
- data/lib/rubocop/cop/style/infinite_loop.rb +2 -5
- data/lib/rubocop/cop/style/inverse_methods.rb +3 -7
- data/lib/rubocop/cop/style/ip_addresses.rb +1 -2
- data/lib/rubocop/cop/style/lambda.rb +2 -4
- data/lib/rubocop/cop/style/lambda_call.rb +1 -2
- data/lib/rubocop/cop/style/line_end_concatenation.rb +5 -12
- data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +7 -3
- data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +10 -18
- data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +1 -2
- data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +2 -4
- data/lib/rubocop/cop/style/method_def_parentheses.rb +4 -8
- data/lib/rubocop/cop/style/min_max.rb +1 -2
- data/lib/rubocop/cop/style/missing_else.rb +2 -4
- data/lib/rubocop/cop/style/missing_respond_to_missing.rb +1 -2
- data/lib/rubocop/cop/style/mixin_grouping.rb +4 -10
- data/lib/rubocop/cop/style/mixin_usage.rb +1 -2
- data/lib/rubocop/cop/style/module_function.rb +3 -6
- data/lib/rubocop/cop/style/multiline_block_chain.rb +1 -2
- data/lib/rubocop/cop/style/multiline_method_signature.rb +11 -6
- data/lib/rubocop/cop/style/multiline_ternary_operator.rb +1 -2
- data/lib/rubocop/cop/style/multiple_comparison.rb +2 -4
- data/lib/rubocop/cop/style/mutable_constant.rb +4 -10
- data/lib/rubocop/cop/style/negated_if.rb +1 -2
- data/lib/rubocop/cop/style/negated_unless.rb +1 -2
- data/lib/rubocop/cop/style/nested_modifier.rb +3 -7
- data/lib/rubocop/cop/style/nested_ternary_operator.rb +2 -3
- data/lib/rubocop/cop/style/next.rb +4 -9
- data/lib/rubocop/cop/style/non_nil_check.rb +2 -5
- data/lib/rubocop/cop/style/numeric_literals.rb +3 -11
- data/lib/rubocop/cop/style/numeric_predicate.rb +2 -7
- data/lib/rubocop/cop/style/one_line_conditional.rb +1 -2
- data/lib/rubocop/cop/style/option_hash.rb +1 -3
- data/lib/rubocop/cop/style/optional_arguments.rb +2 -5
- data/lib/rubocop/cop/style/or_assignment.rb +2 -6
- data/lib/rubocop/cop/style/parallel_assignment.rb +6 -9
- data/lib/rubocop/cop/style/percent_literal_delimiters.rb +1 -3
- data/lib/rubocop/cop/style/percent_q_literals.rb +1 -2
- data/lib/rubocop/cop/style/perl_backrefs.rb +2 -9
- data/lib/rubocop/cop/style/preferred_hash_methods.rb +1 -4
- data/lib/rubocop/cop/style/proc.rb +1 -2
- data/lib/rubocop/cop/style/raise_args.rb +4 -8
- data/lib/rubocop/cop/style/random_with_offset.rb +3 -8
- data/lib/rubocop/cop/style/redundant_argument.rb +2 -11
- data/lib/rubocop/cop/style/redundant_assignment.rb +1 -3
- data/lib/rubocop/cop/style/redundant_begin.rb +15 -4
- data/lib/rubocop/cop/style/redundant_capital_w.rb +1 -2
- data/lib/rubocop/cop/style/redundant_condition.rb +2 -5
- data/lib/rubocop/cop/style/redundant_conditional.rb +3 -6
- data/lib/rubocop/cop/style/redundant_exception.rb +3 -6
- data/lib/rubocop/cop/style/redundant_file_extension_in_require.rb +1 -1
- data/lib/rubocop/cop/style/redundant_freeze.rb +1 -2
- data/lib/rubocop/cop/style/redundant_interpolation.rb +1 -2
- data/lib/rubocop/cop/style/redundant_parentheses.rb +8 -20
- data/lib/rubocop/cop/style/redundant_percent_q.rb +1 -2
- data/lib/rubocop/cop/style/redundant_regexp_escape.rb +1 -4
- data/lib/rubocop/cop/style/redundant_return.rb +3 -5
- data/lib/rubocop/cop/style/redundant_self.rb +2 -6
- data/lib/rubocop/cop/style/redundant_self_assignment.rb +2 -2
- data/lib/rubocop/cop/style/redundant_sort.rb +2 -5
- data/lib/rubocop/cop/style/regexp_literal.rb +4 -8
- data/lib/rubocop/cop/style/rescue_modifier.rb +4 -0
- data/lib/rubocop/cop/style/rescue_standard_error.rb +3 -7
- data/lib/rubocop/cop/style/return_nil.rb +1 -2
- data/lib/rubocop/cop/style/safe_navigation.rb +10 -21
- data/lib/rubocop/cop/style/send.rb +1 -2
- data/lib/rubocop/cop/style/signal_exception.rb +3 -7
- data/lib/rubocop/cop/style/single_argument_dig.rb +1 -2
- data/lib/rubocop/cop/style/single_line_block_params.rb +2 -5
- data/lib/rubocop/cop/style/single_line_methods.rb +16 -4
- data/lib/rubocop/cop/style/sole_nested_conditional.rb +1 -2
- data/lib/rubocop/cop/style/special_global_vars.rb +6 -18
- data/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +1 -2
- data/lib/rubocop/cop/style/stderr_puts.rb +2 -6
- data/lib/rubocop/cop/style/string_chars.rb +2 -1
- data/lib/rubocop/cop/style/string_concatenation.rb +8 -10
- data/lib/rubocop/cop/style/string_literals.rb +2 -5
- data/lib/rubocop/cop/style/struct_inheritance.rb +9 -1
- data/lib/rubocop/cop/style/symbol_literal.rb +1 -3
- data/lib/rubocop/cop/style/symbol_proc.rb +4 -9
- data/lib/rubocop/cop/style/ternary_parentheses.rb +3 -6
- data/lib/rubocop/cop/style/trailing_body_on_method_definition.rb +1 -2
- data/lib/rubocop/cop/style/trailing_comma_in_block_args.rb +2 -6
- data/lib/rubocop/cop/style/trailing_method_end_statement.rb +2 -5
- data/lib/rubocop/cop/style/trailing_underscore_variable.rb +4 -10
- data/lib/rubocop/cop/style/trivial_accessors.rb +2 -4
- data/lib/rubocop/cop/style/unless_else.rb +1 -2
- data/lib/rubocop/cop/style/unless_logical_operators.rb +2 -2
- data/lib/rubocop/cop/style/variable_interpolation.rb +1 -1
- data/lib/rubocop/cop/style/when_then.rb +1 -3
- data/lib/rubocop/cop/style/while_until_modifier.rb +1 -2
- data/lib/rubocop/cop/style/word_array.rb +1 -2
- data/lib/rubocop/cop/style/yoda_condition.rb +3 -11
- data/lib/rubocop/cop/style/zero_length_predicate.rb +1 -2
- data/lib/rubocop/cop/team.rb +2 -5
- data/lib/rubocop/cop/util.rb +8 -11
- data/lib/rubocop/cop/utils/format_string.rb +1 -3
- data/lib/rubocop/cop/variable_force.rb +6 -15
- data/lib/rubocop/cop/variable_force/assignment.rb +1 -2
- data/lib/rubocop/cop/variable_force/branch.rb +1 -2
- data/lib/rubocop/cop/variable_force/reference.rb +1 -3
- data/lib/rubocop/cop/variable_force/scope.rb +4 -8
- data/lib/rubocop/cop/variable_force/variable.rb +2 -4
- data/lib/rubocop/cops_documentation_generator.rb +7 -21
- data/lib/rubocop/directive_comment.rb +5 -0
- data/lib/rubocop/file_finder.rb +1 -3
- data/lib/rubocop/formatter/clang_style_formatter.rb +4 -2
- data/lib/rubocop/formatter/disabled_config_formatter.rb +3 -8
- data/lib/rubocop/formatter/git_hub_actions_formatter.rb +1 -5
- data/lib/rubocop/formatter/html_formatter.rb +4 -10
- data/lib/rubocop/formatter/json_formatter.rb +1 -5
- data/lib/rubocop/formatter/junit_formatter.rb +3 -9
- data/lib/rubocop/formatter/progress_formatter.rb +1 -3
- data/lib/rubocop/formatter/tap_formatter.rb +4 -2
- data/lib/rubocop/options.rb +27 -41
- data/lib/rubocop/path_util.rb +1 -3
- data/lib/rubocop/rake_task.rb +3 -0
- data/lib/rubocop/remote_config.rb +4 -7
- data/lib/rubocop/result_cache.rb +5 -12
- data/lib/rubocop/rspec/cop_helper.rb +1 -1
- data/lib/rubocop/rspec/expect_offense.rb +4 -9
- data/lib/rubocop/rspec/shared_contexts.rb +4 -15
- data/lib/rubocop/runner.rb +7 -14
- data/lib/rubocop/target_finder.rb +11 -16
- data/lib/rubocop/target_ruby.rb +4 -8
- data/lib/rubocop/version.rb +1 -1
- metadata +5 -5
- data/lib/rubocop/core_ext/hash.rb +0 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 580e325f7dc471739e2f4857d82e279776098ae14fff7367eaa803f688c9e58d
|
4
|
+
data.tar.gz: c8331c8b2ebbecb239d4a63dee21375172d1d2939572516bba910109ef5375a1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5f9ecd1e28e7fa7946b22aaecc0d5571337d85ca6b9a198e9542a9d26d05c9d0806597ccd66d0090c4318d349c7023fe201103fa197eaa88d5e98534d25ff755
|
7
|
+
data.tar.gz: 4bc7ec5d20c127826a1761b9495669242d53b740509ca13060c1202d0114062fb73a52738b9fb717f5348fdad7cb2a2fb5ee0ea4cc8a9b5823298908a0ce6a5b
|
data/README.md
CHANGED
@@ -10,6 +10,7 @@
|
|
10
10
|
[](https://codeclimate.com/github/rubocop/rubocop/test_coverage)
|
11
11
|
[](https://codeclimate.com/github/rubocop/rubocop/maintainability)
|
12
12
|
[](https://dependabot.com/compatibility-score.html?dependency-name=rubocop&package-manager=bundler&version-scheme=semver)
|
13
|
+
[](https://discord.gg/wJjWvGRDmm)
|
13
14
|
|
14
15
|
> Role models are important. <br/>
|
15
16
|
> -- Officer Alex J. Murphy / RoboCop
|
@@ -51,7 +52,7 @@ To prevent an unwanted RuboCop update you might want to use a conservative versi
|
|
51
52
|
in your `Gemfile`:
|
52
53
|
|
53
54
|
```rb
|
54
|
-
gem 'rubocop', '~> 1.
|
55
|
+
gem 'rubocop', '~> 1.13', require: false
|
55
56
|
```
|
56
57
|
|
57
58
|
See [our versioning policy](https://docs.rubocop.org/rubocop/versioning.html) for further details.
|
@@ -73,7 +74,7 @@ You can read a lot more about RuboCop in its [official docs](https://docs.ruboco
|
|
73
74
|
|
74
75
|
RuboCop officially supports the following Ruby implementations:
|
75
76
|
|
76
|
-
* MRI 2.
|
77
|
+
* MRI 2.5+
|
77
78
|
* JRuby 9.2+
|
78
79
|
|
79
80
|
See the [compatibility documentation](https://docs.rubocop.org/rubocop/compatibility.html) for further details.
|
data/config/default.yml
CHANGED
@@ -1101,6 +1101,14 @@ Layout/ParameterAlignment:
|
|
1101
1101
|
# But it can be overridden by setting this parameter
|
1102
1102
|
IndentationWidth: ~
|
1103
1103
|
|
1104
|
+
Layout/RedundantLineBreak:
|
1105
|
+
Description: >-
|
1106
|
+
Do not break up an expression into multiple lines when it fits
|
1107
|
+
on a single line.
|
1108
|
+
Enabled: false
|
1109
|
+
InspectBlocks: false
|
1110
|
+
VersionAdded: '1.13'
|
1111
|
+
|
1104
1112
|
Layout/RescueEnsureAlignment:
|
1105
1113
|
Description: 'Align rescues and ensures correctly.'
|
1106
1114
|
Enabled: true
|
@@ -1380,6 +1388,8 @@ Lint/AmbiguousBlockAssociation:
|
|
1380
1388
|
StyleGuide: '#syntax'
|
1381
1389
|
Enabled: true
|
1382
1390
|
VersionAdded: '0.48'
|
1391
|
+
VersionChanged: '1.13'
|
1392
|
+
IgnoredMethods: []
|
1383
1393
|
|
1384
1394
|
Lint/AmbiguousOperator:
|
1385
1395
|
Description: >-
|
data/exe/rubocop
CHANGED
@@ -9,9 +9,7 @@ require 'benchmark'
|
|
9
9
|
cli = RuboCop::CLI.new
|
10
10
|
result = 0
|
11
11
|
|
12
|
-
time = Benchmark.realtime
|
13
|
-
result = cli.run
|
14
|
-
end
|
12
|
+
time = Benchmark.realtime { result = cli.run }
|
15
13
|
|
16
14
|
puts "Finished in #{time} seconds" if cli.options[:debug] || cli.options[:display_time]
|
17
15
|
exit result
|
data/lib/rubocop.rb
CHANGED
@@ -18,7 +18,6 @@ require_relative 'rubocop/ext/regexp_node'
|
|
18
18
|
require_relative 'rubocop/ext/regexp_parser'
|
19
19
|
|
20
20
|
require_relative 'rubocop/core_ext/string'
|
21
|
-
require_relative 'rubocop/core_ext/hash'
|
22
21
|
require_relative 'rubocop/ext/processed_source'
|
23
22
|
|
24
23
|
require_relative 'rubocop/path_util'
|
@@ -222,6 +221,7 @@ require_relative 'rubocop/cop/layout/multiline_method_call_indentation'
|
|
222
221
|
require_relative 'rubocop/cop/layout/multiline_method_definition_brace_layout'
|
223
222
|
require_relative 'rubocop/cop/layout/multiline_operation_indentation'
|
224
223
|
require_relative 'rubocop/cop/layout/parameter_alignment'
|
224
|
+
require_relative 'rubocop/cop/layout/redundant_line_break'
|
225
225
|
require_relative 'rubocop/cop/layout/rescue_ensure_alignment'
|
226
226
|
require_relative 'rubocop/cop/layout/space_after_colon'
|
227
227
|
require_relative 'rubocop/cop/layout/space_after_comma'
|
data/lib/rubocop/cached_data.rb
CHANGED
@@ -51,9 +51,7 @@ module RuboCop
|
|
51
51
|
location = Parser::Source::Range.new(source_buffer,
|
52
52
|
o['location']['begin_pos'],
|
53
53
|
o['location']['end_pos'])
|
54
|
-
Cop::Offense.new(o['severity'], location,
|
55
|
-
o['message'],
|
56
|
-
o['cop_name'], o['status'].to_sym)
|
54
|
+
Cop::Offense.new(o['severity'], location, o['message'], o['cop_name'], o['status'].to_sym)
|
57
55
|
end
|
58
56
|
end
|
59
57
|
end
|
data/lib/rubocop/cli.rb
CHANGED
@@ -78,12 +78,10 @@ module RuboCop
|
|
78
78
|
end
|
79
79
|
|
80
80
|
def validate_options_vs_config
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
'UseCache: false is not allowed.'
|
86
|
-
end
|
81
|
+
return unless @options[:parallel] && !@config_store.for_pwd.for_all_cops['UseCache']
|
82
|
+
|
83
|
+
raise OptionArgumentError, '-P/--parallel uses caching to speed up execution, so combining ' \
|
84
|
+
'with AllCops: UseCache: false is not allowed.'
|
87
85
|
end
|
88
86
|
|
89
87
|
def act_on_options
|
@@ -14,10 +14,8 @@ module RuboCop
|
|
14
14
|
PHASE_1 = 'Phase 1 of 2: run Layout/LineLength cop'
|
15
15
|
PHASE_2 = 'Phase 2 of 2: run all cops'
|
16
16
|
|
17
|
-
PHASE_1_OVERRIDDEN =
|
18
|
-
|
19
|
-
PHASE_1_DISABLED =
|
20
|
-
'(skipped because Layout/LineLength is disabled)'
|
17
|
+
PHASE_1_OVERRIDDEN = '(skipped because the default Layout/LineLength:Max is overridden)'
|
18
|
+
PHASE_1_DISABLED = '(skipped because Layout/LineLength is disabled)'
|
21
19
|
|
22
20
|
def run
|
23
21
|
add_formatter
|
@@ -31,9 +29,7 @@ module RuboCop
|
|
31
29
|
def maybe_run_line_length_cop
|
32
30
|
if !line_length_enabled?(@config_store.for_pwd)
|
33
31
|
skip_line_length_cop(PHASE_1_DISABLED)
|
34
|
-
elsif !same_max_line_length?(
|
35
|
-
@config_store.for_pwd, ConfigLoader.default_configuration
|
36
|
-
)
|
32
|
+
elsif !same_max_line_length?(@config_store.for_pwd, ConfigLoader.default_configuration)
|
37
33
|
skip_line_length_cop(PHASE_1_OVERRIDDEN)
|
38
34
|
else
|
39
35
|
run_line_length_cop
|
@@ -71,10 +67,7 @@ module RuboCop
|
|
71
67
|
@options.delete(:only)
|
72
68
|
@config_store = ConfigStore.new
|
73
69
|
# Save the todo configuration of the LineLength cop.
|
74
|
-
|
75
|
-
.lines
|
76
|
-
.drop_while { |line| line.start_with?('#') }
|
77
|
-
.join
|
70
|
+
File.read(AUTO_GENERATED_FILE).lines.drop_while { |line| line.start_with?('#') }.join
|
78
71
|
end
|
79
72
|
|
80
73
|
def run_all_cops(line_length_contents)
|
@@ -82,9 +75,7 @@ module RuboCop
|
|
82
75
|
result = execute_runner
|
83
76
|
# This run was made with the current maximum length allowed, so append
|
84
77
|
# the saved setting for LineLength.
|
85
|
-
File.open(AUTO_GENERATED_FILE, 'a')
|
86
|
-
f.write(line_length_contents)
|
87
|
-
end
|
78
|
+
File.open(AUTO_GENERATED_FILE, 'a') { |f| f.write(line_length_contents) }
|
88
79
|
result
|
89
80
|
end
|
90
81
|
|
@@ -96,8 +87,7 @@ module RuboCop
|
|
96
87
|
end
|
97
88
|
|
98
89
|
def add_formatter
|
99
|
-
@options[:formatters] << [Formatter::DisabledConfigFormatter,
|
100
|
-
AUTO_GENERATED_FILE]
|
90
|
+
@options[:formatters] << [Formatter::DisabledConfigFormatter, AUTO_GENERATED_FILE]
|
101
91
|
end
|
102
92
|
|
103
93
|
def execute_runner
|
@@ -125,9 +115,9 @@ module RuboCop
|
|
125
115
|
end
|
126
116
|
|
127
117
|
def existing_configuration(config_file)
|
128
|
-
|
129
|
-
|
130
|
-
|
118
|
+
File.read(config_file, encoding: Encoding::UTF_8)
|
119
|
+
.sub(/^inherit_from: *[^\n]+/, '')
|
120
|
+
.sub(/^inherit_from: *(\n *- *[^\n]+)+/, '')
|
131
121
|
end
|
132
122
|
|
133
123
|
def write_config_file(file_name, file_string, rubocop_yml_contents)
|
@@ -26,10 +26,7 @@ module RuboCop
|
|
26
26
|
registry = Cop::Registry.global
|
27
27
|
show_all = @options[:show_cops].empty?
|
28
28
|
|
29
|
-
if show_all
|
30
|
-
puts "# Available cops (#{registry.length}) " \
|
31
|
-
"+ config for #{Dir.pwd}: "
|
32
|
-
end
|
29
|
+
puts "# Available cops (#{registry.length}) + config for #{Dir.pwd}: " if show_all
|
33
30
|
|
34
31
|
registry.departments.sort!.each do |department|
|
35
32
|
print_cops_of_department(registry, department, show_all)
|
@@ -25,16 +25,11 @@ module RuboCop
|
|
25
25
|
end
|
26
26
|
|
27
27
|
def extra_enabled_comments
|
28
|
-
extra_enabled_comments_with_names(
|
29
|
-
extras: Hash.new { |h, k| h[k] = [] },
|
30
|
-
names: Hash.new(0)
|
31
|
-
)
|
28
|
+
extra_enabled_comments_with_names(extras: Hash.new { |h, k| h[k] = [] }, names: Hash.new(0))
|
32
29
|
end
|
33
30
|
|
34
31
|
def comment_only_line?(line_number)
|
35
|
-
non_comment_token_line_numbers.none?
|
36
|
-
non_comment_line_number == line_number
|
37
|
-
end
|
32
|
+
non_comment_token_line_numbers.none?(line_number)
|
38
33
|
end
|
39
34
|
|
40
35
|
private
|
data/lib/rubocop/config.rb
CHANGED
@@ -45,9 +45,7 @@ module RuboCop
|
|
45
45
|
end
|
46
46
|
|
47
47
|
def check
|
48
|
-
deprecation_check
|
49
|
-
warn("#{loaded_path} - #{deprecation_message}")
|
50
|
-
end
|
48
|
+
deprecation_check { |deprecation_message| warn("#{loaded_path} - #{deprecation_message}") }
|
51
49
|
@validator.validate
|
52
50
|
make_excludes_absolute
|
53
51
|
self
|
@@ -67,8 +65,7 @@ module RuboCop
|
|
67
65
|
|
68
66
|
# True if this is a config file that is shipped with RuboCop
|
69
67
|
def internal?
|
70
|
-
base_config_path = File.expand_path(File.join(ConfigLoader::RUBOCOP_HOME,
|
71
|
-
'config'))
|
68
|
+
base_config_path = File.expand_path(File.join(ConfigLoader::RUBOCOP_HOME, 'config'))
|
72
69
|
File.expand_path(loaded_path).start_with?(base_config_path)
|
73
70
|
end
|
74
71
|
|
@@ -79,8 +76,7 @@ module RuboCop
|
|
79
76
|
|
80
77
|
self[key]['Exclude'].map! do |exclude_elem|
|
81
78
|
if exclude_elem.is_a?(String) && !absolute?(exclude_elem)
|
82
|
-
File.expand_path(File.join(base_dir_for_path_parameters,
|
83
|
-
exclude_elem))
|
79
|
+
File.expand_path(File.join(base_dir_for_path_parameters, exclude_elem))
|
84
80
|
else
|
85
81
|
exclude_elem
|
86
82
|
end
|
@@ -122,17 +118,14 @@ module RuboCop
|
|
122
118
|
# Note: the 'Enabled' attribute is same as that returned by `for_cop`
|
123
119
|
def for_badge(badge)
|
124
120
|
cop_config = for_cop(badge.to_s)
|
125
|
-
fetch(badge.department.to_s) { return cop_config }
|
126
|
-
.merge(cop_config)
|
121
|
+
fetch(badge.department.to_s) { return cop_config }.merge(cop_config)
|
127
122
|
end
|
128
123
|
|
129
124
|
# @return [Config] for the given department name.
|
130
125
|
# Note: the 'Enabled' attribute will be present only if specified
|
131
126
|
# at the department's level
|
132
127
|
def for_department(department_name)
|
133
|
-
@for_department ||= Hash.new
|
134
|
-
h[dept] = self[dept] || {}
|
135
|
-
end
|
128
|
+
@for_department ||= Hash.new { |h, dept| h[dept] = self[dept] || {} }
|
136
129
|
@for_department[department_name.to_s]
|
137
130
|
end
|
138
131
|
|
@@ -153,8 +146,7 @@ module RuboCop
|
|
153
146
|
|
154
147
|
# Optimization to quickly decide if the given file is hidden (on the top
|
155
148
|
# level) and cannot be matched by any pattern.
|
156
|
-
is_hidden = relative_file_path.start_with?('.') &&
|
157
|
-
!relative_file_path.start_with?('..')
|
149
|
+
is_hidden = relative_file_path.start_with?('.') && !relative_file_path.start_with?('..')
|
158
150
|
return false if is_hidden && !possibly_include_hidden?
|
159
151
|
|
160
152
|
absolute_file_path = File.expand_path(file)
|
@@ -163,8 +155,7 @@ module RuboCop
|
|
163
155
|
if block_given?
|
164
156
|
yield pattern, relative_file_path, absolute_file_path
|
165
157
|
else
|
166
|
-
match_path?(pattern, relative_file_path) ||
|
167
|
-
match_path?(pattern, absolute_file_path)
|
158
|
+
match_path?(pattern, relative_file_path) || match_path?(pattern, absolute_file_path)
|
168
159
|
end
|
169
160
|
end
|
170
161
|
end
|
@@ -177,8 +168,7 @@ module RuboCop
|
|
177
168
|
|
178
169
|
file_to_include?(file) do |pattern, relative_path, absolute_path|
|
179
170
|
/[A-Z]/.match?(pattern.to_s) &&
|
180
|
-
(match_path?(pattern, relative_path) ||
|
181
|
-
match_path?(pattern, absolute_path))
|
171
|
+
(match_path?(pattern, relative_path) || match_path?(pattern, absolute_path))
|
182
172
|
end
|
183
173
|
end
|
184
174
|
|
@@ -194,9 +184,7 @@ module RuboCop
|
|
194
184
|
|
195
185
|
def file_to_exclude?(file)
|
196
186
|
file = File.expand_path(file)
|
197
|
-
patterns_to_exclude.any?
|
198
|
-
match_path?(pattern, file)
|
199
|
-
end
|
187
|
+
patterns_to_exclude.any? { |pattern| match_path?(pattern, file) }
|
200
188
|
end
|
201
189
|
|
202
190
|
def patterns_to_include
|
@@ -267,8 +255,7 @@ module RuboCop
|
|
267
255
|
private
|
268
256
|
|
269
257
|
def target_rails_version_from_bundler_lock_file
|
270
|
-
@target_rails_version_from_bundler_lock_file ||=
|
271
|
-
read_rails_version_from_bundler_lock_file
|
258
|
+
@target_rails_version_from_bundler_lock_file ||= read_rails_version_from_bundler_lock_file
|
272
259
|
end
|
273
260
|
|
274
261
|
def read_rails_version_from_bundler_lock_file
|
@@ -288,9 +275,7 @@ module RuboCop
|
|
288
275
|
return true if cop_options['Enabled'] == true
|
289
276
|
|
290
277
|
department = department_of(qualified_cop_name)
|
291
|
-
cop_enabled = cop_options.fetch('Enabled')
|
292
|
-
!for_all_cops['DisabledByDefault']
|
293
|
-
end
|
278
|
+
cop_enabled = cop_options.fetch('Enabled') { !for_all_cops['DisabledByDefault'] }
|
294
279
|
return true if cop_enabled == 'override_department'
|
295
280
|
return false if department && department['Enabled'] == false
|
296
281
|
|
@@ -22,8 +22,7 @@ module RuboCop
|
|
22
22
|
class << self
|
23
23
|
include FileFinder
|
24
24
|
|
25
|
-
attr_accessor :debug, :ignore_parent_exclusion,
|
26
|
-
:disable_pending_cops, :enable_pending_cops
|
25
|
+
attr_accessor :debug, :ignore_parent_exclusion, :disable_pending_cops, :enable_pending_cops
|
27
26
|
attr_writer :default_configuration, :project_root
|
28
27
|
attr_reader :loaded_features
|
29
28
|
|
@@ -58,9 +57,7 @@ module RuboCop
|
|
58
57
|
|
59
58
|
def load_yaml_configuration(absolute_path)
|
60
59
|
file_contents = read_file(absolute_path)
|
61
|
-
yaml_code = Dir.chdir(File.dirname(absolute_path))
|
62
|
-
ERB.new(file_contents).result
|
63
|
-
end
|
60
|
+
yaml_code = Dir.chdir(File.dirname(absolute_path)) { ERB.new(file_contents).result }
|
64
61
|
check_duplication(yaml_code, absolute_path)
|
65
62
|
hash = yaml_safe_load(yaml_code, absolute_path) || {}
|
66
63
|
|
@@ -156,9 +153,7 @@ module RuboCop
|
|
156
153
|
|
157
154
|
warn Rainbow(PENDING_BANNER).yellow
|
158
155
|
|
159
|
-
pending_cops.each
|
160
|
-
warn_pending_cop cop
|
161
|
-
end
|
156
|
+
pending_cops.each { |cop| warn_pending_cop cop }
|
162
157
|
|
163
158
|
warn Rainbow('For more information: https://docs.rubocop.org/rubocop/versioning.html').yellow
|
164
159
|
end
|
@@ -246,10 +241,9 @@ module RuboCop
|
|
246
241
|
# stderr. Care is taken to use the standard OS exit code for a "file not
|
247
242
|
# found" error.
|
248
243
|
def read_file(absolute_path)
|
249
|
-
|
244
|
+
File.read(absolute_path, encoding: Encoding::UTF_8)
|
250
245
|
rescue Errno::ENOENT
|
251
|
-
raise ConfigNotFoundError,
|
252
|
-
"Configuration file not found: #{absolute_path}"
|
246
|
+
raise ConfigNotFoundError, "Configuration file not found: #{absolute_path}"
|
253
247
|
end
|
254
248
|
|
255
249
|
def yaml_safe_load(yaml_code, filename)
|
@@ -37,16 +37,30 @@ module RuboCop
|
|
37
37
|
inherit_mode: determine_inherit_mode(hash, k))
|
38
38
|
end
|
39
39
|
hash[k] = v
|
40
|
+
fix_include_paths(base_config.loaded_path, hash, path, k, v) if v.key?('Include')
|
40
41
|
end
|
41
42
|
end
|
42
43
|
end
|
43
44
|
|
45
|
+
# When one .rubocop.yml file inherits from another .rubocop.yml file, the Include paths in the
|
46
|
+
# base configuration are relative to the directory where the base configuration file is. For the
|
47
|
+
# derived configuration, we need to make those paths relative to where the derived configuration
|
48
|
+
# file is.
|
49
|
+
def fix_include_paths(base_config_path, hash, path, key, value)
|
50
|
+
return unless File.basename(base_config_path).start_with?('.rubocop')
|
51
|
+
|
52
|
+
base_dir = File.dirname(base_config_path)
|
53
|
+
derived_dir = File.dirname(path)
|
54
|
+
hash[key]['Include'] = value['Include'].map do |include_path|
|
55
|
+
PathUtil.relative_path(File.join(base_dir, include_path), derived_dir)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
44
59
|
def resolve_inheritance_from_gems(hash)
|
45
60
|
gems = hash.delete('inherit_gem')
|
46
61
|
(gems || {}).each_pair do |gem_name, config_path|
|
47
62
|
if gem_name == 'rubocop'
|
48
|
-
raise ArgumentError,
|
49
|
-
"can't inherit configuration from the rubocop gem"
|
63
|
+
raise ArgumentError, "can't inherit configuration from the rubocop gem"
|
50
64
|
end
|
51
65
|
|
52
66
|
hash['inherit_from'] = Array(hash['inherit_from'])
|
@@ -77,8 +91,7 @@ module RuboCop
|
|
77
91
|
config = handle_disabled_by_default(config, default_configuration) if disabled_by_default
|
78
92
|
override_enabled_for_disabled_departments(default_configuration, config)
|
79
93
|
|
80
|
-
opts = { inherit_mode: config['inherit_mode'] || {},
|
81
|
-
unset_nil: unset_nil }
|
94
|
+
opts = { inherit_mode: config['inherit_mode'] || {}, unset_nil: unset_nil }
|
82
95
|
Config.new(merge(default_configuration, config, **opts), config_file)
|
83
96
|
end
|
84
97
|
|
@@ -112,8 +125,7 @@ module RuboCop
|
|
112
125
|
next unless key =~ %r{(.*)/.*}
|
113
126
|
|
114
127
|
department = Regexp.last_match(1)
|
115
|
-
next unless disabled?(derived_hash, department) ||
|
116
|
-
disabled?(base_hash, department)
|
128
|
+
next unless disabled?(derived_hash, department) || disabled?(base_hash, department)
|
117
129
|
|
118
130
|
# The `override_department` setting for the `Enabled` parameter is an
|
119
131
|
# internal setting that's not documented in the manual. It will cause a
|
@@ -155,13 +167,10 @@ module RuboCop
|
|
155
167
|
end
|
156
168
|
|
157
169
|
def warn_on_duplicate_setting(base_hash, derived_hash, key, **opts)
|
158
|
-
return unless duplicate_setting?(base_hash, derived_hash,
|
159
|
-
key, opts[:inherited_file])
|
170
|
+
return unless duplicate_setting?(base_hash, derived_hash, key, opts[:inherited_file])
|
160
171
|
|
161
|
-
inherit_mode = opts[:inherit_mode]['merge'] ||
|
162
|
-
|
163
|
-
return if base_hash[key].is_a?(Array) &&
|
164
|
-
inherit_mode && inherit_mode.include?(key)
|
172
|
+
inherit_mode = opts[:inherit_mode]['merge'] || opts[:inherit_mode]['override']
|
173
|
+
return if base_hash[key].is_a?(Array) && inherit_mode && inherit_mode.include?(key)
|
165
174
|
|
166
175
|
puts "#{PathUtil.smart_path(opts[:file])}: " \
|
167
176
|
"#{opts[:cop_name]}:#{key} overrides " \
|
@@ -251,8 +260,7 @@ module RuboCop
|
|
251
260
|
|
252
261
|
File.join(gem_path, relative_config_path)
|
253
262
|
rescue Gem::LoadError => e
|
254
|
-
raise Gem::LoadError,
|
255
|
-
"Unable to find gem #{gem_name}; is the gem installed? #{e}"
|
263
|
+
raise Gem::LoadError, "Unable to find gem #{gem_name}; is the gem installed? #{e}"
|
256
264
|
end
|
257
265
|
end
|
258
266
|
end
|