rubocop 1.11.0 → 1.15.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 +6 -3
- data/config/default.yml +58 -6
- 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/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 +1 -2
- data/lib/rubocop/cop/bundler/gem_comment.rb +43 -11
- data/lib/rubocop/cop/bundler/gem_version.rb +99 -0
- 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 +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/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 +7 -5
- 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 +12 -10
- data/lib/rubocop/cop/layout/argument_alignment.rb +34 -18
- 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 +7 -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 +4 -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 +3 -7
- data/lib/rubocop/cop/layout/first_argument_indentation.rb +6 -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 +36 -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 +18 -13
- 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 +24 -12
- 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 +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 +83 -41
- 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_block.rb +18 -2
- 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 +11 -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 +1 -2
- data/lib/rubocop/cop/lint/rand_one.rb +1 -2
- data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +9 -22
- 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/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_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 +14 -7
- data/lib/rubocop/cop/lint/unused_block_argument.rb +9 -7
- 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 +5 -12
- 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 +12 -7
- data/lib/rubocop/cop/mixin/check_line_breakable.rb +20 -4
- 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 +2 -5
- data/lib/rubocop/cop/mixin/documentation_comment.rb +3 -6
- 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 +7 -7
- 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 +7 -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 +1 -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 +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 +4 -7
- 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/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/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 +6 -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/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/style/access_modifier_declarations.rb +3 -5
- 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.rb +59 -71
- data/lib/rubocop/cop/style/bisected_attr_accessor/macro.rb +60 -0
- 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 +19 -10
- data/lib/rubocop/cop/style/class_equality_comparison.rb +2 -0
- 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 +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 +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/disable_cops_within_source_code_directive.rb +2 -2
- data/lib/rubocop/cop/style/documentation.rb +25 -3
- 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 +12 -9
- 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 +3 -5
- 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 +20 -24
- 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/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 +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 +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_if_else_condition.rb +23 -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_lambda.rb +29 -12
- 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 +40 -6
- 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 +6 -4
- data/lib/rubocop/cop/style/redundant_self.rb +9 -9
- 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 +21 -14
- 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 +21 -4
- 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 +2 -6
- data/lib/rubocop/cop/style/string_chars.rb +39 -0
- 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 +10 -0
- 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/top_level_method_definition.rb +75 -0
- data/lib/rubocop/cop/style/trailing_body_on_method_definition.rb +6 -3
- 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 +67 -4
- data/lib/rubocop/cop/style/unless_else.rb +1 -2
- data/lib/rubocop/cop/style/unless_logical_operators.rb +8 -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 +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 +23 -14
- 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/options.rb +30 -50
- 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 +4 -8
- data/lib/rubocop/version.rb +1 -1
- metadata +13 -7
- data/lib/rubocop/core_ext/hash.rb +0 -20
@@ -5,28 +5,88 @@ module RuboCop
|
|
5
5
|
# special `rubocop:disable` and `rubocop:enable` comment and exposes what
|
6
6
|
# cops it contains.
|
7
7
|
class DirectiveComment
|
8
|
-
|
8
|
+
# @api private
|
9
|
+
REDUNDANT_COP = 'Lint/RedundantCopDisableDirective'
|
10
|
+
# @api private
|
11
|
+
COP_NAME_PATTERN = '([A-Z]\w+/)*(?:[A-Z]\w+)'
|
12
|
+
# @api private
|
13
|
+
COP_NAMES_PATTERN = "(?:#{COP_NAME_PATTERN} , )*#{COP_NAME_PATTERN}"
|
14
|
+
# @api private
|
15
|
+
COPS_PATTERN = "(all|#{COP_NAMES_PATTERN})"
|
16
|
+
# @api private
|
17
|
+
DIRECTIVE_COMMENT_REGEXP = Regexp.new(
|
18
|
+
"# rubocop : ((?:disable|enable|todo))\\b #{COPS_PATTERN}"
|
19
|
+
.gsub(' ', '\s*')
|
20
|
+
)
|
21
|
+
|
22
|
+
def self.before_comment(line)
|
23
|
+
line.split(DIRECTIVE_COMMENT_REGEXP).first
|
24
|
+
end
|
25
|
+
|
26
|
+
attr_reader :comment, :mode, :cops
|
9
27
|
|
10
28
|
def initialize(comment)
|
11
29
|
@comment = comment
|
30
|
+
@mode, @cops = match_captures
|
12
31
|
end
|
13
32
|
|
14
|
-
#
|
15
|
-
def
|
16
|
-
|
17
|
-
return unless match
|
18
|
-
|
19
|
-
cops_string = match.captures[1]
|
20
|
-
cops_string.split(/,\s*/).uniq.sort
|
33
|
+
# Checks if this directive relates to single line
|
34
|
+
def single_line?
|
35
|
+
!self.class.before_comment(comment.text).empty?
|
21
36
|
end
|
22
37
|
|
23
38
|
# Checks if this directive contains all the given cop names
|
24
39
|
def match?(cop_names)
|
25
|
-
|
40
|
+
parsed_cop_names.uniq.sort == cop_names.uniq.sort
|
26
41
|
end
|
27
42
|
|
28
43
|
def range
|
29
44
|
comment.location.expression
|
30
45
|
end
|
46
|
+
|
47
|
+
# Returns match captures to directive comment pattern
|
48
|
+
def match_captures
|
49
|
+
@match_captures ||= comment.text.match(DIRECTIVE_COMMENT_REGEXP)&.captures
|
50
|
+
end
|
51
|
+
|
52
|
+
# Checks if this directive disables cops
|
53
|
+
def disabled?
|
54
|
+
%w[disable todo].include?(mode)
|
55
|
+
end
|
56
|
+
|
57
|
+
# Checks if this directive enables cops
|
58
|
+
def enabled?
|
59
|
+
mode == 'enable'
|
60
|
+
end
|
61
|
+
|
62
|
+
# Checks if this directive enables all cops
|
63
|
+
def enabled_all?
|
64
|
+
!disabled? && all_cops?
|
65
|
+
end
|
66
|
+
|
67
|
+
# Checks if all cops specified in this directive
|
68
|
+
def all_cops?
|
69
|
+
cops == 'all'
|
70
|
+
end
|
71
|
+
|
72
|
+
# Returns array of specified in this directive cop names
|
73
|
+
def cop_names
|
74
|
+
@cop_names ||= all_cops? ? all_cop_names : parsed_cop_names
|
75
|
+
end
|
76
|
+
|
77
|
+
# Returns line number for directive
|
78
|
+
def line_number
|
79
|
+
comment.loc.expression.line
|
80
|
+
end
|
81
|
+
|
82
|
+
private
|
83
|
+
|
84
|
+
def parsed_cop_names
|
85
|
+
(cops || '').split(/,\s*/)
|
86
|
+
end
|
87
|
+
|
88
|
+
def all_cop_names
|
89
|
+
Cop::Registry.global.names - [REDUNDANT_COP]
|
90
|
+
end
|
31
91
|
end
|
32
92
|
end
|
@@ -39,9 +39,8 @@ module RuboCop
|
|
39
39
|
|
40
40
|
# Shortcut to `loc.expression`
|
41
41
|
def expression
|
42
|
-
|
43
|
-
|
44
|
-
end
|
42
|
+
end_pos = start_index + full_length
|
43
|
+
@expression ||= origin.adjust(begin_pos: start_index, end_pos: end_pos)
|
45
44
|
end
|
46
45
|
end
|
47
46
|
|
@@ -60,9 +59,7 @@ module RuboCop
|
|
60
59
|
#
|
61
60
|
# Please open issue if you need other locations
|
62
61
|
def loc
|
63
|
-
@loc ||=
|
64
|
-
Map.new(expression, **build_location)
|
65
|
-
end
|
62
|
+
@loc ||= Map.new(expression, **build_location)
|
66
63
|
end
|
67
64
|
|
68
65
|
private
|
data/lib/rubocop/file_finder.rb
CHANGED
@@ -23,9 +23,7 @@ module RuboCop
|
|
23
23
|
|
24
24
|
def find_last_file_upwards(filename, start_dir, stop_dir = nil)
|
25
25
|
last_file = nil
|
26
|
-
traverse_files_upwards(filename, start_dir, stop_dir)
|
27
|
-
last_file = file
|
28
|
-
end
|
26
|
+
traverse_files_upwards(filename, start_dir, stop_dir) { |file| last_file = file }
|
29
27
|
last_file
|
30
28
|
end
|
31
29
|
|
@@ -49,8 +49,10 @@ module RuboCop
|
|
49
49
|
end
|
50
50
|
|
51
51
|
def report_highlighted_area(highlighted_area)
|
52
|
-
|
53
|
-
|
52
|
+
space_area = highlighted_area.source_buffer.slice(0...highlighted_area.begin_pos)
|
53
|
+
source_area = highlighted_area.source
|
54
|
+
output.puts("#{' ' * Unicode::DisplayWidth.of(space_area)}" \
|
55
|
+
"#{'^' * Unicode::DisplayWidth.of(source_area)}")
|
54
56
|
end
|
55
57
|
end
|
56
58
|
end
|
@@ -71,9 +71,7 @@ module RuboCop
|
|
71
71
|
command += ' --auto-gen-only-exclude' if @options[:auto_gen_only_exclude]
|
72
72
|
|
73
73
|
if @exclude_limit_option
|
74
|
-
command +=
|
75
|
-
format(' --exclude-limit %<limit>d',
|
76
|
-
limit: Integer(@exclude_limit_option))
|
74
|
+
command += format(' --exclude-limit %<limit>d', limit: Integer(@exclude_limit_option))
|
77
75
|
end
|
78
76
|
command += ' --no-offense-counts' unless show_offense_counts?
|
79
77
|
|
@@ -111,8 +109,7 @@ module RuboCop
|
|
111
109
|
|
112
110
|
# In case auto_gen_only_exclude is set, only modify the maximum if the
|
113
111
|
# files are not excluded one by one.
|
114
|
-
if !@options[:auto_gen_only_exclude] ||
|
115
|
-
@files_with_offenses[cop_name].size > @exclude_limit
|
112
|
+
if !@options[:auto_gen_only_exclude] || @files_with_offenses[cop_name].size > @exclude_limit
|
116
113
|
cfg.merge!(cfg[:exclude_limit])
|
117
114
|
end
|
118
115
|
|
@@ -144,9 +141,7 @@ module RuboCop
|
|
144
141
|
|
145
142
|
def output_cop_param_comments(output_buffer, params, default_cfg)
|
146
143
|
config_params = params.reject { |p| p.start_with?('Supported') }
|
147
|
-
output_buffer.puts(
|
148
|
-
"# Configuration parameters: #{config_params.join(', ')}."
|
149
|
-
)
|
144
|
+
output_buffer.puts("# Configuration parameters: #{config_params.join(', ')}.")
|
150
145
|
|
151
146
|
params.each do |param|
|
152
147
|
value = default_cfg[param]
|
@@ -5,11 +5,7 @@ module RuboCop
|
|
5
5
|
# This formatter formats report data as GitHub Workflow commands resulting
|
6
6
|
# in GitHub check annotations when run within GitHub Actions.
|
7
7
|
class GitHubActionsFormatter < BaseFormatter
|
8
|
-
ESCAPE_MAP = {
|
9
|
-
'%' => '%25',
|
10
|
-
"\n" => '%0A',
|
11
|
-
"\r" => '%0D'
|
12
|
-
}.freeze
|
8
|
+
ESCAPE_MAP = { '%' => '%25', "\n" => '%0A', "\r" => '%0D' }.freeze
|
13
9
|
|
14
10
|
def file_finished(file, offenses)
|
15
11
|
offenses.each { |offense| report_offense(file, offense) }
|
@@ -11,8 +11,7 @@ module RuboCop
|
|
11
11
|
# This formatter saves the output as an html file.
|
12
12
|
class HTMLFormatter < BaseFormatter
|
13
13
|
ELLIPSES = '<span class="extra-code">...</span>'
|
14
|
-
TEMPLATE_PATH =
|
15
|
-
File.expand_path('../../../assets/output.html.erb', __dir__)
|
14
|
+
TEMPLATE_PATH = File.expand_path('../../../assets/output.html.erb', __dir__)
|
16
15
|
|
17
16
|
Color = Struct.new(:red, :green, :blue, :alpha) do
|
18
17
|
def to_s
|
@@ -20,9 +19,7 @@ module RuboCop
|
|
20
19
|
end
|
21
20
|
|
22
21
|
def fade_out(amount)
|
23
|
-
dup.tap
|
24
|
-
color.alpha -= amount
|
25
|
-
end
|
22
|
+
dup.tap { |color| color.alpha -= amount }
|
26
23
|
end
|
27
24
|
end
|
28
25
|
|
@@ -79,8 +76,7 @@ module RuboCop
|
|
79
76
|
fatal: Color.new(0xD2, 0x32, 0x2D, 1.0)
|
80
77
|
}.freeze
|
81
78
|
|
82
|
-
LOGO_IMAGE_PATH =
|
83
|
-
File.expand_path('../../../assets/logo.png', __dir__)
|
79
|
+
LOGO_IMAGE_PATH = File.expand_path('../../../assets/logo.png', __dir__)
|
84
80
|
|
85
81
|
attr_reader :files, :summary
|
86
82
|
|
@@ -97,9 +93,7 @@ module RuboCop
|
|
97
93
|
# rubocop:enable Lint/UselessMethodDefinition
|
98
94
|
|
99
95
|
def decorated_message(offense)
|
100
|
-
offense.message.gsub(/`(.+?)`/)
|
101
|
-
"<code>#{Regexp.last_match(1)}</code>"
|
102
|
-
end
|
96
|
+
offense.message.gsub(/`(.+?)`/) { "<code>#{Regexp.last_match(1)}</code>" }
|
103
97
|
end
|
104
98
|
|
105
99
|
def highlighted_source_line(offense)
|
@@ -13,11 +13,7 @@ module RuboCop
|
|
13
13
|
|
14
14
|
def initialize(output, options = {})
|
15
15
|
super
|
16
|
-
@output_hash = {
|
17
|
-
metadata: metadata_hash,
|
18
|
-
files: [],
|
19
|
-
summary: { offense_count: 0 }
|
20
|
-
}
|
16
|
+
@output_hash = { metadata: metadata_hash, files: [], summary: { offense_count: 0 } }
|
21
17
|
end
|
22
18
|
|
23
19
|
def started(target_files)
|
@@ -18,17 +18,17 @@ module RuboCop
|
|
18
18
|
def initialize(output, options = {})
|
19
19
|
super
|
20
20
|
|
21
|
-
@document = REXML::Document.new.tap
|
22
|
-
document << REXML::XMLDecl.new
|
23
|
-
end
|
21
|
+
@document = REXML::Document.new.tap { |document| document << REXML::XMLDecl.new }
|
24
22
|
testsuites = REXML::Element.new('testsuites', @document)
|
25
23
|
testsuite = REXML::Element.new('testsuite', testsuites)
|
26
|
-
@testsuite = testsuite.tap
|
27
|
-
|
28
|
-
|
24
|
+
@testsuite = testsuite.tap { |element| element.add_attributes('name' => 'rubocop') }
|
25
|
+
|
26
|
+
reset_count
|
29
27
|
end
|
30
28
|
|
31
29
|
def file_finished(file, offenses)
|
30
|
+
@inspected_file_count += 1
|
31
|
+
|
32
32
|
# TODO: Returns all cops with the same behavior as
|
33
33
|
# the original rubocop-junit-formatter.
|
34
34
|
# https://github.com/mikian/rubocop-junit-formatter/blob/v0.1.4/lib/rubocop/formatter/junit_formatter.rb#L9
|
@@ -36,15 +36,11 @@ module RuboCop
|
|
36
36
|
# In the future, it would be preferable to return only enabled cops.
|
37
37
|
Cop::Registry.all.each do |cop|
|
38
38
|
target_offenses = offenses_for_cop(offenses, cop)
|
39
|
+
@offense_count += target_offenses.count
|
39
40
|
|
40
41
|
next unless relevant_for_output?(options, target_offenses)
|
41
42
|
|
42
|
-
|
43
|
-
testcase.attributes['classname'] = classname_attribute_value(file)
|
44
|
-
testcase.attributes['name'] = cop.cop_name
|
45
|
-
|
46
|
-
add_failure_to(testcase, target_offenses, cop.cop_name)
|
47
|
-
end
|
43
|
+
add_testcase_element_to_testsuite_element(file, target_offenses, cop)
|
48
44
|
end
|
49
45
|
end
|
50
46
|
|
@@ -53,8 +49,15 @@ module RuboCop
|
|
53
49
|
end
|
54
50
|
|
55
51
|
def offenses_for_cop(all_offenses, cop)
|
56
|
-
all_offenses.select
|
57
|
-
|
52
|
+
all_offenses.select { |offense| offense.cop_name == cop.cop_name }
|
53
|
+
end
|
54
|
+
|
55
|
+
def add_testcase_element_to_testsuite_element(file, target_offenses, cop)
|
56
|
+
REXML::Element.new('testcase', @testsuite).tap do |testcase|
|
57
|
+
testcase.attributes['classname'] = classname_attribute_value(file)
|
58
|
+
testcase.attributes['name'] = cop.cop_name
|
59
|
+
|
60
|
+
add_failure_to(testcase, target_offenses, cop.cop_name)
|
58
61
|
end
|
59
62
|
end
|
60
63
|
|
@@ -63,11 +66,17 @@ module RuboCop
|
|
63
66
|
end
|
64
67
|
|
65
68
|
def finished(_inspected_files)
|
69
|
+
@testsuite.add_attributes('tests' => @inspected_file_count, 'failures' => @offense_count)
|
66
70
|
@document.write(output, 2)
|
67
71
|
end
|
68
72
|
|
69
73
|
private
|
70
74
|
|
75
|
+
def reset_count
|
76
|
+
@inspected_file_count = 0
|
77
|
+
@offense_count = 0
|
78
|
+
end
|
79
|
+
|
71
80
|
def add_failure_to(testcase, offenses, cop_name)
|
72
81
|
# One failure per offense. Zero failures is a passing test case,
|
73
82
|
# for most surefire/nUnit parsers.
|
@@ -38,9 +38,7 @@ module RuboCop
|
|
38
38
|
output.puts 'Offenses:'
|
39
39
|
output.puts
|
40
40
|
|
41
|
-
@offenses_for_files.each
|
42
|
-
report_file(file, offenses)
|
43
|
-
end
|
41
|
+
@offenses_for_files.each { |file, offenses| report_file(file, offenses) }
|
44
42
|
end
|
45
43
|
|
46
44
|
report_summary(inspected_files.size,
|
@@ -37,8 +37,10 @@ module RuboCop
|
|
37
37
|
end
|
38
38
|
|
39
39
|
def report_highlighted_area(highlighted_area)
|
40
|
-
|
41
|
-
|
40
|
+
space_area = highlighted_area.source_buffer.slice(0...highlighted_area.begin_pos)
|
41
|
+
source_area = highlighted_area.source
|
42
|
+
output.puts("# #{' ' * Unicode::DisplayWidth.of(space_area)}" \
|
43
|
+
"#{'^' * Unicode::DisplayWidth.of(source_area)}")
|
42
44
|
end
|
43
45
|
|
44
46
|
def report_offense(file, offense)
|
@@ -47,7 +47,7 @@ module RuboCop
|
|
47
47
|
end
|
48
48
|
|
49
49
|
def valid_shareable_constant_value?
|
50
|
-
%w[none literal experimental_everything experimental_copy].include?(
|
50
|
+
%w[none literal experimental_everything experimental_copy].include?(shareable_constant_value)
|
51
51
|
end
|
52
52
|
|
53
53
|
# Was a magic comment for the frozen string literal found?
|
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?
|
@@ -309,12 +297,11 @@ module RuboCop
|
|
309
297
|
validate_auto_gen_config
|
310
298
|
validate_auto_correct
|
311
299
|
validate_display_only_failed
|
312
|
-
|
300
|
+
disable_parallel_when_invalid_option_combo
|
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
|
@@ -348,36 +334,32 @@ module RuboCop
|
|
348
334
|
format('--disable-uncorrectable can only be used together with --auto-correct.')
|
349
335
|
end
|
350
336
|
|
351
|
-
def
|
337
|
+
def disable_parallel_when_invalid_option_combo
|
352
338
|
return unless @options.key?(:parallel)
|
353
339
|
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
340
|
+
invalid_options = [
|
341
|
+
{ name: :auto_gen_config, value: true, flag: '--auto-gen-config' },
|
342
|
+
{ name: :fail_fast, value: true, flag: '-F/--fail-fast.' },
|
343
|
+
{ name: :auto_correct, value: true, flag: '--auto-correct.' },
|
344
|
+
{ name: :cache, value: 'false', flag: '--cache false' }
|
345
|
+
]
|
346
|
+
|
347
|
+
invalid_flags = invalid_options.each_with_object([]) do |option, flags|
|
348
|
+
# `>` rather than `>=` because `@options` will also contain `parallel: true`
|
349
|
+
flags << option[:flag] if @options > { option[:name] => option[:value] }
|
358
350
|
end
|
359
351
|
|
360
|
-
|
361
|
-
end
|
352
|
+
return if invalid_flags.empty?
|
362
353
|
|
363
|
-
|
364
|
-
combos = {
|
365
|
-
auto_gen_config: '-P/--parallel uses caching to speed up execution, ' \
|
366
|
-
'while --auto-gen-config needs a non-cached run, ' \
|
367
|
-
'so they cannot be combined.',
|
368
|
-
fail_fast: '-P/--parallel cannot be combined with -F/--fail-fast.',
|
369
|
-
auto_correct: '-P/--parallel cannot be combined with --auto-correct.'
|
370
|
-
}
|
354
|
+
@options.delete(:parallel)
|
371
355
|
|
372
|
-
|
373
|
-
|
374
|
-
end
|
356
|
+
puts '-P/--parallel is being ignored because ' \
|
357
|
+
"it is not compatible with #{invalid_flags.join(', ')}"
|
375
358
|
end
|
376
359
|
|
377
360
|
def only_includes_redundant_disable?
|
378
361
|
@options.key?(:only) &&
|
379
|
-
(@options[:only] & %w[Lint/RedundantCopDisableDirective
|
380
|
-
RedundantCopDisableDirective]).any?
|
362
|
+
(@options[:only] & %w[Lint/RedundantCopDisableDirective RedundantCopDisableDirective]).any?
|
381
363
|
end
|
382
364
|
|
383
365
|
def display_only_fail_level_offenses_with_autocorrect?
|
@@ -385,8 +367,7 @@ module RuboCop
|
|
385
367
|
end
|
386
368
|
|
387
369
|
def except_syntax?
|
388
|
-
@options.key?(:except) &&
|
389
|
-
(@options[:except] & %w[Lint/Syntax Syntax]).any?
|
370
|
+
@options.key?(:except) && (@options[:except] & %w[Lint/Syntax Syntax]).any?
|
390
371
|
end
|
391
372
|
|
392
373
|
def boolean_or_empty_cache?
|
@@ -408,8 +389,7 @@ module RuboCop
|
|
408
389
|
def validate_cache_enabled_for_cache_root
|
409
390
|
return unless @options[:cache] == 'false'
|
410
391
|
|
411
|
-
raise OptionArgumentError, '--cache-root can not be used with '
|
412
|
-
'--cache false'
|
392
|
+
raise OptionArgumentError, '--cache-root can not be used with --cache false'
|
413
393
|
end
|
414
394
|
end
|
415
395
|
|
@@ -512,7 +492,7 @@ module RuboCop
|
|
512
492
|
version: 'Display version.',
|
513
493
|
verbose_version: 'Display verbose version.',
|
514
494
|
parallel: ['Use available CPUs to execute inspection in',
|
515
|
-
'parallel.'],
|
495
|
+
'parallel. Default is false.'],
|
516
496
|
stdin: ['Pipe source from STDIN, using FILE in offense',
|
517
497
|
'reports. This is useful for editor integration.'],
|
518
498
|
init: 'Generate a .rubocop.yml file in the current directory.'
|