rubocop 1.12.0 → 1.16.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 +5 -2
- data/config/default.yml +77 -8
- data/exe/rubocop +1 -3
- data/lib/rubocop.rb +10 -1
- data/lib/rubocop/cached_data.rb +1 -3
- data/lib/rubocop/cli.rb +4 -6
- data/lib/rubocop/cli/command/auto_genenerate_config.rb +9 -19
- data/lib/rubocop/cli/command/init_dotfile.rb +1 -3
- data/lib/rubocop/cli/command/show_cops.rb +1 -4
- data/lib/rubocop/comment_config.rb +2 -7
- data/lib/rubocop/config.rb +11 -26
- data/lib/rubocop/config_loader.rb +5 -11
- data/lib/rubocop/config_loader_resolver.rb +22 -14
- data/lib/rubocop/config_obsoletion/cop_rule.rb +1 -2
- data/lib/rubocop/config_store.rb +1 -2
- data/lib/rubocop/config_validator.rb +5 -10
- data/lib/rubocop/cop/autocorrect_logic.rb +3 -8
- data/lib/rubocop/cop/badge.rb +1 -2
- data/lib/rubocop/cop/base.rb +8 -6
- data/lib/rubocop/cop/bundler/duplicated_gem.rb +1 -2
- data/lib/rubocop/cop/bundler/gem_comment.rb +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 +3 -6
- data/lib/rubocop/cop/correctors/each_to_for_corrector.rb +2 -4
- data/lib/rubocop/cop/correctors/for_to_each_corrector.rb +1 -2
- data/lib/rubocop/cop/correctors/line_break_corrector.rb +3 -6
- data/lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb +1 -3
- data/lib/rubocop/cop/correctors/ordered_gem_corrector.rb +1 -3
- data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +2 -8
- data/lib/rubocop/cop/gemspec/duplicated_assignment.rb +1 -2
- data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +1 -4
- data/lib/rubocop/cop/generator.rb +1 -4
- data/lib/rubocop/cop/generator/configuration_injector.rb +1 -2
- data/lib/rubocop/cop/generator/require_file_injector.rb +2 -5
- data/lib/rubocop/cop/internal_affairs/example_description.rb +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 +1 -2
- data/lib/rubocop/cop/layout/argument_alignment.rb +30 -14
- data/lib/rubocop/cop/layout/assignment_indentation.rb +2 -4
- data/lib/rubocop/cop/layout/begin_end_alignment.rb +1 -4
- data/lib/rubocop/cop/layout/block_alignment.rb +7 -19
- data/lib/rubocop/cop/layout/case_indentation.rb +57 -11
- data/lib/rubocop/cop/layout/class_structure.rb +4 -10
- data/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +4 -15
- data/lib/rubocop/cop/layout/comment_indentation.rb +1 -5
- data/lib/rubocop/cop/layout/def_end_alignment.rb +2 -6
- data/lib/rubocop/cop/layout/dot_position.rb +1 -3
- data/lib/rubocop/cop/layout/else_alignment.rb +1 -3
- data/lib/rubocop/cop/layout/empty_comment.rb +5 -12
- data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +22 -8
- data/lib/rubocop/cop/layout/empty_line_between_defs.rb +2 -6
- data/lib/rubocop/cop/layout/empty_lines.rb +1 -3
- data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +8 -18
- data/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +2 -8
- data/lib/rubocop/cop/layout/end_alignment.rb +1 -2
- data/lib/rubocop/cop/layout/end_of_line.rb +1 -1
- data/lib/rubocop/cop/layout/extra_spacing.rb +3 -7
- data/lib/rubocop/cop/layout/first_array_element_indentation.rb +1 -2
- data/lib/rubocop/cop/layout/first_array_element_line_break.rb +1 -2
- data/lib/rubocop/cop/layout/first_hash_element_indentation.rb +14 -5
- data/lib/rubocop/cop/layout/first_hash_element_line_break.rb +1 -2
- data/lib/rubocop/cop/layout/first_method_argument_line_break.rb +1 -2
- data/lib/rubocop/cop/layout/first_method_parameter_line_break.rb +1 -2
- data/lib/rubocop/cop/layout/hash_alignment.rb +35 -15
- data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +2 -9
- data/lib/rubocop/cop/layout/heredoc_indentation.rb +2 -6
- data/lib/rubocop/cop/layout/indentation_style.rb +1 -3
- data/lib/rubocop/cop/layout/indentation_width.rb +6 -4
- data/lib/rubocop/cop/layout/initial_indentation.rb +1 -4
- data/lib/rubocop/cop/layout/line_length.rb +4 -15
- data/lib/rubocop/cop/layout/multiline_array_line_breaks.rb +1 -2
- data/lib/rubocop/cop/layout/multiline_block_layout.rb +7 -15
- data/lib/rubocop/cop/layout/multiline_hash_key_line_breaks.rb +1 -2
- data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +1 -2
- data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +16 -10
- data/lib/rubocop/cop/layout/multiline_operation_indentation.rb +4 -0
- data/lib/rubocop/cop/layout/redundant_line_break.rb +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 +19 -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_in_pattern.rb +62 -0
- 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 +4 -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 +18 -27
- data/lib/rubocop/cop/lint/redundant_safe_navigation.rb +1 -3
- data/lib/rubocop/cop/lint/redundant_splat_expansion.rb +3 -7
- data/lib/rubocop/cop/lint/redundant_string_coercion.rb +1 -2
- data/lib/rubocop/cop/lint/redundant_with_index.rb +1 -4
- data/lib/rubocop/cop/lint/redundant_with_object.rb +1 -4
- data/lib/rubocop/cop/lint/regexp_as_condition.rb +1 -3
- data/lib/rubocop/cop/lint/require_parentheses.rb +2 -4
- data/lib/rubocop/cop/lint/rescue_exception.rb +1 -2
- data/lib/rubocop/cop/lint/rescue_type.rb +2 -7
- data/lib/rubocop/cop/lint/return_in_void_context.rb +1 -2
- data/lib/rubocop/cop/lint/safe_navigation_chain.rb +1 -2
- data/lib/rubocop/cop/lint/safe_navigation_consistency.rb +4 -10
- data/lib/rubocop/cop/lint/safe_navigation_with_empty.rb +1 -2
- data/lib/rubocop/cop/lint/send_with_mixin_argument.rb +2 -7
- data/lib/rubocop/cop/lint/shadowed_argument.rb +4 -11
- data/lib/rubocop/cop/lint/shadowed_exception.rb +7 -8
- data/lib/rubocop/cop/lint/struct_new_override.rb +1 -2
- data/lib/rubocop/cop/lint/symbol_conversion.rb +4 -16
- 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 +2 -4
- 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/configurable_enforced_style.rb +2 -2
- data/lib/rubocop/cop/mixin/configurable_formatting.rb +3 -8
- data/lib/rubocop/cop/mixin/def_node.rb +2 -5
- data/lib/rubocop/cop/mixin/documentation_comment.rb +2 -5
- data/lib/rubocop/cop/mixin/empty_lines_around_body.rb +3 -7
- data/lib/rubocop/cop/mixin/empty_parameter.rb +1 -3
- data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +1 -3
- data/lib/rubocop/cop/mixin/enforce_superclass.rb +2 -6
- data/lib/rubocop/cop/mixin/first_element_line_break.rb +1 -3
- data/lib/rubocop/cop/mixin/frozen_string_literal.rb +7 -7
- data/lib/rubocop/cop/mixin/gem_declaration.rb +13 -0
- data/lib/rubocop/cop/mixin/hash_alignment_styles.rb +17 -9
- data/lib/rubocop/cop/mixin/hash_transform_method.rb +7 -22
- data/lib/rubocop/cop/mixin/interpolation.rb +1 -3
- data/lib/rubocop/cop/mixin/line_length_help.rb +2 -4
- data/lib/rubocop/cop/mixin/match_range.rb +2 -5
- data/lib/rubocop/cop/mixin/method_complexity.rb +1 -3
- data/lib/rubocop/cop/mixin/method_preference.rb +1 -2
- data/lib/rubocop/cop/mixin/multiline_element_indentation.rb +1 -2
- data/lib/rubocop/cop/mixin/multiline_element_line_breaks.rb +1 -3
- data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +7 -37
- data/lib/rubocop/cop/mixin/multiline_literal_brace_layout.rb +1 -2
- data/lib/rubocop/cop/mixin/negative_conditional.rb +1 -2
- data/lib/rubocop/cop/mixin/ordered_gem_node.rb +1 -4
- data/lib/rubocop/cop/mixin/percent_array.rb +1 -3
- data/lib/rubocop/cop/mixin/percent_literal.rb +0 -6
- data/lib/rubocop/cop/mixin/preceding_following_alignment.rb +5 -11
- data/lib/rubocop/cop/mixin/preferred_delimiters.rb +3 -6
- data/lib/rubocop/cop/mixin/range_help.rb +10 -13
- data/lib/rubocop/cop/mixin/rescue_node.rb +2 -6
- data/lib/rubocop/cop/mixin/safe_assignment.rb +1 -2
- data/lib/rubocop/cop/mixin/space_after_punctuation.rb +2 -4
- data/lib/rubocop/cop/mixin/space_before_punctuation.rb +1 -2
- data/lib/rubocop/cop/mixin/statement_modifier.rb +1 -3
- data/lib/rubocop/cop/mixin/string_literals_help.rb +3 -5
- data/lib/rubocop/cop/mixin/symbol_help.rb +13 -0
- data/lib/rubocop/cop/mixin/trailing_body.rb +1 -2
- data/lib/rubocop/cop/mixin/trailing_comma.rb +1 -2
- data/lib/rubocop/cop/mixin/uncommunicative_name.rb +3 -7
- data/lib/rubocop/cop/mixin/unused_argument.rb +1 -3
- data/lib/rubocop/cop/naming/ascii_identifiers.rb +2 -4
- data/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +1 -2
- data/lib/rubocop/cop/naming/file_name.rb +7 -16
- data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +2 -3
- data/lib/rubocop/cop/naming/method_name.rb +1 -2
- data/lib/rubocop/cop/naming/predicate_name.rb +1 -2
- data/lib/rubocop/cop/offense.rb +3 -8
- data/lib/rubocop/cop/registry.rb +3 -11
- data/lib/rubocop/cop/style/access_modifier_declarations.rb +2 -4
- data/lib/rubocop/cop/style/accessor_grouping.rb +1 -3
- data/lib/rubocop/cop/style/alias.rb +5 -12
- data/lib/rubocop/cop/style/and_or.rb +3 -1
- data/lib/rubocop/cop/style/arguments_forwarding.rb +1 -3
- data/lib/rubocop/cop/style/ascii_comments.rb +1 -2
- data/lib/rubocop/cop/style/attr.rb +1 -3
- data/lib/rubocop/cop/style/auto_resource_cleanup.rb +2 -5
- data/lib/rubocop/cop/style/bisected_attr_accessor/macro.rb +1 -3
- data/lib/rubocop/cop/style/case_like_if.rb +1 -2
- data/lib/rubocop/cop/style/character_literal.rb +2 -4
- data/lib/rubocop/cop/style/class_and_module_children.rb +19 -10
- data/lib/rubocop/cop/style/class_methods.rb +1 -3
- data/lib/rubocop/cop/style/collection_compact.rb +1 -3
- data/lib/rubocop/cop/style/colon_method_call.rb +1 -3
- data/lib/rubocop/cop/style/combinable_loops.rb +3 -2
- data/lib/rubocop/cop/style/command_literal.rb +3 -8
- data/lib/rubocop/cop/style/comment_annotation.rb +3 -6
- data/lib/rubocop/cop/style/commented_keyword.rb +7 -13
- data/lib/rubocop/cop/style/conditional_assignment.rb +10 -24
- data/lib/rubocop/cop/style/copyright.rb +3 -6
- data/lib/rubocop/cop/style/date_time.rb +2 -5
- data/lib/rubocop/cop/style/def_with_parentheses.rb +1 -2
- data/lib/rubocop/cop/style/each_for_simple_loop.rb +1 -2
- data/lib/rubocop/cop/style/empty_case_condition.rb +2 -7
- data/lib/rubocop/cop/style/empty_else.rb +3 -9
- data/lib/rubocop/cop/style/empty_literal.rb +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 +2 -4
- data/lib/rubocop/cop/style/expand_path_arguments.rb +1 -3
- data/lib/rubocop/cop/style/explicit_block_argument.rb +1 -4
- data/lib/rubocop/cop/style/format_string_token.rb +1 -4
- data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +3 -11
- data/lib/rubocop/cop/style/guard_clause.rb +3 -7
- data/lib/rubocop/cop/style/hash_conversion.rb +31 -3
- data/lib/rubocop/cop/style/hash_each_methods.rb +19 -3
- data/lib/rubocop/cop/style/hash_like_case.rb +1 -2
- data/lib/rubocop/cop/style/hash_syntax.rb +4 -9
- data/lib/rubocop/cop/style/identical_conditional_branches.rb +27 -8
- data/lib/rubocop/cop/style/if_unless_modifier.rb +40 -13
- data/lib/rubocop/cop/style/in_pattern_then.rb +56 -0
- data/lib/rubocop/cop/style/infinite_loop.rb +2 -5
- data/lib/rubocop/cop/style/inverse_methods.rb +3 -7
- data/lib/rubocop/cop/style/ip_addresses.rb +1 -2
- data/lib/rubocop/cop/style/lambda.rb +2 -4
- data/lib/rubocop/cop/style/lambda_call.rb +1 -2
- data/lib/rubocop/cop/style/line_end_concatenation.rb +5 -12
- data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +7 -3
- data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +10 -18
- data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +1 -2
- data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +2 -4
- data/lib/rubocop/cop/style/method_def_parentheses.rb +4 -8
- data/lib/rubocop/cop/style/min_max.rb +1 -2
- data/lib/rubocop/cop/style/missing_else.rb +2 -4
- data/lib/rubocop/cop/style/missing_respond_to_missing.rb +1 -2
- data/lib/rubocop/cop/style/mixin_grouping.rb +4 -10
- data/lib/rubocop/cop/style/mixin_usage.rb +1 -2
- data/lib/rubocop/cop/style/module_function.rb +3 -6
- data/lib/rubocop/cop/style/multiline_block_chain.rb +1 -2
- data/lib/rubocop/cop/style/multiline_in_pattern_then.rb +62 -0
- 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 +17 -9
- 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/quoted_symbols.rb +105 -0
- data/lib/rubocop/cop/style/raise_args.rb +4 -8
- data/lib/rubocop/cop/style/random_with_offset.rb +3 -8
- data/lib/rubocop/cop/style/redundant_argument.rb +2 -11
- data/lib/rubocop/cop/style/redundant_assignment.rb +1 -3
- data/lib/rubocop/cop/style/redundant_begin.rb +15 -4
- data/lib/rubocop/cop/style/redundant_capital_w.rb +1 -2
- data/lib/rubocop/cop/style/redundant_condition.rb +2 -5
- data/lib/rubocop/cop/style/redundant_conditional.rb +3 -6
- data/lib/rubocop/cop/style/redundant_exception.rb +3 -6
- data/lib/rubocop/cop/style/redundant_file_extension_in_require.rb +1 -1
- data/lib/rubocop/cop/style/redundant_freeze.rb +1 -2
- data/lib/rubocop/cop/style/redundant_interpolation.rb +1 -2
- data/lib/rubocop/cop/style/redundant_parentheses.rb +8 -20
- data/lib/rubocop/cop/style/redundant_percent_q.rb +1 -2
- data/lib/rubocop/cop/style/redundant_regexp_escape.rb +1 -4
- data/lib/rubocop/cop/style/redundant_return.rb +3 -5
- data/lib/rubocop/cop/style/redundant_self.rb +2 -6
- data/lib/rubocop/cop/style/redundant_self_assignment.rb +2 -2
- data/lib/rubocop/cop/style/redundant_sort.rb +2 -5
- data/lib/rubocop/cop/style/regexp_literal.rb +4 -8
- data/lib/rubocop/cop/style/rescue_modifier.rb +4 -0
- data/lib/rubocop/cop/style/rescue_standard_error.rb +3 -7
- data/lib/rubocop/cop/style/return_nil.rb +1 -2
- data/lib/rubocop/cop/style/safe_navigation.rb +10 -21
- data/lib/rubocop/cop/style/send.rb +1 -2
- data/lib/rubocop/cop/style/signal_exception.rb +3 -7
- data/lib/rubocop/cop/style/single_argument_dig.rb +1 -2
- data/lib/rubocop/cop/style/single_line_block_params.rb +2 -5
- data/lib/rubocop/cop/style/single_line_methods.rb +21 -4
- data/lib/rubocop/cop/style/sole_nested_conditional.rb +15 -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 +2 -1
- data/lib/rubocop/cop/style/string_concatenation.rb +8 -10
- data/lib/rubocop/cop/style/string_literals.rb +3 -5
- data/lib/rubocop/cop/style/string_literals_in_interpolation.rb +1 -0
- data/lib/rubocop/cop/style/struct_inheritance.rb +9 -1
- data/lib/rubocop/cop/style/symbol_literal.rb +1 -3
- data/lib/rubocop/cop/style/symbol_proc.rb +4 -9
- data/lib/rubocop/cop/style/ternary_parentheses.rb +3 -6
- data/lib/rubocop/cop/style/top_level_method_definition.rb +83 -0
- data/lib/rubocop/cop/style/trailing_body_on_method_definition.rb +1 -2
- data/lib/rubocop/cop/style/trailing_comma_in_block_args.rb +2 -6
- data/lib/rubocop/cop/style/trailing_method_end_statement.rb +2 -5
- data/lib/rubocop/cop/style/trailing_underscore_variable.rb +4 -10
- data/lib/rubocop/cop/style/trivial_accessors.rb +67 -4
- data/lib/rubocop/cop/style/unless_else.rb +1 -2
- data/lib/rubocop/cop/style/unless_logical_operators.rb +2 -2
- data/lib/rubocop/cop/style/variable_interpolation.rb +1 -1
- data/lib/rubocop/cop/style/when_then.rb +4 -2
- 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 +10 -1
- 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/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 +18 -16
- data/lib/rubocop/target_ruby.rb +4 -8
- data/lib/rubocop/version.rb +1 -1
- metadata +16 -7
- data/lib/rubocop/core_ext/hash.rb +0 -20
@@ -63,8 +63,7 @@ module RuboCop
|
|
63
63
|
end
|
64
64
|
|
65
65
|
def setter_method?(method_name)
|
66
|
-
method_name.to_s.end_with?('=') &&
|
67
|
-
!AST::Node::COMPARISON_OPERATORS.include?(method_name)
|
66
|
+
method_name.to_s.end_with?('=') && !AST::Node::COMPARISON_OPERATORS.include?(method_name)
|
68
67
|
end
|
69
68
|
end
|
70
69
|
end
|
@@ -26,8 +26,7 @@ module RuboCop
|
|
26
26
|
class SafeNavigationChain < Base
|
27
27
|
include NilMethods
|
28
28
|
|
29
|
-
MSG = 'Do not chain ordinary method call'
|
30
|
-
' after safe navigation operator.'
|
29
|
+
MSG = 'Do not chain ordinary method call after safe navigation operator.'
|
31
30
|
|
32
31
|
# @!method bad_method?(node)
|
33
32
|
def_node_matcher :bad_method?, <<~PATTERN
|
@@ -31,8 +31,7 @@ module RuboCop
|
|
31
31
|
include NilMethods
|
32
32
|
extend AutoCorrector
|
33
33
|
|
34
|
-
MSG = 'Ensure that safe navigation is used consistently '
|
35
|
-
'inside of `&&` and `||`.'
|
34
|
+
MSG = 'Ensure that safe navigation is used consistently inside of `&&` and `||`.'
|
36
35
|
|
37
36
|
def on_csend(node)
|
38
37
|
return unless node.parent&.operator_keyword?
|
@@ -46,15 +45,12 @@ module RuboCop
|
|
46
45
|
safe_nav_receiver = node.receiver
|
47
46
|
|
48
47
|
method_calls = conditions.select(&:send_type?)
|
49
|
-
unsafe_method_calls =
|
50
|
-
unsafe_method_calls(method_calls, safe_nav_receiver)
|
48
|
+
unsafe_method_calls = unsafe_method_calls(method_calls, safe_nav_receiver)
|
51
49
|
|
52
50
|
unsafe_method_calls.each do |unsafe_method_call|
|
53
51
|
location = location(node, unsafe_method_call)
|
54
52
|
|
55
|
-
add_offense(location)
|
56
|
-
autocorrect(corrector, unsafe_method_call)
|
57
|
-
end
|
53
|
+
add_offense(location) { |corrector| autocorrect(corrector, unsafe_method_call) }
|
58
54
|
|
59
55
|
ignore_node(unsafe_method_call)
|
60
56
|
end
|
@@ -76,9 +72,7 @@ module RuboCop
|
|
76
72
|
parent = node.parent
|
77
73
|
unless parent &&
|
78
74
|
(parent.operator_keyword? ||
|
79
|
-
(parent.begin_type? &&
|
80
|
-
parent.parent &&
|
81
|
-
parent.parent.operator_keyword?))
|
75
|
+
(parent.begin_type? && parent.parent && parent.parent.operator_keyword?))
|
82
76
|
return node
|
83
77
|
end
|
84
78
|
|
@@ -22,8 +22,7 @@ module RuboCop
|
|
22
22
|
class SafeNavigationWithEmpty < Base
|
23
23
|
extend AutoCorrector
|
24
24
|
|
25
|
-
MSG = 'Avoid calling `empty?` with the safe navigation operator '
|
26
|
-
'in conditionals.'
|
25
|
+
MSG = 'Avoid calling `empty?` with the safe navigation operator in conditionals.'
|
27
26
|
|
28
27
|
# @!method safe_navigation_empty_in_conditional?(node)
|
29
28
|
def_node_matcher :safe_navigation_empty_in_conditional?, <<~PATTERN
|
@@ -53,9 +53,7 @@ module RuboCop
|
|
53
53
|
|
54
54
|
def on_send(node)
|
55
55
|
send_with_mixin_argument?(node) do |method, module_name|
|
56
|
-
message = message(
|
57
|
-
method, module_name.source, bad_location(node).source
|
58
|
-
)
|
56
|
+
message = message(method, module_name.source, bad_location(node).source)
|
59
57
|
|
60
58
|
bad_location = bad_location(node)
|
61
59
|
add_offense(bad_location, message: message) do |corrector|
|
@@ -73,10 +71,7 @@ module RuboCop
|
|
73
71
|
end
|
74
72
|
|
75
73
|
def message(method, module_name, bad_method)
|
76
|
-
format(
|
77
|
-
MSG,
|
78
|
-
method: method, module_name: module_name, bad_method: bad_method
|
79
|
-
)
|
74
|
+
format(MSG, method: method, module_name: module_name, bad_method: bad_method)
|
80
75
|
end
|
81
76
|
|
82
77
|
def mixin_method?(node)
|
@@ -64,8 +64,7 @@ module RuboCop
|
|
64
64
|
# end
|
65
65
|
#
|
66
66
|
class ShadowedArgument < Base
|
67
|
-
MSG = 'Argument `%<argument>s` was shadowed by a local variable '
|
68
|
-
'before it was used.'
|
67
|
+
MSG = 'Argument `%<argument>s` was shadowed by a local variable before it was used.'
|
69
68
|
|
70
69
|
# @!method uses_var?(node)
|
71
70
|
def_node_search :uses_var?, '(lvar %)'
|
@@ -75,9 +74,7 @@ module RuboCop
|
|
75
74
|
end
|
76
75
|
|
77
76
|
def after_leaving_scope(scope, _variable_table)
|
78
|
-
scope.variables.each_value
|
79
|
-
check_argument(variable)
|
80
|
-
end
|
77
|
+
scope.variables.each_value { |variable| check_argument(variable) }
|
81
78
|
end
|
82
79
|
|
83
80
|
private
|
@@ -128,8 +125,7 @@ module RuboCop
|
|
128
125
|
next false if assignment_node.shorthand_asgn?
|
129
126
|
|
130
127
|
node_within_block_or_conditional =
|
131
|
-
node_within_block_or_conditional?(assignment_node.parent,
|
132
|
-
argument.scope.node)
|
128
|
+
node_within_block_or_conditional?(assignment_node.parent, argument.scope.node)
|
133
129
|
|
134
130
|
unless uses_var?(assignment_node, argument.name)
|
135
131
|
# It's impossible to decide whether a branch or block is executed,
|
@@ -162,10 +158,7 @@ module RuboCop
|
|
162
158
|
# Get argument references without assignments' references
|
163
159
|
#
|
164
160
|
def argument_references(argument)
|
165
|
-
assignment_references = argument
|
166
|
-
.assignments
|
167
|
-
.flat_map(&:references)
|
168
|
-
.map(&:source_range)
|
161
|
+
assignment_references = argument.assignments.flat_map(&:references).map(&:source_range)
|
169
162
|
|
170
163
|
argument.references.reject do |ref|
|
171
164
|
next false unless ref.explicit?
|
@@ -59,8 +59,7 @@ module RuboCop
|
|
59
59
|
contains_multiple_levels_of_exceptions?(group)
|
60
60
|
end
|
61
61
|
|
62
|
-
return if !rescue_group_rescues_multiple_levels &&
|
63
|
-
sorted?(rescued_groups)
|
62
|
+
return if !rescue_group_rescues_multiple_levels && sorted?(rescued_groups)
|
64
63
|
|
65
64
|
add_offense(offense_range(rescues))
|
66
65
|
end
|
@@ -74,18 +73,14 @@ module RuboCop
|
|
74
73
|
end
|
75
74
|
|
76
75
|
def rescued_groups_for(rescues)
|
77
|
-
rescues.map
|
78
|
-
evaluate_exceptions(group)
|
79
|
-
end
|
76
|
+
rescues.map { |group| evaluate_exceptions(group) }
|
80
77
|
end
|
81
78
|
|
82
79
|
def contains_multiple_levels_of_exceptions?(group)
|
83
80
|
# Always treat `Exception` as the highest level exception.
|
84
81
|
return true if group.size > 1 && group.include?(Exception)
|
85
82
|
|
86
|
-
group.combination(2).any?
|
87
|
-
compare_exceptions(a, b)
|
88
|
-
end
|
83
|
+
group.combination(2).any? { |a, b| compare_exceptions(a, b) }
|
89
84
|
end
|
90
85
|
|
91
86
|
def compare_exceptions(exception, other_exception)
|
@@ -111,6 +106,9 @@ module RuboCop
|
|
111
106
|
|
112
107
|
if rescued_exceptions.any?
|
113
108
|
rescued_exceptions.each_with_object([]) do |exception, converted|
|
109
|
+
# FIXME: Workaround `rubocop:disable` comment for JRuby.
|
110
|
+
# https://github.com/jruby/jruby/issues/6642
|
111
|
+
# rubocop:disable Style/RedundantBegin
|
114
112
|
begin
|
115
113
|
RuboCop::Util.silence_warnings do
|
116
114
|
# Avoid printing deprecation warnings about constants
|
@@ -119,6 +117,7 @@ module RuboCop
|
|
119
117
|
rescue NameError
|
120
118
|
converted << nil
|
121
119
|
end
|
120
|
+
# rubocop:enable Style/RedundantBegin
|
122
121
|
end
|
123
122
|
else
|
124
123
|
# treat an empty `rescue` as `rescue StandardError`
|
@@ -48,8 +48,7 @@ module RuboCop
|
|
48
48
|
|
49
49
|
next unless STRUCT_METHOD_NAMES.include?(member_name.to_sym)
|
50
50
|
|
51
|
-
message = format(MSG, member_name: member_name.inspect,
|
52
|
-
method_name: member_name.to_s)
|
51
|
+
message = format(MSG, member_name: member_name.inspect, method_name: member_name.to_s)
|
53
52
|
add_offense(arg, message: message)
|
54
53
|
end
|
55
54
|
end
|
@@ -66,6 +66,7 @@ module RuboCop
|
|
66
66
|
class SymbolConversion < Base
|
67
67
|
extend AutoCorrector
|
68
68
|
include ConfigurableEnforcedStyle
|
69
|
+
include SymbolHelp
|
69
70
|
|
70
71
|
MSG = 'Unnecessary symbol conversion; use `%<correction>s` instead.'
|
71
72
|
MSG_CONSISTENCY = 'Symbol hash key should be quoted for consistency; ' \
|
@@ -114,9 +115,7 @@ module RuboCop
|
|
114
115
|
private
|
115
116
|
|
116
117
|
def register_offense(node, correction:, message: format(MSG, correction: correction))
|
117
|
-
add_offense(node, message: message)
|
118
|
-
corrector.replace(node, correction)
|
119
|
-
end
|
118
|
+
add_offense(node, message: message) { |corrector| corrector.replace(node, correction) }
|
120
119
|
end
|
121
120
|
|
122
121
|
def properly_quoted?(source, value)
|
@@ -140,10 +139,6 @@ module RuboCop
|
|
140
139
|
node.parent&.array_type? && node.parent&.percent_literal?
|
141
140
|
end
|
142
141
|
|
143
|
-
def hash_key?(node)
|
144
|
-
node.parent&.pair_type? && node == node.parent.child_nodes.first
|
145
|
-
end
|
146
|
-
|
147
142
|
def correct_hash_key(node)
|
148
143
|
# Although some operators can be converted to symbols normally
|
149
144
|
# (ie. `:==`), these are not accepted as hash keys and will
|
@@ -152,7 +147,7 @@ module RuboCop
|
|
152
147
|
# will be ignored.
|
153
148
|
return unless node.value.to_s.match?(/\A[a-z0-9_]/i)
|
154
149
|
|
155
|
-
correction = node.value.inspect.
|
150
|
+
correction = node.value.inspect.delete_prefix(':')
|
156
151
|
return if properly_quoted?(node.source, correction)
|
157
152
|
|
158
153
|
register_offense(
|
@@ -169,7 +164,7 @@ module RuboCop
|
|
169
164
|
next if requires_quotes?(key)
|
170
165
|
next if properly_quoted?(key.source, %("#{key.value}"))
|
171
166
|
|
172
|
-
correction = "#{
|
167
|
+
correction = %("#{key.value}")
|
173
168
|
register_offense(
|
174
169
|
key,
|
175
170
|
correction: correction,
|
@@ -177,13 +172,6 @@ module RuboCop
|
|
177
172
|
)
|
178
173
|
end
|
179
174
|
end
|
180
|
-
|
181
|
-
def quote_type
|
182
|
-
# Use the `Style/StringLiterals` configuration for quoting symbols
|
183
|
-
return '"' unless config.for_cop('Style/StringLiterals')['Enabled']
|
184
|
-
|
185
|
-
config.for_cop('Style/StringLiterals')['EnforcedStyle'] == 'single_quotes' ? "'" : '"'
|
186
|
-
end
|
187
175
|
end
|
188
176
|
end
|
189
177
|
end
|
@@ -21,9 +21,7 @@ module RuboCop
|
|
21
21
|
message =
|
22
22
|
"#{diagnostic.message}\n(Using Ruby #{ruby_version} parser; " \
|
23
23
|
'configure using `TargetRubyVersion` parameter, under `AllCops`)'
|
24
|
-
add_offense(diagnostic.location,
|
25
|
-
message: message,
|
26
|
-
severity: diagnostic.level)
|
24
|
+
add_offense(diagnostic.location, message: message, severity: diagnostic.level)
|
27
25
|
end
|
28
26
|
|
29
27
|
def add_offense_from_error(error)
|
@@ -31,8 +31,7 @@ module RuboCop
|
|
31
31
|
class ToJSON < Base
|
32
32
|
extend AutoCorrector
|
33
33
|
|
34
|
-
MSG = '`#to_json` requires an optional argument to be parsable '
|
35
|
-
'via JSON.generate(obj).'
|
34
|
+
MSG = '`#to_json` requires an optional argument to be parsable via JSON.generate(obj).'
|
36
35
|
|
37
36
|
def on_def(node)
|
38
37
|
return unless node.method?(:to_json) && node.arguments.empty?
|
@@ -38,9 +38,7 @@ module RuboCop
|
|
38
38
|
|
39
39
|
trailing_comma = trailing_comma_range(node)
|
40
40
|
|
41
|
-
add_offense(trailing_comma)
|
42
|
-
corrector.remove(trailing_comma)
|
43
|
-
end
|
41
|
+
add_offense(trailing_comma) { |corrector| corrector.remove(trailing_comma) }
|
44
42
|
end
|
45
43
|
|
46
44
|
private
|
@@ -48,9 +48,7 @@ module RuboCop
|
|
48
48
|
end
|
49
49
|
|
50
50
|
def after_leaving_scope(scope, _variable_table)
|
51
|
-
scope.variables.each_value
|
52
|
-
check_variable(variable)
|
53
|
-
end
|
51
|
+
scope.variables.each_value { |variable| check_variable(variable) }
|
54
52
|
end
|
55
53
|
|
56
54
|
def check_variable(variable)
|
@@ -81,8 +81,7 @@ module RuboCop
|
|
81
81
|
def check_if(node)
|
82
82
|
if_branch = node.if_branch
|
83
83
|
else_branch = node.else_branch
|
84
|
-
if_branch && else_branch &&
|
85
|
-
flow_expression?(if_branch) && flow_expression?(else_branch)
|
84
|
+
if_branch && else_branch && flow_expression?(if_branch) && flow_expression?(else_branch)
|
86
85
|
end
|
87
86
|
|
88
87
|
def check_case(node)
|
@@ -90,9 +89,7 @@ module RuboCop
|
|
90
89
|
return false unless else_branch
|
91
90
|
return false unless flow_expression?(else_branch)
|
92
91
|
|
93
|
-
node.when_branches.all?
|
94
|
-
branch.body && flow_expression?(branch.body)
|
95
|
-
end
|
92
|
+
node.when_branches.all? { |branch| branch.body && flow_expression?(branch.body) }
|
96
93
|
end
|
97
94
|
end
|
98
95
|
end
|
@@ -87,6 +87,7 @@ module RuboCop
|
|
87
87
|
include IgnoredPattern
|
88
88
|
|
89
89
|
MSG = 'This loop will have at most one iteration.'
|
90
|
+
CONTINUE_KEYWORDS = %i[next redo].freeze
|
90
91
|
|
91
92
|
def on_while(node)
|
92
93
|
check(node)
|
@@ -116,7 +117,10 @@ module RuboCop
|
|
116
117
|
break_statement = statements.find { |statement| break_statement?(statement) }
|
117
118
|
return unless break_statement
|
118
119
|
|
119
|
-
|
120
|
+
unless preceded_by_continue_statement?(break_statement) ||
|
121
|
+
conditional_continue_keyword?(break_statement)
|
122
|
+
add_offense(node)
|
123
|
+
end
|
120
124
|
end
|
121
125
|
|
122
126
|
def statements(node)
|
@@ -162,8 +166,7 @@ module RuboCop
|
|
162
166
|
def check_if(node)
|
163
167
|
if_branch = node.if_branch
|
164
168
|
else_branch = node.else_branch
|
165
|
-
if_branch && else_branch &&
|
166
|
-
break_statement?(if_branch) && break_statement?(else_branch)
|
169
|
+
if_branch && else_branch && break_statement?(if_branch) && break_statement?(else_branch)
|
167
170
|
end
|
168
171
|
|
169
172
|
def check_case(node)
|
@@ -171,18 +174,22 @@ module RuboCop
|
|
171
174
|
return false unless else_branch
|
172
175
|
return false unless break_statement?(else_branch)
|
173
176
|
|
174
|
-
node.when_branches.all?
|
175
|
-
branch.body && break_statement?(branch.body)
|
176
|
-
end
|
177
|
+
node.when_branches.all? { |branch| branch.body && break_statement?(branch.body) }
|
177
178
|
end
|
178
179
|
|
179
180
|
def preceded_by_continue_statement?(break_statement)
|
180
181
|
break_statement.left_siblings.any? do |sibling|
|
181
182
|
next if sibling.loop_keyword? || loop_method?(sibling)
|
182
183
|
|
183
|
-
sibling.each_descendant(
|
184
|
+
sibling.each_descendant(*CONTINUE_KEYWORDS).any?
|
184
185
|
end
|
185
186
|
end
|
187
|
+
|
188
|
+
def conditional_continue_keyword?(break_statement)
|
189
|
+
or_node = break_statement.each_descendant(:or).to_a.last
|
190
|
+
|
191
|
+
or_node && CONTINUE_KEYWORDS.include?(or_node.rhs.type)
|
192
|
+
end
|
186
193
|
end
|
187
194
|
end
|
188
195
|
end
|
@@ -68,19 +68,22 @@ module RuboCop
|
|
68
68
|
|
69
69
|
def check_argument(variable)
|
70
70
|
return if allowed_block?(variable) ||
|
71
|
-
allowed_keyword_argument?(variable)
|
71
|
+
allowed_keyword_argument?(variable) ||
|
72
|
+
used_block_local?(variable)
|
72
73
|
|
73
74
|
super
|
74
75
|
end
|
75
76
|
|
77
|
+
def used_block_local?(variable)
|
78
|
+
variable.explicit_block_local_variable? && !variable.assignments.empty?
|
79
|
+
end
|
80
|
+
|
76
81
|
def allowed_block?(variable)
|
77
|
-
!variable.block_argument? ||
|
78
|
-
(ignore_empty_blocks? && empty_block?(variable))
|
82
|
+
!variable.block_argument? || (ignore_empty_blocks? && empty_block?(variable))
|
79
83
|
end
|
80
84
|
|
81
85
|
def allowed_keyword_argument?(variable)
|
82
|
-
variable.keyword_argument? &&
|
83
|
-
allow_unused_keyword_arguments?
|
86
|
+
variable.keyword_argument? && allow_unused_keyword_arguments?
|
84
87
|
end
|
85
88
|
|
86
89
|
def message(variable)
|
@@ -115,8 +118,7 @@ module RuboCop
|
|
115
118
|
end
|
116
119
|
|
117
120
|
def message_for_normal_block(variable, all_arguments)
|
118
|
-
if all_arguments.none?(&:referenced?) &&
|
119
|
-
!define_method_call?(variable)
|
121
|
+
if all_arguments.none?(&:referenced?) && !define_method_call?(variable)
|
120
122
|
if all_arguments.count > 1
|
121
123
|
"You can omit all the arguments if you don't care about them."
|
122
124
|
else
|
@@ -80,8 +80,7 @@ module RuboCop
|
|
80
80
|
|
81
81
|
def check_argument(variable)
|
82
82
|
return unless variable.method_argument?
|
83
|
-
return if variable.keyword_argument? &&
|
84
|
-
cop_config['AllowUnusedKeywordArguments']
|
83
|
+
return if variable.keyword_argument? && cop_config['AllowUnusedKeywordArguments']
|
85
84
|
return if ignored_method?(variable.scope.node.body)
|
86
85
|
|
87
86
|
super
|
@@ -183,8 +183,7 @@ module RuboCop
|
|
183
183
|
end
|
184
184
|
|
185
185
|
def access_modifier?(node)
|
186
|
-
node.bare_access_modifier? ||
|
187
|
-
node.method?(:private_class_method)
|
186
|
+
node.bare_access_modifier? || node.method?(:private_class_method)
|
188
187
|
end
|
189
188
|
|
190
189
|
def check_scope(node)
|
@@ -264,8 +263,7 @@ module RuboCop
|
|
264
263
|
end
|
265
264
|
|
266
265
|
def start_of_new_scope?(child)
|
267
|
-
child.module_type? || child.class_type? ||
|
268
|
-
child.sclass_type? || eval_call?(child)
|
266
|
+
child.module_type? || child.class_type? || child.sclass_type? || eval_call?(child)
|
269
267
|
end
|
270
268
|
|
271
269
|
def eval_call?(child)
|