rubocop 1.12.1 → 1.16.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +5 -2
- data/config/default.yml +78 -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 +2 -5
- 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 +36 -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 +4 -10
- 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 +2 -3
- 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 +19 -3
- 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 -17
- 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 +1 -3
- data/lib/rubocop/cop/style/accessor_grouping.rb +1 -3
- data/lib/rubocop/cop/style/alias.rb +5 -12
- 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 +2 -8
- 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 -8
- data/lib/rubocop/cop/style/guard_clause.rb +3 -7
- data/lib/rubocop/cop/style/hash_conversion.rb +28 -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 +1 -1
- data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +7 -12
- 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 +1 -3
- data/lib/rubocop/cop/style/multiline_ternary_operator.rb +1 -2
- data/lib/rubocop/cop/style/multiline_when_then.rb +2 -11
- 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 +110 -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 +4 -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 +25 -7
- 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 +20 -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 +4 -10
- 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 +5 -1
- data/lib/rubocop/file_finder.rb +1 -3
- 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/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
@@ -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)
|
@@ -38,9 +38,7 @@ module RuboCop
|
|
38
38
|
end
|
39
39
|
|
40
40
|
def after_leaving_scope(scope, _variable_table)
|
41
|
-
scope.variables.each_value
|
42
|
-
check_for_unused_assignments(variable)
|
43
|
-
end
|
41
|
+
scope.variables.each_value { |variable| check_for_unused_assignments(variable) }
|
44
42
|
end
|
45
43
|
|
46
44
|
def check_for_unused_assignments(variable)
|
@@ -64,8 +62,7 @@ module RuboCop
|
|
64
62
|
def message_for_useless_assignment(assignment)
|
65
63
|
variable = assignment.variable
|
66
64
|
|
67
|
-
format(MSG, variable: variable.name) +
|
68
|
-
message_specification(assignment, variable).to_s
|
65
|
+
format(MSG, variable: variable.name) + message_specification(assignment, variable).to_s
|
69
66
|
end
|
70
67
|
|
71
68
|
def message_specification(assignment, variable)
|
@@ -85,8 +82,7 @@ module RuboCop
|
|
85
82
|
|
86
83
|
def operator_assignment_message(scope, assignment)
|
87
84
|
return_value_node = return_value_node_of_scope(scope)
|
88
|
-
return unless assignment.meta_assignment_node
|
89
|
-
.equal?(return_value_node)
|
85
|
+
return unless assignment.meta_assignment_node.equal?(return_value_node)
|
90
86
|
|
91
87
|
" Use `#{assignment.operator.sub(/=$/, '')}` " \
|
92
88
|
"instead of `#{assignment.operator}`."
|
@@ -94,8 +90,7 @@ module RuboCop
|
|
94
90
|
|
95
91
|
def similar_name_message(variable)
|
96
92
|
variable_like_names = collect_variable_like_names(variable.scope)
|
97
|
-
similar_name = NameSimilarity.find_similar_name(variable.name,
|
98
|
-
variable_like_names)
|
93
|
+
similar_name = NameSimilarity.find_similar_name(variable.name, variable_like_names)
|
99
94
|
" Did you mean `#{similar_name}`?" if similar_name
|
100
95
|
end
|
101
96
|
|
@@ -46,8 +46,7 @@ module RuboCop
|
|
46
46
|
LIT_MSG = 'Literal `%<lit>s` used in void context.'
|
47
47
|
SELF_MSG = '`self` used in void context.'
|
48
48
|
DEFINED_MSG = '`%<defined>s` used in void context.'
|
49
|
-
NONMUTATING_MSG = 'Method `#%<method>s` used in void context. '
|
50
|
-
'Did you mean `#%<method>s!`?'
|
49
|
+
NONMUTATING_MSG = 'Method `#%<method>s` used in void context. Did you mean `#%<method>s!`?'
|
51
50
|
|
52
51
|
BINARY_OPERATORS = %i[* / % + - == === != < > <= >= <=>].freeze
|
53
52
|
UNARY_OPERATORS = %i[+@ -@ ~ !].freeze
|
@@ -78,9 +77,7 @@ module RuboCop
|
|
78
77
|
def check_begin(node)
|
79
78
|
expressions = *node
|
80
79
|
expressions.pop unless in_void_context?(node)
|
81
|
-
expressions.each
|
82
|
-
check_expression(expr)
|
83
|
-
end
|
80
|
+
expressions.each { |expr| check_expression(expr) }
|
84
81
|
end
|
85
82
|
|
86
83
|
def check_expression(expr)
|
@@ -107,7 +104,7 @@ module RuboCop
|
|
107
104
|
end
|
108
105
|
|
109
106
|
def check_literal(node)
|
110
|
-
return if !node.literal? || node.xstr_type?
|
107
|
+
return if !node.literal? || node.xstr_type? || node.range_type?
|
111
108
|
|
112
109
|
add_offense(node, message: format(LIT_MSG, lit: node.source))
|
113
110
|
end
|
@@ -125,13 +122,9 @@ module RuboCop
|
|
125
122
|
end
|
126
123
|
|
127
124
|
def check_nonmutating(node)
|
128
|
-
unless node.send_type? &&
|
129
|
-
NONMUTATING_METHODS.include?(node.method_name)
|
130
|
-
return
|
131
|
-
end
|
125
|
+
return unless node.send_type? && NONMUTATING_METHODS.include?(node.method_name)
|
132
126
|
|
133
|
-
add_offense(node, message: format(NONMUTATING_MSG,
|
134
|
-
method: node.method_name))
|
127
|
+
add_offense(node, message: format(NONMUTATING_MSG, method: node.method_name))
|
135
128
|
end
|
136
129
|
|
137
130
|
def in_void_context?(node)
|
@@ -96,9 +96,7 @@ module RuboCop
|
|
96
96
|
end
|
97
97
|
|
98
98
|
def display_style_guide?
|
99
|
-
(options[:display_style_guide] ||
|
100
|
-
config.for_all_cops['DisplayStyleGuide']) &&
|
101
|
-
!urls.empty?
|
99
|
+
(options[:display_style_guide] || config.for_all_cops['DisplayStyleGuide']) && !urls.empty?
|
102
100
|
end
|
103
101
|
|
104
102
|
def reference_urls
|
@@ -12,10 +12,7 @@ module RuboCop
|
|
12
12
|
#
|
13
13
|
# The maximum level of nesting allowed is configurable.
|
14
14
|
class BlockNesting < Base
|
15
|
-
NESTING_BLOCKS = %i[
|
16
|
-
case if while while_post
|
17
|
-
until until_post for resbody
|
18
|
-
].freeze
|
15
|
+
NESTING_BLOCKS = %i[case if while while_post until until_post for resbody].freeze
|
19
16
|
|
20
17
|
exclude_limit 'Max'
|
21
18
|
|
@@ -34,9 +31,7 @@ module RuboCop
|
|
34
31
|
if current_level > max
|
35
32
|
self.max = current_level
|
36
33
|
unless part_of_ignored_node?(node)
|
37
|
-
add_offense(node, message: message(max))
|
38
|
-
ignore_node(node)
|
39
|
-
end
|
34
|
+
add_offense(node, message: message(max)) { ignore_node(node) }
|
40
35
|
end
|
41
36
|
end
|
42
37
|
end
|
@@ -57,9 +57,7 @@ module RuboCop
|
|
57
57
|
private
|
58
58
|
|
59
59
|
def message(length, max_length)
|
60
|
-
format('Class has too many lines. [%<length>d/%<max>d]',
|
61
|
-
length: length,
|
62
|
-
max: max_length)
|
60
|
+
format('Class has too many lines. [%<length>d/%<max>d]', length: length, max: max_length)
|
63
61
|
end
|
64
62
|
end
|
65
63
|
end
|
@@ -33,8 +33,7 @@ module RuboCop
|
|
33
33
|
include MethodComplexity
|
34
34
|
include Utils::IteratingBlock
|
35
35
|
|
36
|
-
MSG = 'Cyclomatic complexity for %<method>s is too high. '
|
37
|
-
'[%<complexity>d/%<max>d]'
|
36
|
+
MSG = 'Cyclomatic complexity for %<method>s is too high. [%<complexity>d/%<max>d]'
|
38
37
|
COUNTED_NODES = %i[if while until for csend block block_pass
|
39
38
|
rescue when and or or_asgn and_asgn].freeze
|
40
39
|
|
@@ -37,9 +37,7 @@ module RuboCop
|
|
37
37
|
end
|
38
38
|
|
39
39
|
def on_casgn(node)
|
40
|
-
module_definition?(node)
|
41
|
-
check_code_length(node)
|
42
|
-
end
|
40
|
+
module_definition?(node) { check_code_length(node) }
|
43
41
|
end
|
44
42
|
|
45
43
|
private
|
@@ -50,9 +48,7 @@ module RuboCop
|
|
50
48
|
PATTERN
|
51
49
|
|
52
50
|
def message(length, max_length)
|
53
|
-
format('Module has too many lines. [%<length>d/%<max>d]',
|
54
|
-
length: length,
|
55
|
-
max: max_length)
|
51
|
+
format('Module has too many lines. [%<length>d/%<max>d]', length: length, max: max_length)
|
56
52
|
end
|
57
53
|
end
|
58
54
|
end
|
@@ -54,8 +54,7 @@ module RuboCop
|
|
54
54
|
exclude_limit 'Max'
|
55
55
|
exclude_limit 'MaxOptionalParameters'
|
56
56
|
|
57
|
-
MSG = 'Avoid parameter lists longer than %<max>d parameters. '
|
58
|
-
'[%<count>d/%<max>d]'
|
57
|
+
MSG = 'Avoid parameter lists longer than %<max>d parameters. [%<count>d/%<max>d]'
|
59
58
|
OPTIONAL_PARAMETERS_MSG = 'Method has too many optional parameters. [%<count>d/%<max>d]'
|
60
59
|
|
61
60
|
NAMED_KEYWORD_TYPES = %i[kwoptarg kwarg].freeze
|
@@ -71,9 +70,7 @@ module RuboCop
|
|
71
70
|
count: optargs.count
|
72
71
|
)
|
73
72
|
|
74
|
-
add_offense(node, message: message)
|
75
|
-
self.max_optional_parameters = optargs.count
|
76
|
-
end
|
73
|
+
add_offense(node, message: message) { self.max_optional_parameters = optargs.count }
|
77
74
|
end
|
78
75
|
alias on_defs on_def
|
79
76
|
|
@@ -27,8 +27,7 @@ module RuboCop
|
|
27
27
|
# end # ===
|
28
28
|
# end # 7 complexity points
|
29
29
|
class PerceivedComplexity < CyclomaticComplexity
|
30
|
-
MSG = 'Perceived complexity for %<method>s is too high. '
|
31
|
-
'[%<complexity>d/%<max>d]'
|
30
|
+
MSG = 'Perceived complexity for %<method>s is too high. [%<complexity>d/%<max>d]'
|
32
31
|
|
33
32
|
COUNTED_NODES = (CyclomaticComplexity::COUNTED_NODES - [:when] + [:case]).freeze
|
34
33
|
|
@@ -43,9 +43,7 @@ module RuboCop
|
|
43
43
|
end
|
44
44
|
|
45
45
|
def calculate
|
46
|
-
visit_depth_last(@node)
|
47
|
-
calculate_node(child)
|
48
|
-
end
|
46
|
+
visit_depth_last(@node) { |child| calculate_node(child) }
|
49
47
|
|
50
48
|
[
|
51
49
|
Math.sqrt(@assignment**2 + @branch**2 + @condition**2).round(2),
|
@@ -68,9 +66,7 @@ module RuboCop
|
|
68
66
|
end
|
69
67
|
|
70
68
|
def else_branch?(node)
|
71
|
-
%i[case if].include?(node.type) &&
|
72
|
-
node.else? &&
|
73
|
-
node.loc.else.is?('else')
|
69
|
+
%i[case if].include?(node.type) && node.else? && node.loc.else.is?('else')
|
74
70
|
end
|
75
71
|
|
76
72
|
private
|
@@ -125,7 +121,8 @@ module RuboCop
|
|
125
121
|
end
|
126
122
|
|
127
123
|
def capturing_variable?(name)
|
128
|
-
|
124
|
+
# TODO: Remove `Symbol#to_s` after supporting only Ruby >= 2.7.
|
125
|
+
name && !name.to_s.start_with?('_')
|
129
126
|
end
|
130
127
|
|
131
128
|
def branch?(node)
|
@@ -32,10 +32,7 @@ module RuboCop
|
|
32
32
|
return unless discount_repeated_attributes
|
33
33
|
|
34
34
|
self_attributes = {} # Share hash for `(send nil? :foo)` and `(send (self) :foo)`
|
35
|
-
@known_attributes = {
|
36
|
-
s(:self) => self_attributes,
|
37
|
-
nil => self_attributes
|
38
|
-
}
|
35
|
+
@known_attributes = { s(:self) => self_attributes, nil => self_attributes }
|
39
36
|
# example after running `obj = foo.bar; obj.baz.qux`
|
40
37
|
# { nil => {foo: {bar: {}}},
|
41
38
|
# s(self) => same hash ^,
|
@@ -114,9 +111,7 @@ module RuboCop
|
|
114
111
|
return yield nil
|
115
112
|
end
|
116
113
|
|
117
|
-
calls.fetch(value)
|
118
|
-
yield [calls, value]
|
119
|
-
end
|
114
|
+
calls.fetch(value) { yield [calls, value] }
|
120
115
|
end
|
121
116
|
|
122
117
|
VAR_SETTER_TO_GETTER = {
|
@@ -11,8 +11,7 @@ module RuboCop
|
|
11
11
|
|
12
12
|
MSG = 'Department name is missing.'
|
13
13
|
|
14
|
-
DISABLE_COMMENT_FORMAT =
|
15
|
-
/\A(# *rubocop *: *((dis|en)able|todo) +)(.*)/.freeze
|
14
|
+
DISABLE_COMMENT_FORMAT = /\A(# *rubocop *: *((dis|en)able|todo) +)(.*)/.freeze
|
16
15
|
|
17
16
|
# The token that makes up a disable comment.
|
18
17
|
# The allowed specification for comments after `# rubocop: disable` is
|
@@ -62,8 +61,7 @@ module RuboCop
|
|
62
61
|
end
|
63
62
|
|
64
63
|
def valid_content_token?(content_token)
|
65
|
-
/\W+/.match?(content_token) ||
|
66
|
-
DISABLING_COPS_CONTENT_TOKEN.match?(content_token)
|
64
|
+
/\W+/.match?(content_token) || DISABLING_COPS_CONTENT_TOKEN.match?(content_token)
|
67
65
|
end
|
68
66
|
|
69
67
|
def contain_unexpected_character_for_department_name?(name)
|
@@ -73,9 +71,7 @@ module RuboCop
|
|
73
71
|
def qualified_legacy_cop_name(cop_name)
|
74
72
|
legacy_cop_names = RuboCop::ConfigObsoletion.legacy_cop_names
|
75
73
|
|
76
|
-
legacy_cop_names.detect
|
77
|
-
legacy_cop_name.split('/')[1] == cop_name
|
78
|
-
end
|
74
|
+
legacy_cop_names.detect { |legacy_cop_name| legacy_cop_name.split('/')[1] == cop_name }
|
79
75
|
end
|
80
76
|
end
|
81
77
|
end
|