rubocop 1.10.0 → 1.14.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 +15 -14
- data/assets/output.html.erb +1 -1
- data/config/default.yml +60 -3
- data/exe/rubocop +1 -3
- data/lib/rubocop.rb +6 -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/execute_runner.rb +1 -1
- data/lib/rubocop/cli/command/init_dotfile.rb +1 -3
- data/lib/rubocop/cli/command/show_cops.rb +1 -4
- data/lib/rubocop/cli/command/suggest_extensions.rb +3 -2
- data/lib/rubocop/comment_config.rb +45 -101
- 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 +3 -3
- data/lib/rubocop/cop/bundler/gem_comment.rb +43 -10
- data/lib/rubocop/cop/bundler/gem_version.rb +99 -0
- data/lib/rubocop/cop/bundler/insecure_protocol_source.rb +1 -0
- data/lib/rubocop/cop/bundler/ordered_gems.rb +2 -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 +6 -12
- 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/date_assignment.rb +1 -0
- data/lib/rubocop/cop/gemspec/duplicated_assignment.rb +3 -2
- data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +2 -4
- data/lib/rubocop/cop/gemspec/required_ruby_version.rb +2 -0
- data/lib/rubocop/cop/gemspec/ruby_version_globals_usage.rb +2 -0
- data/lib/rubocop/cop/generator.rb +3 -6
- 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.rb +1 -0
- data/lib/rubocop/cop/internal_affairs/example_description.rb +7 -4
- data/lib/rubocop/cop/internal_affairs/method_name_equal.rb +3 -5
- data/lib/rubocop/cop/internal_affairs/node_destructuring.rb +3 -3
- data/lib/rubocop/cop/internal_affairs/node_matcher_directive.rb +151 -0
- data/lib/rubocop/cop/internal_affairs/node_type_predicate.rb +2 -3
- data/lib/rubocop/cop/internal_affairs/offense_location_keyword.rb +3 -2
- data/lib/rubocop/cop/internal_affairs/redundant_described_class_as_subject.rb +1 -0
- data/lib/rubocop/cop/internal_affairs/redundant_let_rubocop_config_new.rb +1 -0
- data/lib/rubocop/cop/internal_affairs/redundant_location_argument.rb +1 -0
- data/lib/rubocop/cop/internal_affairs/redundant_message_argument.rb +3 -0
- data/lib/rubocop/cop/internal_affairs/style_detected_api_use.rb +5 -2
- data/lib/rubocop/cop/internal_affairs/useless_message_assertion.rb +3 -3
- data/lib/rubocop/cop/layout/access_modifier_indentation.rb +12 -10
- data/lib/rubocop/cop/layout/argument_alignment.rb +8 -9
- data/lib/rubocop/cop/layout/array_alignment.rb +7 -6
- data/lib/rubocop/cop/layout/assignment_indentation.rb +8 -7
- data/lib/rubocop/cop/layout/begin_end_alignment.rb +1 -4
- data/lib/rubocop/cop/layout/block_alignment.rb +8 -19
- data/lib/rubocop/cop/layout/block_end_newline.rb +4 -8
- data/lib/rubocop/cop/layout/case_indentation.rb +1 -3
- data/lib/rubocop/cop/layout/class_structure.rb +5 -10
- data/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +18 -30
- data/lib/rubocop/cop/layout/comment_indentation.rb +17 -21
- 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 +10 -9
- 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 +5 -9
- data/lib/rubocop/cop/layout/first_argument_indentation.rb +11 -5
- data/lib/rubocop/cop/layout/first_array_element_indentation.rb +10 -8
- data/lib/rubocop/cop/layout/first_array_element_line_break.rb +1 -2
- data/lib/rubocop/cop/layout/first_hash_element_indentation.rb +24 -20
- 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/first_parameter_indentation.rb +6 -5
- 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_consistency.rb +9 -6
- data/lib/rubocop/cop/layout/indentation_style.rb +25 -30
- data/lib/rubocop/cop/layout/indentation_width.rb +21 -11
- 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 +22 -15
- data/lib/rubocop/cop/layout/multiline_operation_indentation.rb +10 -5
- data/lib/rubocop/cop/layout/parameter_alignment.rb +6 -5
- data/lib/rubocop/cop/layout/redundant_line_break.rb +137 -0
- data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +3 -6
- data/lib/rubocop/cop/layout/single_line_block_chain.rb +53 -0
- 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 +2 -3
- 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 +6 -11
- 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/big_decimal_new.rb +1 -0
- data/lib/rubocop/cop/lint/boolean_symbol.rb +2 -2
- data/lib/rubocop/cop/lint/constant_definition_in_block.rb +2 -0
- data/lib/rubocop/cop/lint/constant_resolution.rb +2 -2
- data/lib/rubocop/cop/lint/debugger.rb +3 -1
- data/lib/rubocop/cop/lint/deprecated_class_methods.rb +79 -41
- data/lib/rubocop/cop/lint/deprecated_constants.rb +3 -3
- data/lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb +3 -5
- data/lib/rubocop/cop/lint/duplicate_branch.rb +2 -3
- data/lib/rubocop/cop/lint/duplicate_hash_key.rb +1 -3
- data/lib/rubocop/cop/lint/duplicate_methods.rb +6 -7
- data/lib/rubocop/cop/lint/duplicate_require.rb +1 -0
- data/lib/rubocop/cop/lint/each_with_object_argument.rb +1 -0
- 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 +4 -7
- data/lib/rubocop/cop/lint/float_out_of_range.rb +1 -2
- data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +4 -6
- data/lib/rubocop/cop/lint/hash_compare_by_identity.rb +1 -0
- 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 +4 -7
- data/lib/rubocop/cop/lint/inherit_exception.rb +2 -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/multiple_comparison.rb +1 -0
- data/lib/rubocop/cop/lint/nested_method_definition.rb +4 -2
- data/lib/rubocop/cop/lint/nested_percent_literal.rb +1 -3
- data/lib/rubocop/cop/lint/next_without_accumulator.rb +1 -0
- data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +8 -3
- data/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +3 -0
- data/lib/rubocop/cop/lint/number_conversion.rb +13 -5
- 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 +3 -2
- data/lib/rubocop/cop/lint/rand_one.rb +2 -2
- data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +9 -22
- data/lib/rubocop/cop/lint/redundant_require_statement.rb +1 -0
- data/lib/rubocop/cop/lint/redundant_safe_navigation.rb +2 -3
- data/lib/rubocop/cop/lint/redundant_splat_expansion.rb +5 -7
- data/lib/rubocop/cop/lint/redundant_string_coercion.rb +2 -2
- data/lib/rubocop/cop/lint/redundant_with_index.rb +2 -4
- data/lib/rubocop/cop/lint/redundant_with_object.rb +2 -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 +2 -2
- data/lib/rubocop/cop/lint/safe_navigation_consistency.rb +4 -10
- data/lib/rubocop/cop/lint/safe_navigation_with_empty.rb +2 -2
- data/lib/rubocop/cop/lint/send_with_mixin_argument.rb +3 -7
- data/lib/rubocop/cop/lint/shadowed_argument.rb +5 -11
- data/lib/rubocop/cop/lint/shadowed_exception.rb +7 -8
- data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +1 -0
- data/lib/rubocop/cop/lint/struct_new_override.rb +2 -2
- data/lib/rubocop/cop/lint/suppressed_exception.rb +44 -1
- data/lib/rubocop/cop/lint/symbol_conversion.rb +91 -6
- data/lib/rubocop/cop/lint/syntax.rb +1 -3
- data/lib/rubocop/cop/lint/to_enum_arguments.rb +3 -0
- 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/unified_integer.rb +1 -0
- data/lib/rubocop/cop/lint/unmodified_reduce_accumulator.rb +5 -0
- data/lib/rubocop/cop/lint/unreachable_code.rb +3 -5
- data/lib/rubocop/cop/lint/unreachable_loop.rb +15 -7
- data/lib/rubocop/cop/lint/unused_block_argument.rb +9 -7
- data/lib/rubocop/cop/lint/unused_method_argument.rb +2 -2
- data/lib/rubocop/cop/lint/uri_escape_unescape.rb +1 -0
- data/lib/rubocop/cop/lint/useless_access_modifier.rb +6 -4
- data/lib/rubocop/cop/lint/useless_assignment.rb +4 -9
- data/lib/rubocop/cop/lint/useless_setter_call.rb +2 -3
- data/lib/rubocop/cop/lint/useless_times.rb +3 -0
- 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 +3 -6
- data/lib/rubocop/cop/metrics/parameter_lists.rb +3 -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/code_length_calculator.rb +6 -4
- data/lib/rubocop/cop/metrics/utils/repeated_attribute_discount.rb +4 -7
- data/lib/rubocop/cop/migration/department_name.rb +3 -7
- data/lib/rubocop/cop/mixin/alignment.rb +12 -7
- 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/comments_help.rb +5 -1
- 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 +3 -5
- data/lib/rubocop/cop/mixin/documentation_comment.rb +3 -6
- data/lib/rubocop/cop/mixin/empty_lines_around_body.rb +6 -7
- data/lib/rubocop/cop/mixin/empty_parameter.rb +2 -3
- data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +1 -3
- data/lib/rubocop/cop/mixin/enforce_superclass.rb +4 -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/gem_declaration.rb +13 -0
- data/lib/rubocop/cop/mixin/hash_alignment_styles.rb +3 -6
- data/lib/rubocop/cop/mixin/hash_transform_method.rb +8 -22
- data/lib/rubocop/cop/mixin/interpolation.rb +1 -3
- data/lib/rubocop/cop/mixin/line_length_help.rb +13 -10
- data/lib/rubocop/cop/mixin/match_range.rb +2 -5
- data/lib/rubocop/cop/mixin/method_complexity.rb +2 -3
- data/lib/rubocop/cop/mixin/method_preference.rb +1 -2
- data/lib/rubocop/cop/mixin/multiline_element_indentation.rb +4 -3
- data/lib/rubocop/cop/mixin/multiline_element_line_breaks.rb +1 -3
- data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +11 -40
- data/lib/rubocop/cop/mixin/multiline_literal_brace_layout.rb +1 -2
- data/lib/rubocop/cop/mixin/negative_conditional.rb +4 -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 +4 -7
- data/lib/rubocop/cop/mixin/range_help.rb +10 -13
- data/lib/rubocop/cop/mixin/rational_literal.rb +1 -0
- data/lib/rubocop/cop/mixin/rescue_node.rb +2 -6
- data/lib/rubocop/cop/mixin/safe_assignment.rb +6 -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/string_literals_help.rb +1 -1
- 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 +7 -13
- data/lib/rubocop/cop/mixin/unused_argument.rb +1 -3
- data/lib/rubocop/cop/mixin/visibility_help.rb +1 -0
- data/lib/rubocop/cop/naming/ascii_identifiers.rb +2 -4
- data/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +2 -2
- data/lib/rubocop/cop/naming/constant_name.rb +2 -0
- data/lib/rubocop/cop/naming/file_name.rb +7 -16
- data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +8 -3
- data/lib/rubocop/cop/naming/method_name.rb +4 -2
- data/lib/rubocop/cop/naming/predicate_name.rb +2 -2
- data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +10 -0
- data/lib/rubocop/cop/offense.rb +3 -8
- data/lib/rubocop/cop/registry.rb +12 -11
- data/lib/rubocop/cop/security/eval.rb +1 -0
- data/lib/rubocop/cop/security/json_load.rb +1 -0
- data/lib/rubocop/cop/security/marshal_load.rb +1 -0
- data/lib/rubocop/cop/security/open.rb +1 -0
- data/lib/rubocop/cop/security/yaml_load.rb +1 -0
- data/lib/rubocop/cop/style/access_modifier_declarations.rb +4 -5
- data/lib/rubocop/cop/style/accessor_grouping.rb +1 -3
- data/lib/rubocop/cop/style/alias.rb +6 -12
- data/lib/rubocop/cop/style/and_or.rb +3 -1
- data/lib/rubocop/cop/style/arguments_forwarding.rb +4 -3
- data/lib/rubocop/cop/style/array_coercion.rb +2 -0
- data/lib/rubocop/cop/style/array_join.rb +1 -0
- data/lib/rubocop/cop/style/ascii_comments.rb +1 -2
- data/lib/rubocop/cop/style/attr.rb +2 -3
- data/lib/rubocop/cop/style/auto_resource_cleanup.rb +2 -5
- data/lib/rubocop/cop/style/bisected_attr_accessor.rb +59 -71
- data/lib/rubocop/cop/style/bisected_attr_accessor/macro.rb +60 -0
- data/lib/rubocop/cop/style/case_equality.rb +2 -1
- data/lib/rubocop/cop/style/case_like_if.rb +16 -6
- data/lib/rubocop/cop/style/character_literal.rb +2 -4
- data/lib/rubocop/cop/style/class_and_module_children.rb +6 -9
- data/lib/rubocop/cop/style/class_equality_comparison.rb +3 -0
- data/lib/rubocop/cop/style/class_methods.rb +1 -3
- data/lib/rubocop/cop/style/collection_compact.rb +3 -3
- data/lib/rubocop/cop/style/colon_method_call.rb +2 -3
- data/lib/rubocop/cop/style/combinable_loops.rb +3 -2
- data/lib/rubocop/cop/style/command_literal.rb +4 -9
- 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 +12 -24
- data/lib/rubocop/cop/style/constant_visibility.rb +1 -0
- data/lib/rubocop/cop/style/copyright.rb +3 -6
- data/lib/rubocop/cop/style/date_time.rb +5 -5
- data/lib/rubocop/cop/style/def_with_parentheses.rb +1 -2
- data/lib/rubocop/cop/style/dir.rb +1 -0
- data/lib/rubocop/cop/style/disable_cops_within_source_code_directive.rb +2 -2
- data/lib/rubocop/cop/style/documentation.rb +30 -3
- data/lib/rubocop/cop/style/documentation_method.rb +1 -0
- data/lib/rubocop/cop/style/double_negation.rb +1 -0
- data/lib/rubocop/cop/style/each_for_simple_loop.rb +2 -2
- data/lib/rubocop/cop/style/each_with_object.rb +1 -0
- 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 +13 -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 +2 -3
- data/lib/rubocop/cop/style/eval_with_location.rb +5 -5
- data/lib/rubocop/cop/style/even_odd.rb +1 -0
- data/lib/rubocop/cop/style/expand_path_arguments.rb +4 -3
- data/lib/rubocop/cop/style/explicit_block_argument.rb +2 -4
- data/lib/rubocop/cop/style/float_division.rb +4 -0
- data/lib/rubocop/cop/style/format_string.rb +2 -0
- data/lib/rubocop/cop/style/format_string_token.rb +2 -4
- data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +3 -11
- data/lib/rubocop/cop/style/global_std_stream.rb +1 -0
- data/lib/rubocop/cop/style/guard_clause.rb +3 -7
- data/lib/rubocop/cop/style/hash_conversion.rb +57 -5
- data/lib/rubocop/cop/style/hash_each_methods.rb +2 -2
- data/lib/rubocop/cop/style/hash_except.rb +1 -0
- data/lib/rubocop/cop/style/hash_like_case.rb +2 -2
- data/lib/rubocop/cop/style/hash_syntax.rb +20 -24
- data/lib/rubocop/cop/style/hash_transform_keys.rb +4 -0
- data/lib/rubocop/cop/style/hash_transform_values.rb +4 -0
- data/lib/rubocop/cop/style/identical_conditional_branches.rb +1 -3
- data/lib/rubocop/cop/style/if_unless_modifier.rb +40 -13
- data/lib/rubocop/cop/style/if_with_boolean_literal_branches.rb +2 -0
- data/lib/rubocop/cop/style/implicit_runtime_error.rb +1 -0
- data/lib/rubocop/cop/style/infinite_loop.rb +2 -5
- data/lib/rubocop/cop/style/inverse_methods.rb +5 -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 +47 -3
- data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +26 -16
- 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 +2 -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 +3 -2
- data/lib/rubocop/cop/style/module_function.rb +8 -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 +22 -5
- data/lib/rubocop/cop/style/mutable_constant.rb +7 -10
- data/lib/rubocop/cop/style/negated_if.rb +1 -2
- data/lib/rubocop/cop/style/negated_if_else_condition.rb +24 -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/nil_comparison.rb +3 -0
- data/lib/rubocop/cop/style/nil_lambda.rb +1 -0
- data/lib/rubocop/cop/style/non_nil_check.rb +9 -5
- data/lib/rubocop/cop/style/numeric_literals.rb +3 -11
- data/lib/rubocop/cop/style/numeric_predicate.rb +5 -7
- data/lib/rubocop/cop/style/one_line_conditional.rb +1 -2
- data/lib/rubocop/cop/style/option_hash.rb +2 -3
- data/lib/rubocop/cop/style/optional_arguments.rb +2 -5
- data/lib/rubocop/cop/style/or_assignment.rb +4 -6
- data/lib/rubocop/cop/style/parallel_assignment.rb +12 -9
- data/lib/rubocop/cop/style/parentheses_around_condition.rb +1 -0
- 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 +2 -2
- data/lib/rubocop/cop/style/raise_args.rb +4 -8
- data/lib/rubocop/cop/style/random_with_offset.rb +8 -8
- data/lib/rubocop/cop/style/redundant_argument.rb +2 -11
- data/lib/rubocop/cop/style/redundant_assignment.rb +2 -3
- data/lib/rubocop/cop/style/redundant_begin.rb +47 -7
- 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 +5 -6
- data/lib/rubocop/cop/style/redundant_exception.rb +5 -6
- data/lib/rubocop/cop/style/redundant_fetch_block.rb +2 -0
- data/lib/rubocop/cop/style/redundant_file_extension_in_require.rb +2 -1
- data/lib/rubocop/cop/style/redundant_freeze.rb +2 -2
- data/lib/rubocop/cop/style/redundant_interpolation.rb +1 -2
- data/lib/rubocop/cop/style/redundant_parentheses.rb +21 -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 +6 -4
- data/lib/rubocop/cop/style/redundant_self.rb +9 -9
- data/lib/rubocop/cop/style/redundant_self_assignment.rb +4 -2
- data/lib/rubocop/cop/style/redundant_sort.rb +3 -5
- data/lib/rubocop/cop/style/redundant_sort_by.rb +1 -0
- data/lib/rubocop/cop/style/regexp_literal.rb +4 -8
- data/lib/rubocop/cop/style/rescue_modifier.rb +21 -14
- data/lib/rubocop/cop/style/rescue_standard_error.rb +5 -7
- data/lib/rubocop/cop/style/return_nil.rb +7 -2
- data/lib/rubocop/cop/style/safe_navigation.rb +12 -21
- data/lib/rubocop/cop/style/sample.rb +1 -0
- data/lib/rubocop/cop/style/send.rb +1 -2
- data/lib/rubocop/cop/style/signal_exception.rb +6 -7
- data/lib/rubocop/cop/style/single_argument_dig.rb +2 -2
- data/lib/rubocop/cop/style/single_line_block_params.rb +2 -5
- data/lib/rubocop/cop/style/single_line_methods.rb +21 -4
- data/lib/rubocop/cop/style/slicing_with_range.rb +1 -0
- data/lib/rubocop/cop/style/sole_nested_conditional.rb +31 -7
- 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 +3 -6
- data/lib/rubocop/cop/style/string_chars.rb +39 -0
- data/lib/rubocop/cop/style/string_concatenation.rb +9 -10
- data/lib/rubocop/cop/style/string_hash_keys.rb +2 -0
- data/lib/rubocop/cop/style/string_literals.rb +2 -5
- data/lib/rubocop/cop/style/strip.rb +1 -0
- data/lib/rubocop/cop/style/struct_inheritance.rb +11 -0
- data/lib/rubocop/cop/style/symbol_literal.rb +1 -3
- data/lib/rubocop/cop/style/symbol_proc.rb +29 -10
- data/lib/rubocop/cop/style/ternary_parentheses.rb +4 -6
- data/lib/rubocop/cop/style/trailing_body_on_method_definition.rb +6 -2
- data/lib/rubocop/cop/style/trailing_comma_in_block_args.rb +2 -6
- data/lib/rubocop/cop/style/trailing_method_end_statement.rb +3 -6
- data/lib/rubocop/cop/style/trailing_underscore_variable.rb +4 -10
- data/lib/rubocop/cop/style/trivial_accessors.rb +3 -4
- data/lib/rubocop/cop/style/unless_else.rb +1 -2
- data/lib/rubocop/cop/style/unless_logical_operators.rb +105 -0
- data/lib/rubocop/cop/style/unpack_first.rb +1 -0
- 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 +4 -11
- data/lib/rubocop/cop/style/zero_length_predicate.rb +6 -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 +16 -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 +69 -9
- data/lib/rubocop/ext/regexp_parser.rb +3 -6
- 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/magic_comment.rb +1 -1
- data/lib/rubocop/name_similarity.rb +1 -1
- 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 +8 -15
- data/lib/rubocop/runner.rb +7 -14
- data/lib/rubocop/target_finder.rb +19 -16
- data/lib/rubocop/target_ruby.rb +25 -21
- data/lib/rubocop/version.rb +1 -1
- metadata +18 -11
- data/lib/rubocop/core_ext/hash.rb +0 -20
@@ -16,7 +16,7 @@ module RuboCop
|
|
16
16
|
# DidYouMean::SpellChecker is not available in all versions of Ruby, and
|
17
17
|
# even on versions where it *is* available (>= 2.3), it is not always
|
18
18
|
# required correctly. So we do a feature check first.
|
19
|
-
# See: https://github.com/rubocop
|
19
|
+
# See: https://github.com/rubocop/rubocop/issues/7979
|
20
20
|
return [] unless defined?(DidYouMean::SpellChecker)
|
21
21
|
|
22
22
|
names = names.dup
|
data/lib/rubocop/options.rb
CHANGED
@@ -112,9 +112,7 @@ module RuboCop
|
|
112
112
|
@options.replace(ConfigRegeneration.new.options.merge(@options))
|
113
113
|
end
|
114
114
|
|
115
|
-
option(opts, '--exclude-limit COUNT')
|
116
|
-
@validator.validate_exclude_limit_option
|
117
|
-
end
|
115
|
+
option(opts, '--exclude-limit COUNT') { @validator.validate_exclude_limit_option }
|
118
116
|
|
119
117
|
option(opts, '--disable-uncorrectable')
|
120
118
|
|
@@ -161,9 +159,7 @@ module RuboCop
|
|
161
159
|
|
162
160
|
def add_cache_options(opts)
|
163
161
|
option(opts, '-C', '--cache FLAG')
|
164
|
-
option(opts, '--cache-root DIR')
|
165
|
-
@validator.validate_cache_enabled_for_cache_root
|
166
|
-
end
|
162
|
+
option(opts, '--cache-root DIR') { @validator.validate_cache_enabled_for_cache_root }
|
167
163
|
end
|
168
164
|
|
169
165
|
# rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
@@ -173,16 +169,12 @@ module RuboCop
|
|
173
169
|
option(opts, '-D', '--[no-]display-cop-names')
|
174
170
|
option(opts, '-E', '--extra-details')
|
175
171
|
option(opts, '-S', '--display-style-guide')
|
176
|
-
option(opts, '-a', '--auto-correct')
|
177
|
-
@options[:safe_auto_correct] = true
|
178
|
-
end
|
172
|
+
option(opts, '-a', '--auto-correct') { @options[:safe_auto_correct] = true }
|
179
173
|
option(opts, '--safe-auto-correct') do
|
180
174
|
warn '--safe-auto-correct is deprecated; use --auto-correct'
|
181
175
|
@options[:safe_auto_correct] = @options[:auto_correct] = true
|
182
176
|
end
|
183
|
-
option(opts, '-A', '--auto-correct-all')
|
184
|
-
@options[:auto_correct] = true
|
185
|
-
end
|
177
|
+
option(opts, '-A', '--auto-correct-all') { @options[:auto_correct] = true }
|
186
178
|
option(opts, '--disable-pending-cops')
|
187
179
|
option(opts, '--enable-pending-cops')
|
188
180
|
option(opts, '--ignore-disable-comments')
|
@@ -194,7 +186,7 @@ module RuboCop
|
|
194
186
|
|
195
187
|
option(opts, '-v', '--version')
|
196
188
|
option(opts, '-V', '--verbose-version')
|
197
|
-
option(opts, '-P', '--parallel')
|
189
|
+
option(opts, '-P', '--[no-]parallel')
|
198
190
|
end
|
199
191
|
# rubocop:enable Metrics/MethodLength, Metrics/AbcSize
|
200
192
|
|
@@ -229,8 +221,7 @@ module RuboCop
|
|
229
221
|
# e.g. [..., '--auto-correct', ...] to :auto_correct.
|
230
222
|
def long_opt_symbol(args)
|
231
223
|
long_opt = args.find { |arg| arg.start_with?('--') }
|
232
|
-
long_opt[2..-1].sub('[no-]', '').sub(/ .*/, '')
|
233
|
-
.tr('-', '_').gsub(/[\[\]]/, '').to_sym
|
224
|
+
long_opt[2..-1].sub('[no-]', '').sub(/ .*/, '').tr('-', '_').gsub(/[\[\]]/, '').to_sym
|
234
225
|
end
|
235
226
|
|
236
227
|
def require_feature(file)
|
@@ -286,16 +277,13 @@ module RuboCop
|
|
286
277
|
end
|
287
278
|
|
288
279
|
def validate_cop_options
|
289
|
-
%i[only except].each
|
290
|
-
OptionsValidator.validate_cop_list(@options[opt])
|
291
|
-
end
|
280
|
+
%i[only except].each { |opt| OptionsValidator.validate_cop_list(@options[opt]) }
|
292
281
|
end
|
293
282
|
|
294
283
|
# rubocop:disable Metrics/AbcSize
|
295
284
|
def validate_compatibility # rubocop:disable Metrics/MethodLength
|
296
285
|
if only_includes_redundant_disable?
|
297
|
-
raise OptionArgumentError, 'Lint/RedundantCopDisableDirective cannot '
|
298
|
-
'be used with --only.'
|
286
|
+
raise OptionArgumentError, 'Lint/RedundantCopDisableDirective cannot be used with --only.'
|
299
287
|
end
|
300
288
|
raise OptionArgumentError, 'Syntax checking cannot be turned off.' if except_syntax?
|
301
289
|
unless boolean_or_empty_cache?
|
@@ -313,8 +301,7 @@ module RuboCop
|
|
313
301
|
|
314
302
|
return if incompatible_options.size <= 1
|
315
303
|
|
316
|
-
raise OptionArgumentError,
|
317
|
-
"#{incompatible_options.inspect}"
|
304
|
+
raise OptionArgumentError, "Incompatible cli options: #{incompatible_options.inspect}"
|
318
305
|
end
|
319
306
|
# rubocop:enable Metrics/AbcSize
|
320
307
|
|
@@ -326,8 +313,7 @@ module RuboCop
|
|
326
313
|
%i[exclude_limit offense_counts auto_gen_timestamp
|
327
314
|
auto_gen_only_exclude].each do |option|
|
328
315
|
if @options.key?(option)
|
329
|
-
raise OptionArgumentError,
|
330
|
-
format(message, flag: option.to_s.tr('_', '-'))
|
316
|
+
raise OptionArgumentError, format(message, flag: option.to_s.tr('_', '-'))
|
331
317
|
end
|
332
318
|
end
|
333
319
|
end
|
@@ -357,27 +343,29 @@ module RuboCop
|
|
357
343
|
'false is not allowed.'
|
358
344
|
end
|
359
345
|
|
360
|
-
|
346
|
+
disable_parallel_when_invalid_combo
|
361
347
|
end
|
362
348
|
|
363
|
-
def
|
349
|
+
def disable_parallel_when_invalid_combo
|
364
350
|
combos = {
|
365
|
-
auto_gen_config: '-
|
366
|
-
|
367
|
-
|
368
|
-
fail_fast: '-P/--parallel cannot be combined with -F/--fail-fast.',
|
369
|
-
auto_correct: '-P/--parallel cannot be combined with --auto-correct.'
|
351
|
+
auto_gen_config: '--auto-gen-config',
|
352
|
+
fail_fast: '-F/--fail-fast.',
|
353
|
+
auto_correct: '--auto-correct.'
|
370
354
|
}
|
371
355
|
|
372
|
-
combos.
|
373
|
-
|
374
|
-
|
356
|
+
invalid_combos = combos.select { |key, _flag| @options.key?(key) }
|
357
|
+
|
358
|
+
return if invalid_combos.empty?
|
359
|
+
|
360
|
+
@options.delete(:parallel)
|
361
|
+
|
362
|
+
puts '-P/--parallel is being ignored because ' \
|
363
|
+
"it is not compatible with #{invalid_combos.values.join(', ')}"
|
375
364
|
end
|
376
365
|
|
377
366
|
def only_includes_redundant_disable?
|
378
367
|
@options.key?(:only) &&
|
379
|
-
(@options[:only] & %w[Lint/RedundantCopDisableDirective
|
380
|
-
RedundantCopDisableDirective]).any?
|
368
|
+
(@options[:only] & %w[Lint/RedundantCopDisableDirective RedundantCopDisableDirective]).any?
|
381
369
|
end
|
382
370
|
|
383
371
|
def display_only_fail_level_offenses_with_autocorrect?
|
@@ -385,8 +373,7 @@ module RuboCop
|
|
385
373
|
end
|
386
374
|
|
387
375
|
def except_syntax?
|
388
|
-
@options.key?(:except) &&
|
389
|
-
(@options[:except] & %w[Lint/Syntax Syntax]).any?
|
376
|
+
@options.key?(:except) && (@options[:except] & %w[Lint/Syntax Syntax]).any?
|
390
377
|
end
|
391
378
|
|
392
379
|
def boolean_or_empty_cache?
|
@@ -408,8 +395,7 @@ module RuboCop
|
|
408
395
|
def validate_cache_enabled_for_cache_root
|
409
396
|
return unless @options[:cache] == 'false'
|
410
397
|
|
411
|
-
raise OptionArgumentError, '--cache-root can not be used with '
|
412
|
-
'--cache false'
|
398
|
+
raise OptionArgumentError, '--cache-root can not be used with --cache false'
|
413
399
|
end
|
414
400
|
end
|
415
401
|
|
@@ -512,7 +498,7 @@ module RuboCop
|
|
512
498
|
version: 'Display version.',
|
513
499
|
verbose_version: 'Display verbose version.',
|
514
500
|
parallel: ['Use available CPUs to execute inspection in',
|
515
|
-
'parallel.'],
|
501
|
+
'parallel. Default is false.'],
|
516
502
|
stdin: ['Pipe source from STDIN, using FILE in offense',
|
517
503
|
'reports. This is useful for editor integration.'],
|
518
504
|
init: 'Generate a .rubocop.yml file in the current directory.'
|
data/lib/rubocop/path_util.rb
CHANGED
data/lib/rubocop/rake_task.rb
CHANGED
@@ -68,6 +68,9 @@ module RuboCop
|
|
68
68
|
RakeFileUtils.verbose(verbose) do
|
69
69
|
yield(*[self, task_args].slice(0, task_block.arity)) if task_block
|
70
70
|
options = full_options.unshift('--auto-correct-all')
|
71
|
+
# `parallel` will automatically be removed from the options internally.
|
72
|
+
# This is a nice to have to suppress the warning message
|
73
|
+
# about parallel and auto-corrent not being compatible.
|
71
74
|
options.delete('--parallel')
|
72
75
|
run_cli(verbose, options)
|
73
76
|
end
|
@@ -46,11 +46,9 @@ module RuboCop
|
|
46
46
|
http.use_ssl = uri.instance_of?(URI::HTTPS)
|
47
47
|
|
48
48
|
generate_request(uri) do |request|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
handle_response(e, limit, &block)
|
53
|
-
end
|
49
|
+
handle_response(http.request(request), limit, &block)
|
50
|
+
rescue SocketError => e
|
51
|
+
handle_response(e, limit, &block)
|
54
52
|
end
|
55
53
|
end
|
56
54
|
|
@@ -72,8 +70,7 @@ module RuboCop
|
|
72
70
|
begin
|
73
71
|
response.error!
|
74
72
|
rescue StandardError => e
|
75
|
-
message = "#{e.message} while downloading remote config"
|
76
|
-
" file #{uri}"
|
73
|
+
message = "#{e.message} while downloading remote config file #{uri}"
|
77
74
|
raise e, message
|
78
75
|
end
|
79
76
|
end
|
data/lib/rubocop/result_cache.rb
CHANGED
@@ -39,8 +39,7 @@ module RuboCop
|
|
39
39
|
private
|
40
40
|
|
41
41
|
def requires_file_removal?(file_count, config_store)
|
42
|
-
file_count > 1 &&
|
43
|
-
file_count > config_store.for_pwd.for_all_cops['MaxFilesInCache']
|
42
|
+
file_count > 1 && file_count > config_store.for_pwd.for_all_cops['MaxFilesInCache']
|
44
43
|
end
|
45
44
|
|
46
45
|
def remove_oldest_files(files, dirs, cache_root, verbose)
|
@@ -108,7 +107,7 @@ module RuboCop
|
|
108
107
|
|
109
108
|
def load
|
110
109
|
puts "Loading cache from #{@path}" if debug?
|
111
|
-
@cached_data.from_json(
|
110
|
+
@cached_data.from_json(File.read(@path, encoding: Encoding::UTF_8))
|
112
111
|
end
|
113
112
|
|
114
113
|
def save(offenses)
|
@@ -117,8 +116,7 @@ module RuboCop
|
|
117
116
|
begin
|
118
117
|
FileUtils.mkdir_p(dir)
|
119
118
|
rescue Errno::EACCES, Errno::EROFS => e
|
120
|
-
warn "Couldn't create cache directory. Continuing without cache."
|
121
|
-
"\n #{e.message}"
|
119
|
+
warn "Couldn't create cache directory. Continuing without cache.\n #{e.message}"
|
122
120
|
return
|
123
121
|
end
|
124
122
|
|
@@ -159,9 +157,7 @@ module RuboCop
|
|
159
157
|
def file_checksum(file, config_store)
|
160
158
|
digester = Digest::SHA1.new
|
161
159
|
mode = File.stat(file).mode
|
162
|
-
digester.update(
|
163
|
-
"#{file}#{mode}#{config_store.for_file(file).signature}"
|
164
|
-
)
|
160
|
+
digester.update("#{file}#{mode}#{config_store.for_file(file).signature}")
|
165
161
|
digester.file(file)
|
166
162
|
digester.hexdigest
|
167
163
|
rescue Errno::ENOENT
|
@@ -224,10 +220,7 @@ module RuboCop
|
|
224
220
|
# This context is for anything that's not (1) the RuboCop executable
|
225
221
|
# checksum or (2) the inspected file checksum.
|
226
222
|
def context_checksum(team, options)
|
227
|
-
Digest::SHA1.hexdigest([
|
228
|
-
team_checksum(team),
|
229
|
-
relevant_options_digest(options)
|
230
|
-
].join)
|
223
|
+
Digest::SHA1.hexdigest([team_checksum(team), relevant_options_digest(options)].join)
|
231
224
|
end
|
232
225
|
end
|
233
226
|
end
|
@@ -118,8 +118,7 @@ module RuboCop
|
|
118
118
|
|
119
119
|
@processed_source = parse_processed_source(source, file)
|
120
120
|
@offenses = _investigate(cop, @processed_source)
|
121
|
-
actual_annotations =
|
122
|
-
expected_annotations.with_offense_annotations(@offenses)
|
121
|
+
actual_annotations = expected_annotations.with_offense_annotations(@offenses)
|
123
122
|
|
124
123
|
expect(actual_annotations).to eq(expected_annotations), ''
|
125
124
|
expect(@offenses.map(&:severity).uniq).to eq([severity]) if severity
|
@@ -152,8 +151,7 @@ module RuboCop
|
|
152
151
|
end
|
153
152
|
|
154
153
|
# Prepare for next loop
|
155
|
-
@processed_source = parse_source(corrected_source,
|
156
|
-
@processed_source.path)
|
154
|
+
@processed_source = parse_source(corrected_source, @processed_source.path)
|
157
155
|
_investigate(cop, @processed_source)
|
158
156
|
end
|
159
157
|
|
@@ -178,8 +176,7 @@ module RuboCop
|
|
178
176
|
offenses = inspect_source(source, file)
|
179
177
|
|
180
178
|
expected_annotations = AnnotatedSource.parse(source)
|
181
|
-
actual_annotations =
|
182
|
-
expected_annotations.with_offense_annotations(offenses)
|
179
|
+
actual_annotations = expected_annotations.with_offense_annotations(offenses)
|
183
180
|
expect(actual_annotations.to_s).to eq(source)
|
184
181
|
end
|
185
182
|
|
@@ -246,9 +243,7 @@ module RuboCop
|
|
246
243
|
end
|
247
244
|
|
248
245
|
def ==(other)
|
249
|
-
other.is_a?(self.class) &&
|
250
|
-
other.lines == lines &&
|
251
|
-
match_annotations?(other)
|
246
|
+
other.is_a?(self.class) && other.lines == lines && match_annotations?(other)
|
252
247
|
end
|
253
248
|
|
254
249
|
# Dirty hack: expectations with [...] are rewritten when they match
|
@@ -27,9 +27,7 @@ RSpec.shared_context 'isolated environment', :isolated_environment do
|
|
27
27
|
begin
|
28
28
|
FileUtils.mkdir_p(working_dir)
|
29
29
|
|
30
|
-
Dir.chdir(working_dir)
|
31
|
-
example.run
|
32
|
-
end
|
30
|
+
Dir.chdir(working_dir) { example.run }
|
33
31
|
ensure
|
34
32
|
ENV['HOME'] = original_home
|
35
33
|
ENV['XDG_CONFIG_HOME'] = original_xdg_config_home
|
@@ -41,9 +39,7 @@ RSpec.shared_context 'isolated environment', :isolated_environment do
|
|
41
39
|
end
|
42
40
|
|
43
41
|
RSpec.shared_context 'maintain registry', :restore_registry do
|
44
|
-
around(:each)
|
45
|
-
RuboCop::Cop::Registry.with_temporary_global { example.run }
|
46
|
-
end
|
42
|
+
around(:each) { |example| RuboCop::Cop::Registry.with_temporary_global { example.run } }
|
47
43
|
|
48
44
|
def stub_cop_class(name, inherit: RuboCop::Cop::Base, &block)
|
49
45
|
klass = Class.new(inherit, &block)
|
@@ -100,15 +96,12 @@ RSpec.shared_context 'config', :config do # rubocop:disable Metrics/BlockLength
|
|
100
96
|
end
|
101
97
|
|
102
98
|
let(:config) do
|
103
|
-
hash = { 'AllCops' => all_cops_config,
|
104
|
-
cop_class.cop_name => cur_cop_config }.merge!(other_cops)
|
99
|
+
hash = { 'AllCops' => all_cops_config, cop_class.cop_name => cur_cop_config }.merge!(other_cops)
|
105
100
|
|
106
101
|
RuboCop::Config.new(hash, "#{Dir.pwd}/.rubocop.yml")
|
107
102
|
end
|
108
103
|
|
109
|
-
let(:cop)
|
110
|
-
cop_class.new(config, cop_options)
|
111
|
-
end
|
104
|
+
let(:cop) { cop_class.new(config, cop_options) }
|
112
105
|
end
|
113
106
|
|
114
107
|
RSpec.shared_context 'mock console output' do
|
@@ -123,10 +116,6 @@ RSpec.shared_context 'mock console output' do
|
|
123
116
|
end
|
124
117
|
end
|
125
118
|
|
126
|
-
RSpec.shared_context 'ruby 2.4', :ruby24 do
|
127
|
-
let(:ruby_version) { 2.4 }
|
128
|
-
end
|
129
|
-
|
130
119
|
RSpec.shared_context 'ruby 2.5', :ruby25 do
|
131
120
|
let(:ruby_version) { 2.5 }
|
132
121
|
end
|
@@ -142,3 +131,7 @@ end
|
|
142
131
|
RSpec.shared_context 'ruby 3.0', :ruby30 do
|
143
132
|
let(:ruby_version) { 3.0 }
|
144
133
|
end
|
134
|
+
|
135
|
+
RSpec.shared_context 'ruby 3.1', :ruby31 do
|
136
|
+
let(:ruby_version) { 3.1 }
|
137
|
+
end
|
data/lib/rubocop/runner.rb
CHANGED
@@ -112,9 +112,7 @@ module RuboCop
|
|
112
112
|
end
|
113
113
|
|
114
114
|
def list_files(paths)
|
115
|
-
paths.each
|
116
|
-
puts PathUtil.relative_path(path)
|
117
|
-
end
|
115
|
+
paths.each { |path| puts PathUtil.relative_path(path) }
|
118
116
|
end
|
119
117
|
|
120
118
|
def process_file(file)
|
@@ -193,11 +191,10 @@ module RuboCop
|
|
193
191
|
|
194
192
|
def redundant_cop_disable_directive(file)
|
195
193
|
config = @config_store.for_file(file)
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
end
|
194
|
+
return unless config.for_cop(Cop::Lint::RedundantCopDisableDirective).fetch('Enabled')
|
195
|
+
|
196
|
+
cop = Cop::Lint::RedundantCopDisableDirective.new(config, @options)
|
197
|
+
yield cop if cop.relevant_file?(file)
|
201
198
|
end
|
202
199
|
|
203
200
|
def filtered_run?
|
@@ -206,9 +203,7 @@ module RuboCop
|
|
206
203
|
|
207
204
|
def file_started(file)
|
208
205
|
puts "Scanning #{file}" if @options[:debug]
|
209
|
-
formatter_set.file_started(file,
|
210
|
-
cli_options: @options,
|
211
|
-
config_store: @config_store)
|
206
|
+
formatter_set.file_started(file, cli_options: @options, config_store: @config_store)
|
212
207
|
end
|
213
208
|
|
214
209
|
def file_finished(file, offenses)
|
@@ -372,9 +367,7 @@ module RuboCop
|
|
372
367
|
@formatter_set ||= begin
|
373
368
|
set = Formatter::FormatterSet.new(@options)
|
374
369
|
pairs = @options[:formatters] || [['progress']]
|
375
|
-
pairs.each
|
376
|
-
set.add_formatter(formatter_key, output_path)
|
377
|
-
end
|
370
|
+
pairs.each { |formatter_key, output_path| set.add_formatter(formatter_key, output_path) }
|
378
371
|
set
|
379
372
|
end
|
380
373
|
end
|
@@ -61,9 +61,7 @@ module RuboCop
|
|
61
61
|
hidden_files = all_files.select { |file| file.include?(HIDDEN_PATH_SUBSTRING) }.sort
|
62
62
|
base_dir_config = @config_store.for(base_dir)
|
63
63
|
|
64
|
-
target_files = all_files.select
|
65
|
-
to_inspect?(file, hidden_files, base_dir_config)
|
66
|
-
end
|
64
|
+
target_files = all_files.select { |file| to_inspect?(file, hidden_files, base_dir_config) }
|
67
65
|
|
68
66
|
target_files.sort_by!(&order)
|
69
67
|
end
|
@@ -96,12 +94,23 @@ module RuboCop
|
|
96
94
|
end
|
97
95
|
|
98
96
|
def wanted_dir_patterns(base_dir, exclude_pattern, flags)
|
97
|
+
base_dir = base_dir.gsub('/{}/', '/\{}/')
|
99
98
|
dirs = Dir.glob(File.join(base_dir.gsub('/**/', '/\**/'), '*/'), flags)
|
100
99
|
.reject do |dir|
|
101
|
-
dir.end_with?('/./', '/../')
|
100
|
+
next true if dir.end_with?('/./', '/../')
|
101
|
+
next true if File.fnmatch?(exclude_pattern, dir, flags)
|
102
|
+
|
103
|
+
symlink_excluded_or_infinite_loop?(base_dir, dir, exclude_pattern, flags)
|
102
104
|
end
|
103
|
-
dirs.flat_map { |dir| wanted_dir_patterns(dir, exclude_pattern, flags) }
|
104
|
-
|
105
|
+
dirs.flat_map { |dir| wanted_dir_patterns(dir, exclude_pattern, flags) }.unshift(base_dir)
|
106
|
+
end
|
107
|
+
|
108
|
+
def symlink_excluded_or_infinite_loop?(base_dir, current_dir, exclude_pattern, flags)
|
109
|
+
dir_realpath = File.realpath(current_dir)
|
110
|
+
File.symlink?(current_dir.chomp('/')) && (
|
111
|
+
File.fnmatch?(exclude_pattern, "#{dir_realpath}/", flags) ||
|
112
|
+
File.realpath(base_dir).start_with?(dir_realpath)
|
113
|
+
)
|
105
114
|
end
|
106
115
|
|
107
116
|
def combined_exclude_glob_patterns(base_dir)
|
@@ -117,9 +126,7 @@ module RuboCop
|
|
117
126
|
|
118
127
|
def ruby_extensions
|
119
128
|
@ruby_extensions ||= begin
|
120
|
-
ext_patterns = all_cops_include.select
|
121
|
-
pattern.start_with?('**/*.')
|
122
|
-
end
|
129
|
+
ext_patterns = all_cops_include.select { |pattern| pattern.start_with?('**/*.') }
|
123
130
|
ext_patterns.map { |pattern| pattern.sub('**/*', '') }
|
124
131
|
end
|
125
132
|
end
|
@@ -130,16 +137,13 @@ module RuboCop
|
|
130
137
|
|
131
138
|
def ruby_filenames
|
132
139
|
@ruby_filenames ||= begin
|
133
|
-
file_patterns = all_cops_include.reject
|
134
|
-
pattern.start_with?('**/*.')
|
135
|
-
end
|
140
|
+
file_patterns = all_cops_include.reject { |pattern| pattern.start_with?('**/*.') }
|
136
141
|
file_patterns.map { |pattern| pattern.sub('**/', '') }
|
137
142
|
end
|
138
143
|
end
|
139
144
|
|
140
145
|
def all_cops_include
|
141
|
-
@all_cops_include ||=
|
142
|
-
@config_store.for_pwd.for_all_cops['Include'].map(&:to_s)
|
146
|
+
@all_cops_include ||= @config_store.for_pwd.for_all_cops['Include'].map(&:to_s)
|
143
147
|
end
|
144
148
|
|
145
149
|
def ruby_executable?(file)
|
@@ -162,8 +166,7 @@ module RuboCop
|
|
162
166
|
end
|
163
167
|
|
164
168
|
def ruby_file?(file)
|
165
|
-
stdin? || ruby_extension?(file) || ruby_filename?(file) ||
|
166
|
-
ruby_executable?(file)
|
169
|
+
stdin? || ruby_extension?(file) || ruby_filename?(file) || ruby_executable?(file)
|
167
170
|
end
|
168
171
|
|
169
172
|
def configured_include?(file)
|