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
@@ -25,9 +25,7 @@ module RuboCop
|
|
25
25
|
def on_interpolation(begin_node)
|
26
26
|
return unless begin_node.children.empty?
|
27
27
|
|
28
|
-
add_offense(begin_node)
|
29
|
-
corrector.remove(begin_node.loc.expression)
|
30
|
-
end
|
28
|
+
add_offense(begin_node) { |corrector| corrector.remove(begin_node.loc.expression) }
|
31
29
|
end
|
32
30
|
end
|
33
31
|
end
|
@@ -51,9 +51,7 @@ module RuboCop
|
|
51
51
|
MSG = 'Do not return from an `ensure` block.'
|
52
52
|
|
53
53
|
def on_ensure(node)
|
54
|
-
node.body&.each_node(:return)
|
55
|
-
add_offense(return_node)
|
56
|
-
end
|
54
|
+
node.body&.each_node(:return) { |return_node| add_offense(return_node) }
|
57
55
|
end
|
58
56
|
end
|
59
57
|
end
|
@@ -112,16 +112,13 @@ module RuboCop
|
|
112
112
|
kwargs = build_kwargs(node)
|
113
113
|
overridden_kwargs = override_by_legacy_args(kwargs, node)
|
114
114
|
|
115
|
-
good_arguments = [
|
116
|
-
str_arg, overridden_kwargs
|
117
|
-
].flatten.compact.join(', ')
|
115
|
+
good_arguments = [str_arg, overridden_kwargs].flatten.compact.join(', ')
|
118
116
|
|
119
117
|
corrector.replace(arguments_range(node), good_arguments)
|
120
118
|
end
|
121
119
|
|
122
120
|
def correct_arguments?(arguments)
|
123
|
-
arguments.size == 1 ||
|
124
|
-
arguments.size == 2 && arguments[1].hash_type?
|
121
|
+
arguments.size == 1 || arguments.size == 2 && arguments[1].hash_type?
|
125
122
|
end
|
126
123
|
|
127
124
|
def build_kwargs(node)
|
@@ -157,8 +154,7 @@ module RuboCop
|
|
157
154
|
def arguments_range(node)
|
158
155
|
arguments = node.arguments
|
159
156
|
|
160
|
-
range_between(arguments.first.source_range.begin_pos,
|
161
|
-
arguments.last.source_range.end_pos)
|
157
|
+
range_between(arguments.first.source_range.begin_pos, arguments.last.source_range.end_pos)
|
162
158
|
end
|
163
159
|
end
|
164
160
|
end
|
@@ -140,8 +140,7 @@ module RuboCop
|
|
140
140
|
end
|
141
141
|
|
142
142
|
def format_method?(name, node)
|
143
|
-
return false if node.const_receiver? &&
|
144
|
-
!node.receiver.loc.name.is?(KERNEL)
|
143
|
+
return false if node.const_receiver? && !node.receiver.loc.name.is?(KERNEL)
|
145
144
|
return false unless node.method?(name)
|
146
145
|
|
147
146
|
node.arguments.size > 1 && node.first_argument.str_type?
|
@@ -174,11 +173,9 @@ module RuboCop
|
|
174
173
|
receiver = node.receiver
|
175
174
|
|
176
175
|
percent = node.method?(:%) &&
|
177
|
-
(STRING_TYPES.include?(receiver.type) ||
|
178
|
-
node.first_argument.array_type?)
|
176
|
+
(STRING_TYPES.include?(receiver.type) || node.first_argument.array_type?)
|
179
177
|
|
180
|
-
return false if percent && STRING_TYPES.include?(receiver.type) &&
|
181
|
-
heredoc?(node)
|
178
|
+
return false if percent && STRING_TYPES.include?(receiver.type) && heredoc?(node)
|
182
179
|
|
183
180
|
percent
|
184
181
|
end
|
@@ -34,8 +34,7 @@ module RuboCop
|
|
34
34
|
include RangeHelp
|
35
35
|
extend AutoCorrector
|
36
36
|
|
37
|
-
MSG = 'Put a method call with a HEREDOC receiver on the '
|
38
|
-
'same line as the HEREDOC opening.'
|
37
|
+
MSG = 'Put a method call with a HEREDOC receiver on the same line as the HEREDOC opening.'
|
39
38
|
|
40
39
|
def on_send(node)
|
41
40
|
heredoc = heredoc_node_descendent_receiver(node)
|
@@ -73,8 +73,7 @@ module RuboCop
|
|
73
73
|
end
|
74
74
|
|
75
75
|
def string_literal?(node)
|
76
|
-
node.str_type? ||
|
77
|
-
(node.dstr_type? && node.children.all? { |c| string_literal?(c) })
|
76
|
+
node.str_type? || (node.dstr_type? && node.children.all? { |c| string_literal?(c) })
|
78
77
|
end
|
79
78
|
|
80
79
|
def string_literals?(node1, node2)
|
@@ -48,10 +48,8 @@ module RuboCop
|
|
48
48
|
class IneffectiveAccessModifier < Base
|
49
49
|
MSG = '`%<modifier>s` (on line %<line>d) does not make singleton ' \
|
50
50
|
'methods %<modifier>s. Use %<alternative>s instead.'
|
51
|
-
ALTERNATIVE_PRIVATE = '`private_class_method` or `private` inside a '
|
52
|
-
|
53
|
-
ALTERNATIVE_PROTECTED = '`protected` inside a `class << self` ' \
|
54
|
-
'block'
|
51
|
+
ALTERNATIVE_PRIVATE = '`private_class_method` or `private` inside a `class << self` block'
|
52
|
+
ALTERNATIVE_PROTECTED = '`protected` inside a `class << self` block'
|
55
53
|
|
56
54
|
# @!method private_class_methods(node)
|
57
55
|
def_node_search :private_class_methods, <<~PATTERN
|
@@ -74,9 +72,7 @@ module RuboCop
|
|
74
72
|
end
|
75
73
|
|
76
74
|
def private_class_method_names(node)
|
77
|
-
private_class_methods(node).to_a.flatten
|
78
|
-
.select(&:basic_literal?)
|
79
|
-
.map(&:value)
|
75
|
+
private_class_methods(node).to_a.flatten.select(&:basic_literal?).map(&:value)
|
80
76
|
end
|
81
77
|
|
82
78
|
def format_message(modifier)
|
@@ -23,23 +23,16 @@ module RuboCop
|
|
23
23
|
'Use double quoted strings if you need interpolation.'
|
24
24
|
|
25
25
|
def on_str(node)
|
26
|
-
return
|
27
|
-
return if string_or_regex?(node.parent)
|
26
|
+
return if node.parent&.regexp_type?
|
28
27
|
return unless /(?<!\\)#\{.*\}/.match?(node.source)
|
29
28
|
return if heredoc?(node)
|
30
29
|
return unless node.loc.begin && node.loc.end
|
31
30
|
|
32
|
-
add_offense(node)
|
33
|
-
autocorrect(corrector, node)
|
34
|
-
end
|
31
|
+
add_offense(node) { |corrector| autocorrect(corrector, node) }
|
35
32
|
end
|
36
33
|
|
37
34
|
private
|
38
35
|
|
39
|
-
def string_or_regex?(node)
|
40
|
-
node&.dstr_type? || node&.regexp_type?
|
41
|
-
end
|
42
|
-
|
43
36
|
def autocorrect(corrector, node)
|
44
37
|
starting_token, ending_token = if node.source.include?('"')
|
45
38
|
['%{', '}']
|
@@ -52,8 +45,7 @@ module RuboCop
|
|
52
45
|
end
|
53
46
|
|
54
47
|
def heredoc?(node)
|
55
|
-
node.loc.is_a?(Parser::Source::Map::Heredoc) ||
|
56
|
-
(node.parent && heredoc?(node.parent))
|
48
|
+
node.loc.is_a?(Parser::Source::Map::Heredoc) || (node.parent && heredoc?(node.parent))
|
57
49
|
end
|
58
50
|
end
|
59
51
|
end
|
@@ -34,8 +34,7 @@ module RuboCop
|
|
34
34
|
# interpolation should not be removed if the expanded value
|
35
35
|
# contains a space character.
|
36
36
|
expanded_value = autocorrected_value(final_node)
|
37
|
-
return if in_array_percent_literal?(begin_node) &&
|
38
|
-
/\s/.match?(expanded_value)
|
37
|
+
return if in_array_percent_literal?(begin_node) && /\s/.match?(expanded_value)
|
39
38
|
|
40
39
|
add_offense(final_node) do |corrector|
|
41
40
|
return if final_node.dstr_type? # nested, fixed in next iteration
|
@@ -56,8 +55,7 @@ module RuboCop
|
|
56
55
|
|
57
56
|
def special_keyword?(node)
|
58
57
|
# handle strings like __FILE__
|
59
|
-
(node.str_type? && !node.loc.respond_to?(:begin)) ||
|
60
|
-
node.source_range.is?('__LINE__')
|
58
|
+
(node.str_type? && !node.loc.respond_to?(:begin)) || node.source_range.is?('__LINE__')
|
61
59
|
end
|
62
60
|
|
63
61
|
def autocorrected_value(node)
|
@@ -101,8 +99,7 @@ module RuboCop
|
|
101
99
|
# Does node print its own source when converted to a string?
|
102
100
|
def prints_as_self?(node)
|
103
101
|
node.basic_literal? ||
|
104
|
-
(COMPOSITE.include?(node.type) &&
|
105
|
-
node.children.all? { |child| prints_as_self?(child) })
|
102
|
+
(COMPOSITE.include?(node.type) && node.children.all? { |child| prints_as_self?(child) })
|
106
103
|
end
|
107
104
|
|
108
105
|
def space_literal?(node)
|
@@ -49,8 +49,7 @@ module RuboCop
|
|
49
49
|
class Loop < Base
|
50
50
|
extend AutoCorrector
|
51
51
|
|
52
|
-
MSG = 'Use `Kernel#loop` with `break` rather than '
|
53
|
-
'`begin/end/until`(or `while`).'
|
52
|
+
MSG = 'Use `Kernel#loop` with `break` rather than `begin/end/until`(or `while`).'
|
54
53
|
|
55
54
|
def on_while_post(node)
|
56
55
|
register_offense(node)
|
@@ -45,10 +45,8 @@ module RuboCop
|
|
45
45
|
class MissingCopEnableDirective < Base
|
46
46
|
include RangeHelp
|
47
47
|
|
48
|
-
MSG = 'Re-enable %<cop>s cop with `# rubocop:enable` after '
|
49
|
-
|
50
|
-
MSG_BOUND = 'Re-enable %<cop>s cop within %<max_range>s lines after ' \
|
51
|
-
'disabling it.'
|
48
|
+
MSG = 'Re-enable %<cop>s cop with `# rubocop:enable` after disabling it.'
|
49
|
+
MSG_BOUND = 'Re-enable %<cop>s cop within %<max_range>s lines after disabling it.'
|
52
50
|
|
53
51
|
# rubocop:disable Metrics/AbcSize
|
54
52
|
def on_new_investigation
|
@@ -59,9 +57,7 @@ module RuboCop
|
|
59
57
|
# the case when max_range is Float::INFINITY
|
60
58
|
next if line_range.max - line_range.min < max_range + 2
|
61
59
|
|
62
|
-
range = source_range(processed_source.buffer,
|
63
|
-
line_range.min,
|
64
|
-
(0..0))
|
60
|
+
range = source_range(processed_source.buffer, line_range.min, (0..0))
|
65
61
|
|
66
62
|
add_offense(range, message: message(max_range: max_range, cop: cop))
|
67
63
|
end
|
@@ -53,8 +53,7 @@ module RuboCop
|
|
53
53
|
singleton_method_added singleton_method_removed
|
54
54
|
singleton_method_undefined].freeze
|
55
55
|
|
56
|
-
CALLBACKS = (CLASS_LIFECYCLE_CALLBACKS +
|
57
|
-
METHOD_LIFECYCLE_CALLBACKS).to_set.freeze
|
56
|
+
CALLBACKS = (CLASS_LIFECYCLE_CALLBACKS + METHOD_LIFECYCLE_CALLBACKS).to_set.freeze
|
58
57
|
|
59
58
|
def on_def(node)
|
60
59
|
return unless offender?(node)
|
@@ -21,8 +21,7 @@ module RuboCop
|
|
21
21
|
# /(FOO)(BAR)/
|
22
22
|
#
|
23
23
|
class MixedRegexpCaptureTypes < Base
|
24
|
-
MSG = 'Do not mix named captures and numbered captures '
|
25
|
-
'in a Regexp literal.'
|
24
|
+
MSG = 'Do not mix named captures and numbered captures in a Regexp literal.'
|
26
25
|
|
27
26
|
def on_regexp(node)
|
28
27
|
return if node.interpolation?
|
@@ -55,8 +55,7 @@ module RuboCop
|
|
55
55
|
# end
|
56
56
|
# end
|
57
57
|
class NestedMethodDefinition < Base
|
58
|
-
MSG = 'Method definitions must not be nested. '
|
59
|
-
'Use `lambda` instead.'
|
58
|
+
MSG = 'Method definitions must not be nested. Use `lambda` instead.'
|
60
59
|
|
61
60
|
def on_def(node)
|
62
61
|
subject, = *node
|
@@ -39,9 +39,7 @@ module RuboCop
|
|
39
39
|
# if found within a percent literal expression, will cause a
|
40
40
|
# NestedPercentLiteral violation to be emitted.
|
41
41
|
PERCENT_LITERAL_TYPES = PreferredDelimiters::PERCENT_LITERAL_TYPES
|
42
|
-
REGEXES = PERCENT_LITERAL_TYPES.map
|
43
|
-
/\A#{percent_literal}\W/
|
44
|
-
end.freeze
|
42
|
+
REGEXES = PERCENT_LITERAL_TYPES.map { |percent_literal| /\A#{percent_literal}\W/ }.freeze
|
45
43
|
|
46
44
|
def on_array(node)
|
47
45
|
process(node, *PERCENT_LITERAL_TYPES)
|
@@ -66,9 +66,7 @@ module RuboCop
|
|
66
66
|
loop_variable(node.arguments) do |var_name|
|
67
67
|
return unless var_is_required?(node.body, var_name)
|
68
68
|
|
69
|
-
add_offense(node.send_node)
|
70
|
-
correct_block(corrector, node.send_node)
|
71
|
-
end
|
69
|
+
add_offense(node.send_node) { |corrector| correct_block(corrector, node.send_node) }
|
72
70
|
end
|
73
71
|
end
|
74
72
|
|
@@ -97,7 +97,7 @@ module RuboCop
|
|
97
97
|
|
98
98
|
def handle_as_symbol(node)
|
99
99
|
to_method_symbol(node) do |receiver, sym_node, to_method|
|
100
|
-
next if receiver.nil?
|
100
|
+
next if receiver.nil? || !node.arguments.one?
|
101
101
|
|
102
102
|
message = format(
|
103
103
|
MSG,
|
@@ -113,8 +113,7 @@ module RuboCop
|
|
113
113
|
end
|
114
114
|
|
115
115
|
def correct_method(node, receiver)
|
116
|
-
format(CONVERSION_METHOD_CLASS_MAPPING[node.method_name],
|
117
|
-
number_object: receiver.source)
|
116
|
+
format(CONVERSION_METHOD_CLASS_MAPPING[node.method_name], number_object: receiver.source)
|
118
117
|
end
|
119
118
|
|
120
119
|
def correct_sym_method(to_method)
|
@@ -31,8 +31,7 @@ module RuboCop
|
|
31
31
|
include FrozenStringLiteral
|
32
32
|
extend AutoCorrector
|
33
33
|
|
34
|
-
MSG = 'The encoding magic comment should precede all other '
|
35
|
-
'magic comments.'
|
34
|
+
MSG = 'The encoding magic comment should precede all other magic comments.'
|
36
35
|
|
37
36
|
def on_new_investigation
|
38
37
|
return if processed_source.buffer.source.empty?
|
@@ -48,9 +48,7 @@ module RuboCop
|
|
48
48
|
def on_when(node)
|
49
49
|
regexp_conditions = node.conditions.select(&:regexp_type?)
|
50
50
|
|
51
|
-
@valid_ref = regexp_conditions.map
|
52
|
-
check_regexp(condition)
|
53
|
-
end.compact.max
|
51
|
+
@valid_ref = regexp_conditions.map { |condition| check_regexp(condition) }.compact.max
|
54
52
|
end
|
55
53
|
|
56
54
|
def on_nth_ref(node)
|
@@ -29,9 +29,7 @@ module RuboCop
|
|
29
29
|
|
30
30
|
range = space_range(node.first_argument.source_range, space_length)
|
31
31
|
|
32
|
-
add_offense(range)
|
33
|
-
corrector.remove(range)
|
34
|
-
end
|
32
|
+
add_offense(range) { |corrector| corrector.remove(range) }
|
35
33
|
end
|
36
34
|
alias on_csend on_send
|
37
35
|
|
@@ -34,9 +34,7 @@ module RuboCop
|
|
34
34
|
def on_percent_literal(node)
|
35
35
|
return unless contains_colons_or_commas?(node)
|
36
36
|
|
37
|
-
add_offense(node)
|
38
|
-
autocorrect(corrector, node)
|
39
|
-
end
|
37
|
+
add_offense(node) { |corrector| autocorrect(corrector, node) }
|
40
38
|
end
|
41
39
|
|
42
40
|
private
|
@@ -21,8 +21,7 @@ module RuboCop
|
|
21
21
|
#
|
22
22
|
# 0 # just use 0 instead
|
23
23
|
class RandOne < Base
|
24
|
-
MSG = '`%<method>s` always returns `0`. '
|
25
|
-
'Perhaps you meant `rand(2)` or `rand`?'
|
24
|
+
MSG = '`%<method>s` always returns `0`. Perhaps you meant `rand(2)` or `rand`?'
|
26
25
|
RESTRICT_ON_SEND = %i[rand].freeze
|
27
26
|
|
28
27
|
# @!method rand_one?(node)
|
@@ -60,18 +60,19 @@ module RuboCop
|
|
60
60
|
processed_source.buffer.source_line(range.line - 1).blank?
|
61
61
|
end
|
62
62
|
|
63
|
-
def comment_range_with_surrounding_space(
|
64
|
-
if previous_line_blank?(
|
65
|
-
processed_source.comment_config.comment_only_line?(
|
63
|
+
def comment_range_with_surrounding_space(directive_comment_range, line_comment_range)
|
64
|
+
if previous_line_blank?(directive_comment_range) &&
|
65
|
+
processed_source.comment_config.comment_only_line?(directive_comment_range.line) &&
|
66
|
+
directive_comment_range.begin_pos == line_comment_range.begin_pos
|
66
67
|
# When the previous line is blank, it should be retained
|
67
|
-
range_with_surrounding_space(range:
|
68
|
+
range_with_surrounding_space(range: directive_comment_range, side: :right)
|
68
69
|
else
|
69
70
|
# Eat the entire comment, the preceding space, and the preceding
|
70
71
|
# newline if there is one.
|
71
|
-
original_begin =
|
72
|
-
range = range_with_surrounding_space(
|
73
|
-
|
74
|
-
|
72
|
+
original_begin = directive_comment_range.begin_pos
|
73
|
+
range = range_with_surrounding_space(
|
74
|
+
range: directive_comment_range, side: :left, newlines: true
|
75
|
+
)
|
75
76
|
|
76
77
|
range_with_surrounding_space(range: range,
|
77
78
|
side: :right,
|
@@ -93,9 +94,7 @@ module RuboCop
|
|
93
94
|
|
94
95
|
range = range_with_surrounding_comma(range, :right)
|
95
96
|
# Eat following spaces up to EOL, but not the newline itself.
|
96
|
-
range_with_surrounding_space(range: range,
|
97
|
-
side: :right,
|
98
|
-
newlines: false)
|
97
|
+
range_with_surrounding_space(range: range, side: :right, newlines: false)
|
99
98
|
end
|
100
99
|
|
101
100
|
def each_redundant_disable(cop_disabled_line_ranges, offenses,
|
@@ -103,13 +102,9 @@ module RuboCop
|
|
103
102
|
disabled_ranges = cop_disabled_line_ranges[COP_NAME] || [0..0]
|
104
103
|
|
105
104
|
cop_disabled_line_ranges.each do |cop, line_ranges|
|
106
|
-
each_already_disabled(line_ranges,
|
107
|
-
disabled_ranges) do |comment|
|
108
|
-
yield comment, cop
|
109
|
-
end
|
105
|
+
each_already_disabled(line_ranges, disabled_ranges) { |comment| yield comment, cop }
|
110
106
|
|
111
|
-
each_line_range(line_ranges, disabled_ranges, offenses,
|
112
|
-
cop, &block)
|
107
|
+
each_line_range(line_ranges, disabled_ranges, offenses, cop, &block)
|
113
108
|
end
|
114
109
|
end
|
115
110
|
|
@@ -119,8 +114,7 @@ module RuboCop
|
|
119
114
|
comment = processed_source.comment_at_line(line_range.begin)
|
120
115
|
next if ignore_offense?(disabled_ranges, line_range)
|
121
116
|
|
122
|
-
redundant_cop = find_redundant(comment, offenses, cop, line_range,
|
123
|
-
line_ranges[ix + 1])
|
117
|
+
redundant_cop = find_redundant(comment, offenses, cop, line_range, line_ranges[ix + 1])
|
124
118
|
yield comment, redundant_cop if redundant_cop
|
125
119
|
end
|
126
120
|
end
|
@@ -151,8 +145,7 @@ module RuboCop
|
|
151
145
|
# comment. If the disable all comment is truly redundant, we will
|
152
146
|
# detect that when examining the comments of another cop, and we
|
153
147
|
# get the full line range for the disable all.
|
154
|
-
if (next_line_range.nil? ||
|
155
|
-
line_range.last != next_line_range.first) &&
|
148
|
+
if (next_line_range.nil? || line_range.last != next_line_range.first) &&
|
156
149
|
offenses.none? { |o| line_range.cover?(o.line) }
|
157
150
|
'all'
|
158
151
|
end
|
@@ -180,8 +173,7 @@ module RuboCop
|
|
180
173
|
|
181
174
|
def add_offenses(redundant_cops)
|
182
175
|
redundant_cops.each do |comment, cops|
|
183
|
-
if all_disabled?(comment) ||
|
184
|
-
directive_count(comment) == cops.size
|
176
|
+
if all_disabled?(comment) || directive_count(comment) == cops.size
|
185
177
|
add_offense_for_entire_comment(comment, cops)
|
186
178
|
else
|
187
179
|
add_offense_for_some_cops(comment, cops)
|
@@ -190,14 +182,14 @@ module RuboCop
|
|
190
182
|
end
|
191
183
|
|
192
184
|
def add_offense_for_entire_comment(comment, cops)
|
193
|
-
location = comment.
|
185
|
+
location = DirectiveComment.new(comment).range
|
194
186
|
cop_list = cops.sort.map { |c| describe(c) }
|
195
187
|
|
196
188
|
add_offense(
|
197
189
|
location,
|
198
190
|
message: "Unnecessary disabling of #{cop_list.join(', ')}."
|
199
191
|
) do |corrector|
|
200
|
-
range = comment_range_with_surrounding_space(location)
|
192
|
+
range = comment_range_with_surrounding_space(location, comment.loc.expression)
|
201
193
|
corrector.remove(range)
|
202
194
|
end
|
203
195
|
end
|
@@ -229,8 +221,7 @@ module RuboCop
|
|
229
221
|
return unless offset
|
230
222
|
|
231
223
|
offset += haystack.begin_pos
|
232
|
-
Parser::Source::Range.new(haystack.source_buffer, offset,
|
233
|
-
offset + needle.size)
|
224
|
+
Parser::Source::Range.new(haystack.source_buffer, offset, offset + needle.size)
|
234
225
|
end
|
235
226
|
|
236
227
|
def trailing_range?(ranges, range)
|