rubocop 1.10.0 → 1.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +15 -14
- data/assets/output.html.erb +1 -1
- data/config/default.yml +60 -3
- data/exe/rubocop +1 -3
- data/lib/rubocop.rb +6 -1
- data/lib/rubocop/cached_data.rb +1 -3
- data/lib/rubocop/cli.rb +4 -6
- data/lib/rubocop/cli/command/auto_genenerate_config.rb +9 -19
- data/lib/rubocop/cli/command/execute_runner.rb +1 -1
- data/lib/rubocop/cli/command/init_dotfile.rb +1 -3
- data/lib/rubocop/cli/command/show_cops.rb +1 -4
- data/lib/rubocop/cli/command/suggest_extensions.rb +3 -2
- data/lib/rubocop/comment_config.rb +45 -101
- data/lib/rubocop/config.rb +11 -26
- data/lib/rubocop/config_loader.rb +5 -11
- data/lib/rubocop/config_loader_resolver.rb +22 -14
- data/lib/rubocop/config_obsoletion/cop_rule.rb +1 -2
- data/lib/rubocop/config_store.rb +1 -2
- data/lib/rubocop/config_validator.rb +5 -10
- data/lib/rubocop/cop/autocorrect_logic.rb +3 -8
- data/lib/rubocop/cop/badge.rb +1 -2
- data/lib/rubocop/cop/base.rb +8 -6
- data/lib/rubocop/cop/bundler/duplicated_gem.rb +3 -3
- data/lib/rubocop/cop/bundler/gem_comment.rb +43 -10
- data/lib/rubocop/cop/bundler/gem_version.rb +99 -0
- data/lib/rubocop/cop/bundler/insecure_protocol_source.rb +1 -0
- data/lib/rubocop/cop/bundler/ordered_gems.rb +2 -4
- data/lib/rubocop/cop/commissioner.rb +2 -8
- data/lib/rubocop/cop/cop.rb +4 -18
- data/lib/rubocop/cop/corrector.rb +1 -4
- data/lib/rubocop/cop/correctors/alignment_corrector.rb +6 -12
- data/lib/rubocop/cop/correctors/each_to_for_corrector.rb +2 -4
- data/lib/rubocop/cop/correctors/for_to_each_corrector.rb +1 -2
- data/lib/rubocop/cop/correctors/line_break_corrector.rb +3 -6
- data/lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb +1 -3
- data/lib/rubocop/cop/correctors/ordered_gem_corrector.rb +1 -3
- data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +2 -8
- data/lib/rubocop/cop/gemspec/date_assignment.rb +1 -0
- data/lib/rubocop/cop/gemspec/duplicated_assignment.rb +3 -2
- data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +2 -4
- data/lib/rubocop/cop/gemspec/required_ruby_version.rb +2 -0
- data/lib/rubocop/cop/gemspec/ruby_version_globals_usage.rb +2 -0
- data/lib/rubocop/cop/generator.rb +3 -6
- data/lib/rubocop/cop/generator/configuration_injector.rb +1 -2
- data/lib/rubocop/cop/generator/require_file_injector.rb +2 -5
- data/lib/rubocop/cop/internal_affairs.rb +1 -0
- data/lib/rubocop/cop/internal_affairs/example_description.rb +7 -4
- data/lib/rubocop/cop/internal_affairs/method_name_equal.rb +3 -5
- data/lib/rubocop/cop/internal_affairs/node_destructuring.rb +3 -3
- data/lib/rubocop/cop/internal_affairs/node_matcher_directive.rb +151 -0
- data/lib/rubocop/cop/internal_affairs/node_type_predicate.rb +2 -3
- data/lib/rubocop/cop/internal_affairs/offense_location_keyword.rb +3 -2
- data/lib/rubocop/cop/internal_affairs/redundant_described_class_as_subject.rb +1 -0
- data/lib/rubocop/cop/internal_affairs/redundant_let_rubocop_config_new.rb +1 -0
- data/lib/rubocop/cop/internal_affairs/redundant_location_argument.rb +1 -0
- data/lib/rubocop/cop/internal_affairs/redundant_message_argument.rb +3 -0
- data/lib/rubocop/cop/internal_affairs/style_detected_api_use.rb +5 -2
- data/lib/rubocop/cop/internal_affairs/useless_message_assertion.rb +3 -3
- data/lib/rubocop/cop/layout/access_modifier_indentation.rb +12 -10
- data/lib/rubocop/cop/layout/argument_alignment.rb +8 -9
- data/lib/rubocop/cop/layout/array_alignment.rb +7 -6
- data/lib/rubocop/cop/layout/assignment_indentation.rb +8 -7
- data/lib/rubocop/cop/layout/begin_end_alignment.rb +1 -4
- data/lib/rubocop/cop/layout/block_alignment.rb +8 -19
- data/lib/rubocop/cop/layout/block_end_newline.rb +4 -8
- data/lib/rubocop/cop/layout/case_indentation.rb +1 -3
- data/lib/rubocop/cop/layout/class_structure.rb +5 -10
- data/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +18 -30
- data/lib/rubocop/cop/layout/comment_indentation.rb +17 -21
- data/lib/rubocop/cop/layout/def_end_alignment.rb +2 -6
- data/lib/rubocop/cop/layout/dot_position.rb +1 -3
- data/lib/rubocop/cop/layout/else_alignment.rb +10 -9
- data/lib/rubocop/cop/layout/empty_comment.rb +5 -12
- data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +22 -8
- data/lib/rubocop/cop/layout/empty_line_between_defs.rb +2 -6
- data/lib/rubocop/cop/layout/empty_lines.rb +1 -3
- data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +8 -18
- data/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +2 -8
- data/lib/rubocop/cop/layout/end_alignment.rb +1 -2
- data/lib/rubocop/cop/layout/end_of_line.rb +1 -1
- data/lib/rubocop/cop/layout/extra_spacing.rb +5 -9
- data/lib/rubocop/cop/layout/first_argument_indentation.rb +11 -5
- data/lib/rubocop/cop/layout/first_array_element_indentation.rb +10 -8
- data/lib/rubocop/cop/layout/first_array_element_line_break.rb +1 -2
- data/lib/rubocop/cop/layout/first_hash_element_indentation.rb +24 -20
- data/lib/rubocop/cop/layout/first_hash_element_line_break.rb +1 -2
- data/lib/rubocop/cop/layout/first_method_argument_line_break.rb +1 -2
- data/lib/rubocop/cop/layout/first_method_parameter_line_break.rb +1 -2
- data/lib/rubocop/cop/layout/first_parameter_indentation.rb +6 -5
- data/lib/rubocop/cop/layout/hash_alignment.rb +3 -6
- data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +2 -9
- data/lib/rubocop/cop/layout/heredoc_indentation.rb +2 -6
- data/lib/rubocop/cop/layout/indentation_consistency.rb +9 -6
- data/lib/rubocop/cop/layout/indentation_style.rb +25 -30
- data/lib/rubocop/cop/layout/indentation_width.rb +21 -11
- data/lib/rubocop/cop/layout/initial_indentation.rb +1 -4
- data/lib/rubocop/cop/layout/line_length.rb +4 -15
- data/lib/rubocop/cop/layout/multiline_array_line_breaks.rb +1 -2
- data/lib/rubocop/cop/layout/multiline_block_layout.rb +7 -15
- data/lib/rubocop/cop/layout/multiline_hash_key_line_breaks.rb +1 -2
- data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +1 -2
- data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +22 -15
- data/lib/rubocop/cop/layout/multiline_operation_indentation.rb +10 -5
- data/lib/rubocop/cop/layout/parameter_alignment.rb +6 -5
- data/lib/rubocop/cop/layout/redundant_line_break.rb +137 -0
- data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +3 -6
- data/lib/rubocop/cop/layout/single_line_block_chain.rb +53 -0
- data/lib/rubocop/cop/layout/space_after_colon.rb +1 -3
- data/lib/rubocop/cop/layout/space_after_method_name.rb +2 -4
- data/lib/rubocop/cop/layout/space_around_block_parameters.rb +6 -14
- data/lib/rubocop/cop/layout/space_around_equals_in_parameter_default.rb +1 -2
- data/lib/rubocop/cop/layout/space_around_keyword.rb +3 -6
- data/lib/rubocop/cop/layout/space_around_operators.rb +4 -9
- data/lib/rubocop/cop/layout/space_before_block_braces.rb +2 -3
- data/lib/rubocop/cop/layout/space_before_brackets.rb +1 -3
- data/lib/rubocop/cop/layout/space_before_comment.rb +1 -3
- data/lib/rubocop/cop/layout/space_before_first_arg.rb +5 -11
- data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +2 -4
- data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +5 -10
- data/lib/rubocop/cop/layout/space_inside_array_percent_literal.rb +2 -7
- data/lib/rubocop/cop/layout/space_inside_block_braces.rb +6 -11
- data/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +1 -2
- data/lib/rubocop/cop/layout/space_inside_reference_brackets.rb +1 -2
- data/lib/rubocop/cop/legacy/corrections_proxy.rb +2 -8
- data/lib/rubocop/cop/legacy/corrector.rb +1 -3
- data/lib/rubocop/cop/lint/ambiguous_assignment.rb +1 -6
- data/lib/rubocop/cop/lint/ambiguous_block_association.rb +14 -7
- data/lib/rubocop/cop/lint/big_decimal_new.rb +1 -0
- data/lib/rubocop/cop/lint/boolean_symbol.rb +2 -2
- data/lib/rubocop/cop/lint/constant_definition_in_block.rb +2 -0
- data/lib/rubocop/cop/lint/constant_resolution.rb +2 -2
- data/lib/rubocop/cop/lint/debugger.rb +3 -1
- data/lib/rubocop/cop/lint/deprecated_class_methods.rb +79 -41
- data/lib/rubocop/cop/lint/deprecated_constants.rb +3 -3
- data/lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb +3 -5
- data/lib/rubocop/cop/lint/duplicate_branch.rb +2 -3
- data/lib/rubocop/cop/lint/duplicate_hash_key.rb +1 -3
- data/lib/rubocop/cop/lint/duplicate_methods.rb +6 -7
- data/lib/rubocop/cop/lint/duplicate_require.rb +1 -0
- data/lib/rubocop/cop/lint/each_with_object_argument.rb +1 -0
- data/lib/rubocop/cop/lint/else_layout.rb +1 -3
- data/lib/rubocop/cop/lint/empty_ensure.rb +1 -3
- data/lib/rubocop/cop/lint/empty_file.rb +1 -3
- data/lib/rubocop/cop/lint/empty_interpolation.rb +1 -3
- data/lib/rubocop/cop/lint/ensure_return.rb +1 -3
- data/lib/rubocop/cop/lint/erb_new_arguments.rb +4 -7
- data/lib/rubocop/cop/lint/float_out_of_range.rb +1 -2
- data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +4 -6
- data/lib/rubocop/cop/lint/hash_compare_by_identity.rb +1 -0
- data/lib/rubocop/cop/lint/heredoc_method_call_position.rb +1 -2
- data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +1 -2
- data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +4 -7
- data/lib/rubocop/cop/lint/inherit_exception.rb +2 -2
- data/lib/rubocop/cop/lint/interpolation_check.rb +3 -11
- data/lib/rubocop/cop/lint/literal_in_interpolation.rb +3 -6
- data/lib/rubocop/cop/lint/loop.rb +1 -2
- data/lib/rubocop/cop/lint/missing_cop_enable_directive.rb +3 -7
- data/lib/rubocop/cop/lint/missing_super.rb +1 -2
- data/lib/rubocop/cop/lint/mixed_regexp_capture_types.rb +1 -2
- data/lib/rubocop/cop/lint/multiple_comparison.rb +1 -0
- data/lib/rubocop/cop/lint/nested_method_definition.rb +4 -2
- data/lib/rubocop/cop/lint/nested_percent_literal.rb +1 -3
- data/lib/rubocop/cop/lint/next_without_accumulator.rb +1 -0
- data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +8 -3
- data/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +3 -0
- data/lib/rubocop/cop/lint/number_conversion.rb +13 -5
- data/lib/rubocop/cop/lint/ordered_magic_comments.rb +1 -2
- data/lib/rubocop/cop/lint/out_of_range_regexp_ref.rb +1 -3
- data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +1 -3
- data/lib/rubocop/cop/lint/percent_symbol_array.rb +1 -3
- data/lib/rubocop/cop/lint/raise_exception.rb +3 -2
- data/lib/rubocop/cop/lint/rand_one.rb +2 -2
- data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +9 -22
- data/lib/rubocop/cop/lint/redundant_require_statement.rb +1 -0
- data/lib/rubocop/cop/lint/redundant_safe_navigation.rb +2 -3
- data/lib/rubocop/cop/lint/redundant_splat_expansion.rb +5 -7
- data/lib/rubocop/cop/lint/redundant_string_coercion.rb +2 -2
- data/lib/rubocop/cop/lint/redundant_with_index.rb +2 -4
- data/lib/rubocop/cop/lint/redundant_with_object.rb +2 -4
- data/lib/rubocop/cop/lint/regexp_as_condition.rb +1 -3
- data/lib/rubocop/cop/lint/require_parentheses.rb +2 -4
- data/lib/rubocop/cop/lint/rescue_exception.rb +1 -2
- data/lib/rubocop/cop/lint/rescue_type.rb +2 -7
- data/lib/rubocop/cop/lint/return_in_void_context.rb +1 -2
- data/lib/rubocop/cop/lint/safe_navigation_chain.rb +2 -2
- data/lib/rubocop/cop/lint/safe_navigation_consistency.rb +4 -10
- data/lib/rubocop/cop/lint/safe_navigation_with_empty.rb +2 -2
- data/lib/rubocop/cop/lint/send_with_mixin_argument.rb +3 -7
- data/lib/rubocop/cop/lint/shadowed_argument.rb +5 -11
- data/lib/rubocop/cop/lint/shadowed_exception.rb +7 -8
- data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +1 -0
- data/lib/rubocop/cop/lint/struct_new_override.rb +2 -2
- data/lib/rubocop/cop/lint/suppressed_exception.rb +44 -1
- data/lib/rubocop/cop/lint/symbol_conversion.rb +91 -6
- data/lib/rubocop/cop/lint/syntax.rb +1 -3
- data/lib/rubocop/cop/lint/to_enum_arguments.rb +3 -0
- data/lib/rubocop/cop/lint/to_json.rb +1 -2
- data/lib/rubocop/cop/lint/trailing_comma_in_attribute_declaration.rb +1 -3
- data/lib/rubocop/cop/lint/underscore_prefixed_variable_name.rb +1 -3
- data/lib/rubocop/cop/lint/unified_integer.rb +1 -0
- data/lib/rubocop/cop/lint/unmodified_reduce_accumulator.rb +5 -0
- data/lib/rubocop/cop/lint/unreachable_code.rb +3 -5
- data/lib/rubocop/cop/lint/unreachable_loop.rb +15 -7
- data/lib/rubocop/cop/lint/unused_block_argument.rb +9 -7
- data/lib/rubocop/cop/lint/unused_method_argument.rb +2 -2
- data/lib/rubocop/cop/lint/uri_escape_unescape.rb +1 -0
- data/lib/rubocop/cop/lint/useless_access_modifier.rb +6 -4
- data/lib/rubocop/cop/lint/useless_assignment.rb +4 -9
- data/lib/rubocop/cop/lint/useless_setter_call.rb +2 -3
- data/lib/rubocop/cop/lint/useless_times.rb +3 -0
- data/lib/rubocop/cop/lint/void.rb +4 -11
- data/lib/rubocop/cop/message_annotator.rb +1 -3
- data/lib/rubocop/cop/metrics/block_nesting.rb +2 -7
- data/lib/rubocop/cop/metrics/class_length.rb +1 -3
- data/lib/rubocop/cop/metrics/cyclomatic_complexity.rb +1 -2
- data/lib/rubocop/cop/metrics/module_length.rb +3 -6
- data/lib/rubocop/cop/metrics/parameter_lists.rb +3 -5
- data/lib/rubocop/cop/metrics/perceived_complexity.rb +1 -2
- data/lib/rubocop/cop/metrics/utils/abc_size_calculator.rb +4 -7
- data/lib/rubocop/cop/metrics/utils/code_length_calculator.rb +6 -4
- data/lib/rubocop/cop/metrics/utils/repeated_attribute_discount.rb +4 -7
- data/lib/rubocop/cop/migration/department_name.rb +3 -7
- data/lib/rubocop/cop/mixin/alignment.rb +12 -7
- data/lib/rubocop/cop/mixin/check_line_breakable.rb +1 -1
- data/lib/rubocop/cop/mixin/code_length.rb +1 -3
- data/lib/rubocop/cop/mixin/comments_help.rb +5 -1
- data/lib/rubocop/cop/mixin/configurable_enforced_style.rb +2 -2
- data/lib/rubocop/cop/mixin/configurable_formatting.rb +3 -8
- data/lib/rubocop/cop/mixin/def_node.rb +3 -5
- data/lib/rubocop/cop/mixin/documentation_comment.rb +3 -6
- data/lib/rubocop/cop/mixin/empty_lines_around_body.rb +6 -7
- data/lib/rubocop/cop/mixin/empty_parameter.rb +2 -3
- data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +1 -3
- data/lib/rubocop/cop/mixin/enforce_superclass.rb +4 -6
- data/lib/rubocop/cop/mixin/first_element_line_break.rb +1 -3
- data/lib/rubocop/cop/mixin/frozen_string_literal.rb +3 -9
- data/lib/rubocop/cop/mixin/gem_declaration.rb +13 -0
- data/lib/rubocop/cop/mixin/hash_alignment_styles.rb +3 -6
- data/lib/rubocop/cop/mixin/hash_transform_method.rb +8 -22
- data/lib/rubocop/cop/mixin/interpolation.rb +1 -3
- data/lib/rubocop/cop/mixin/line_length_help.rb +13 -10
- data/lib/rubocop/cop/mixin/match_range.rb +2 -5
- data/lib/rubocop/cop/mixin/method_complexity.rb +2 -3
- data/lib/rubocop/cop/mixin/method_preference.rb +1 -2
- data/lib/rubocop/cop/mixin/multiline_element_indentation.rb +4 -3
- data/lib/rubocop/cop/mixin/multiline_element_line_breaks.rb +1 -3
- data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +11 -40
- data/lib/rubocop/cop/mixin/multiline_literal_brace_layout.rb +1 -2
- data/lib/rubocop/cop/mixin/negative_conditional.rb +4 -2
- data/lib/rubocop/cop/mixin/ordered_gem_node.rb +1 -4
- data/lib/rubocop/cop/mixin/percent_array.rb +1 -3
- data/lib/rubocop/cop/mixin/percent_literal.rb +0 -6
- data/lib/rubocop/cop/mixin/preceding_following_alignment.rb +5 -11
- data/lib/rubocop/cop/mixin/preferred_delimiters.rb +4 -7
- data/lib/rubocop/cop/mixin/range_help.rb +10 -13
- data/lib/rubocop/cop/mixin/rational_literal.rb +1 -0
- data/lib/rubocop/cop/mixin/rescue_node.rb +2 -6
- data/lib/rubocop/cop/mixin/safe_assignment.rb +6 -2
- data/lib/rubocop/cop/mixin/space_after_punctuation.rb +2 -4
- data/lib/rubocop/cop/mixin/space_before_punctuation.rb +1 -2
- data/lib/rubocop/cop/mixin/statement_modifier.rb +1 -3
- data/lib/rubocop/cop/mixin/string_literals_help.rb +1 -1
- data/lib/rubocop/cop/mixin/trailing_body.rb +1 -2
- data/lib/rubocop/cop/mixin/trailing_comma.rb +1 -2
- data/lib/rubocop/cop/mixin/uncommunicative_name.rb +7 -13
- data/lib/rubocop/cop/mixin/unused_argument.rb +1 -3
- data/lib/rubocop/cop/mixin/visibility_help.rb +1 -0
- data/lib/rubocop/cop/naming/ascii_identifiers.rb +2 -4
- data/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +2 -2
- data/lib/rubocop/cop/naming/constant_name.rb +2 -0
- data/lib/rubocop/cop/naming/file_name.rb +7 -16
- data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +8 -3
- data/lib/rubocop/cop/naming/method_name.rb +4 -2
- data/lib/rubocop/cop/naming/predicate_name.rb +2 -2
- data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +10 -0
- data/lib/rubocop/cop/offense.rb +3 -8
- data/lib/rubocop/cop/registry.rb +12 -11
- data/lib/rubocop/cop/security/eval.rb +1 -0
- data/lib/rubocop/cop/security/json_load.rb +1 -0
- data/lib/rubocop/cop/security/marshal_load.rb +1 -0
- data/lib/rubocop/cop/security/open.rb +1 -0
- data/lib/rubocop/cop/security/yaml_load.rb +1 -0
- data/lib/rubocop/cop/style/access_modifier_declarations.rb +4 -5
- data/lib/rubocop/cop/style/accessor_grouping.rb +1 -3
- data/lib/rubocop/cop/style/alias.rb +6 -12
- data/lib/rubocop/cop/style/and_or.rb +3 -1
- data/lib/rubocop/cop/style/arguments_forwarding.rb +4 -3
- data/lib/rubocop/cop/style/array_coercion.rb +2 -0
- data/lib/rubocop/cop/style/array_join.rb +1 -0
- data/lib/rubocop/cop/style/ascii_comments.rb +1 -2
- data/lib/rubocop/cop/style/attr.rb +2 -3
- data/lib/rubocop/cop/style/auto_resource_cleanup.rb +2 -5
- data/lib/rubocop/cop/style/bisected_attr_accessor.rb +59 -71
- data/lib/rubocop/cop/style/bisected_attr_accessor/macro.rb +60 -0
- data/lib/rubocop/cop/style/case_equality.rb +2 -1
- data/lib/rubocop/cop/style/case_like_if.rb +16 -6
- data/lib/rubocop/cop/style/character_literal.rb +2 -4
- data/lib/rubocop/cop/style/class_and_module_children.rb +6 -9
- data/lib/rubocop/cop/style/class_equality_comparison.rb +3 -0
- data/lib/rubocop/cop/style/class_methods.rb +1 -3
- data/lib/rubocop/cop/style/collection_compact.rb +3 -3
- data/lib/rubocop/cop/style/colon_method_call.rb +2 -3
- data/lib/rubocop/cop/style/combinable_loops.rb +3 -2
- data/lib/rubocop/cop/style/command_literal.rb +4 -9
- data/lib/rubocop/cop/style/comment_annotation.rb +3 -6
- data/lib/rubocop/cop/style/commented_keyword.rb +7 -13
- data/lib/rubocop/cop/style/conditional_assignment.rb +12 -24
- data/lib/rubocop/cop/style/constant_visibility.rb +1 -0
- data/lib/rubocop/cop/style/copyright.rb +3 -6
- data/lib/rubocop/cop/style/date_time.rb +5 -5
- data/lib/rubocop/cop/style/def_with_parentheses.rb +1 -2
- data/lib/rubocop/cop/style/dir.rb +1 -0
- data/lib/rubocop/cop/style/disable_cops_within_source_code_directive.rb +2 -2
- data/lib/rubocop/cop/style/documentation.rb +30 -3
- data/lib/rubocop/cop/style/documentation_method.rb +1 -0
- data/lib/rubocop/cop/style/double_negation.rb +1 -0
- data/lib/rubocop/cop/style/each_for_simple_loop.rb +2 -2
- data/lib/rubocop/cop/style/each_with_object.rb +1 -0
- data/lib/rubocop/cop/style/empty_case_condition.rb +2 -7
- data/lib/rubocop/cop/style/empty_else.rb +3 -9
- data/lib/rubocop/cop/style/empty_literal.rb +13 -8
- data/lib/rubocop/cop/style/empty_method.rb +3 -7
- data/lib/rubocop/cop/style/end_block.rb +1 -2
- data/lib/rubocop/cop/style/endless_method.rb +2 -3
- data/lib/rubocop/cop/style/eval_with_location.rb +5 -5
- data/lib/rubocop/cop/style/even_odd.rb +1 -0
- data/lib/rubocop/cop/style/expand_path_arguments.rb +4 -3
- data/lib/rubocop/cop/style/explicit_block_argument.rb +2 -4
- data/lib/rubocop/cop/style/float_division.rb +4 -0
- data/lib/rubocop/cop/style/format_string.rb +2 -0
- data/lib/rubocop/cop/style/format_string_token.rb +2 -4
- data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +3 -11
- data/lib/rubocop/cop/style/global_std_stream.rb +1 -0
- data/lib/rubocop/cop/style/guard_clause.rb +3 -7
- data/lib/rubocop/cop/style/hash_conversion.rb +57 -5
- data/lib/rubocop/cop/style/hash_each_methods.rb +2 -2
- data/lib/rubocop/cop/style/hash_except.rb +1 -0
- data/lib/rubocop/cop/style/hash_like_case.rb +2 -2
- data/lib/rubocop/cop/style/hash_syntax.rb +20 -24
- data/lib/rubocop/cop/style/hash_transform_keys.rb +4 -0
- data/lib/rubocop/cop/style/hash_transform_values.rb +4 -0
- data/lib/rubocop/cop/style/identical_conditional_branches.rb +1 -3
- data/lib/rubocop/cop/style/if_unless_modifier.rb +40 -13
- data/lib/rubocop/cop/style/if_with_boolean_literal_branches.rb +2 -0
- data/lib/rubocop/cop/style/implicit_runtime_error.rb +1 -0
- data/lib/rubocop/cop/style/infinite_loop.rb +2 -5
- data/lib/rubocop/cop/style/inverse_methods.rb +5 -7
- data/lib/rubocop/cop/style/ip_addresses.rb +1 -2
- data/lib/rubocop/cop/style/lambda.rb +2 -4
- data/lib/rubocop/cop/style/lambda_call.rb +1 -2
- data/lib/rubocop/cop/style/line_end_concatenation.rb +5 -12
- data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +47 -3
- data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +26 -16
- data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +1 -2
- data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +2 -4
- data/lib/rubocop/cop/style/method_def_parentheses.rb +4 -8
- data/lib/rubocop/cop/style/min_max.rb +2 -2
- data/lib/rubocop/cop/style/missing_else.rb +2 -4
- data/lib/rubocop/cop/style/missing_respond_to_missing.rb +1 -2
- data/lib/rubocop/cop/style/mixin_grouping.rb +4 -10
- data/lib/rubocop/cop/style/mixin_usage.rb +3 -2
- data/lib/rubocop/cop/style/module_function.rb +8 -6
- data/lib/rubocop/cop/style/multiline_block_chain.rb +1 -2
- data/lib/rubocop/cop/style/multiline_method_signature.rb +11 -6
- data/lib/rubocop/cop/style/multiline_ternary_operator.rb +1 -2
- data/lib/rubocop/cop/style/multiple_comparison.rb +22 -5
- data/lib/rubocop/cop/style/mutable_constant.rb +7 -10
- data/lib/rubocop/cop/style/negated_if.rb +1 -2
- data/lib/rubocop/cop/style/negated_if_else_condition.rb +24 -2
- data/lib/rubocop/cop/style/negated_unless.rb +1 -2
- data/lib/rubocop/cop/style/nested_modifier.rb +3 -7
- data/lib/rubocop/cop/style/nested_ternary_operator.rb +2 -3
- data/lib/rubocop/cop/style/next.rb +4 -9
- data/lib/rubocop/cop/style/nil_comparison.rb +3 -0
- data/lib/rubocop/cop/style/nil_lambda.rb +1 -0
- data/lib/rubocop/cop/style/non_nil_check.rb +9 -5
- data/lib/rubocop/cop/style/numeric_literals.rb +3 -11
- data/lib/rubocop/cop/style/numeric_predicate.rb +5 -7
- data/lib/rubocop/cop/style/one_line_conditional.rb +1 -2
- data/lib/rubocop/cop/style/option_hash.rb +2 -3
- data/lib/rubocop/cop/style/optional_arguments.rb +2 -5
- data/lib/rubocop/cop/style/or_assignment.rb +4 -6
- data/lib/rubocop/cop/style/parallel_assignment.rb +12 -9
- data/lib/rubocop/cop/style/parentheses_around_condition.rb +1 -0
- data/lib/rubocop/cop/style/percent_literal_delimiters.rb +1 -3
- data/lib/rubocop/cop/style/percent_q_literals.rb +1 -2
- data/lib/rubocop/cop/style/perl_backrefs.rb +2 -9
- data/lib/rubocop/cop/style/preferred_hash_methods.rb +1 -4
- data/lib/rubocop/cop/style/proc.rb +2 -2
- data/lib/rubocop/cop/style/raise_args.rb +4 -8
- data/lib/rubocop/cop/style/random_with_offset.rb +8 -8
- data/lib/rubocop/cop/style/redundant_argument.rb +2 -11
- data/lib/rubocop/cop/style/redundant_assignment.rb +2 -3
- data/lib/rubocop/cop/style/redundant_begin.rb +47 -7
- data/lib/rubocop/cop/style/redundant_capital_w.rb +1 -2
- data/lib/rubocop/cop/style/redundant_condition.rb +2 -5
- data/lib/rubocop/cop/style/redundant_conditional.rb +5 -6
- data/lib/rubocop/cop/style/redundant_exception.rb +5 -6
- data/lib/rubocop/cop/style/redundant_fetch_block.rb +2 -0
- data/lib/rubocop/cop/style/redundant_file_extension_in_require.rb +2 -1
- data/lib/rubocop/cop/style/redundant_freeze.rb +2 -2
- data/lib/rubocop/cop/style/redundant_interpolation.rb +1 -2
- data/lib/rubocop/cop/style/redundant_parentheses.rb +21 -20
- data/lib/rubocop/cop/style/redundant_percent_q.rb +1 -2
- data/lib/rubocop/cop/style/redundant_regexp_escape.rb +1 -4
- data/lib/rubocop/cop/style/redundant_return.rb +6 -4
- data/lib/rubocop/cop/style/redundant_self.rb +9 -9
- data/lib/rubocop/cop/style/redundant_self_assignment.rb +4 -2
- data/lib/rubocop/cop/style/redundant_sort.rb +3 -5
- data/lib/rubocop/cop/style/redundant_sort_by.rb +1 -0
- data/lib/rubocop/cop/style/regexp_literal.rb +4 -8
- data/lib/rubocop/cop/style/rescue_modifier.rb +21 -14
- data/lib/rubocop/cop/style/rescue_standard_error.rb +5 -7
- data/lib/rubocop/cop/style/return_nil.rb +7 -2
- data/lib/rubocop/cop/style/safe_navigation.rb +12 -21
- data/lib/rubocop/cop/style/sample.rb +1 -0
- data/lib/rubocop/cop/style/send.rb +1 -2
- data/lib/rubocop/cop/style/signal_exception.rb +6 -7
- data/lib/rubocop/cop/style/single_argument_dig.rb +2 -2
- data/lib/rubocop/cop/style/single_line_block_params.rb +2 -5
- data/lib/rubocop/cop/style/single_line_methods.rb +21 -4
- data/lib/rubocop/cop/style/slicing_with_range.rb +1 -0
- data/lib/rubocop/cop/style/sole_nested_conditional.rb +31 -7
- data/lib/rubocop/cop/style/special_global_vars.rb +6 -18
- data/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +1 -2
- data/lib/rubocop/cop/style/stderr_puts.rb +3 -6
- data/lib/rubocop/cop/style/string_chars.rb +39 -0
- data/lib/rubocop/cop/style/string_concatenation.rb +9 -10
- data/lib/rubocop/cop/style/string_hash_keys.rb +2 -0
- data/lib/rubocop/cop/style/string_literals.rb +2 -5
- data/lib/rubocop/cop/style/strip.rb +1 -0
- data/lib/rubocop/cop/style/struct_inheritance.rb +11 -0
- data/lib/rubocop/cop/style/symbol_literal.rb +1 -3
- data/lib/rubocop/cop/style/symbol_proc.rb +29 -10
- data/lib/rubocop/cop/style/ternary_parentheses.rb +4 -6
- data/lib/rubocop/cop/style/trailing_body_on_method_definition.rb +6 -2
- data/lib/rubocop/cop/style/trailing_comma_in_block_args.rb +2 -6
- data/lib/rubocop/cop/style/trailing_method_end_statement.rb +3 -6
- data/lib/rubocop/cop/style/trailing_underscore_variable.rb +4 -10
- data/lib/rubocop/cop/style/trivial_accessors.rb +3 -4
- data/lib/rubocop/cop/style/unless_else.rb +1 -2
- data/lib/rubocop/cop/style/unless_logical_operators.rb +105 -0
- data/lib/rubocop/cop/style/unpack_first.rb +1 -0
- data/lib/rubocop/cop/style/variable_interpolation.rb +1 -1
- data/lib/rubocop/cop/style/when_then.rb +1 -3
- data/lib/rubocop/cop/style/while_until_modifier.rb +1 -2
- data/lib/rubocop/cop/style/word_array.rb +1 -2
- data/lib/rubocop/cop/style/yoda_condition.rb +4 -11
- data/lib/rubocop/cop/style/zero_length_predicate.rb +6 -2
- data/lib/rubocop/cop/team.rb +2 -5
- data/lib/rubocop/cop/util.rb +8 -11
- data/lib/rubocop/cop/utils/format_string.rb +1 -3
- data/lib/rubocop/cop/variable_force.rb +6 -15
- data/lib/rubocop/cop/variable_force/assignment.rb +1 -2
- data/lib/rubocop/cop/variable_force/branch.rb +16 -2
- data/lib/rubocop/cop/variable_force/reference.rb +1 -3
- data/lib/rubocop/cop/variable_force/scope.rb +4 -8
- data/lib/rubocop/cop/variable_force/variable.rb +2 -4
- data/lib/rubocop/cops_documentation_generator.rb +7 -21
- data/lib/rubocop/directive_comment.rb +69 -9
- data/lib/rubocop/ext/regexp_parser.rb +3 -6
- data/lib/rubocop/file_finder.rb +1 -3
- data/lib/rubocop/formatter/clang_style_formatter.rb +4 -2
- data/lib/rubocop/formatter/disabled_config_formatter.rb +3 -8
- data/lib/rubocop/formatter/git_hub_actions_formatter.rb +1 -5
- data/lib/rubocop/formatter/html_formatter.rb +4 -10
- data/lib/rubocop/formatter/json_formatter.rb +1 -5
- data/lib/rubocop/formatter/junit_formatter.rb +3 -9
- data/lib/rubocop/formatter/progress_formatter.rb +1 -3
- data/lib/rubocop/formatter/tap_formatter.rb +4 -2
- data/lib/rubocop/magic_comment.rb +1 -1
- data/lib/rubocop/name_similarity.rb +1 -1
- data/lib/rubocop/options.rb +27 -41
- data/lib/rubocop/path_util.rb +1 -3
- data/lib/rubocop/rake_task.rb +3 -0
- data/lib/rubocop/remote_config.rb +4 -7
- data/lib/rubocop/result_cache.rb +5 -12
- data/lib/rubocop/rspec/cop_helper.rb +1 -1
- data/lib/rubocop/rspec/expect_offense.rb +4 -9
- data/lib/rubocop/rspec/shared_contexts.rb +8 -15
- data/lib/rubocop/runner.rb +7 -14
- data/lib/rubocop/target_finder.rb +19 -16
- data/lib/rubocop/target_ruby.rb +25 -21
- data/lib/rubocop/version.rb +1 -1
- metadata +18 -11
- data/lib/rubocop/core_ext/hash.rb +0 -20
@@ -0,0 +1,137 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RuboCop
|
4
|
+
module Cop
|
5
|
+
module Layout
|
6
|
+
# This cop checks whether certain expressions, e.g. method calls, that could fit
|
7
|
+
# completely on a single line, are broken up into multiple lines unnecessarily.
|
8
|
+
#
|
9
|
+
# @example any configuration
|
10
|
+
# # bad
|
11
|
+
# foo(
|
12
|
+
# a,
|
13
|
+
# b
|
14
|
+
# )
|
15
|
+
#
|
16
|
+
# puts 'string that fits on ' \
|
17
|
+
# 'a single line'
|
18
|
+
#
|
19
|
+
# things
|
20
|
+
# .select { |thing| thing.cond? }
|
21
|
+
# .join('-')
|
22
|
+
#
|
23
|
+
# # good
|
24
|
+
# foo(a, b)
|
25
|
+
#
|
26
|
+
# puts 'string that fits on a single line'
|
27
|
+
#
|
28
|
+
# things.select { |thing| thing.cond? }.join('-')
|
29
|
+
#
|
30
|
+
# @example InspectBlocks: false (default)
|
31
|
+
# # good
|
32
|
+
# foo(a) do |x|
|
33
|
+
# puts x
|
34
|
+
# end
|
35
|
+
#
|
36
|
+
# @example InspectBlocks: true
|
37
|
+
# # bad
|
38
|
+
# foo(a) do |x|
|
39
|
+
# puts x
|
40
|
+
# end
|
41
|
+
#
|
42
|
+
# # good
|
43
|
+
# foo(a) { |x| puts x }
|
44
|
+
#
|
45
|
+
class RedundantLineBreak < Cop
|
46
|
+
include CheckAssignment
|
47
|
+
|
48
|
+
MSG = 'Redundant line break detected.'
|
49
|
+
|
50
|
+
def on_send(node)
|
51
|
+
# Include "the whole expression".
|
52
|
+
node = node.parent while convertible_block?(node) ||
|
53
|
+
node.parent.is_a?(RuboCop::AST::BinaryOperatorNode) ||
|
54
|
+
node.parent&.send_type?
|
55
|
+
|
56
|
+
return unless offense?(node) && !part_of_ignored_node?(node)
|
57
|
+
|
58
|
+
add_offense(node)
|
59
|
+
ignore_node(node)
|
60
|
+
end
|
61
|
+
|
62
|
+
def check_assignment(node, _rhs)
|
63
|
+
return unless offense?(node)
|
64
|
+
|
65
|
+
add_offense(node)
|
66
|
+
ignore_node(node)
|
67
|
+
end
|
68
|
+
|
69
|
+
def autocorrect(node)
|
70
|
+
->(corrector) { corrector.replace(node.source_range, to_single_line(node.source).strip) }
|
71
|
+
end
|
72
|
+
|
73
|
+
private
|
74
|
+
|
75
|
+
def offense?(node)
|
76
|
+
return false if configured_to_not_be_inspected?(node)
|
77
|
+
|
78
|
+
node.multiline? && !too_long?(node) && suitable_as_single_line?(node)
|
79
|
+
end
|
80
|
+
|
81
|
+
def configured_to_not_be_inspected?(node)
|
82
|
+
return true if other_cop_takes_precedence?(node)
|
83
|
+
|
84
|
+
!cop_config['InspectBlocks'] && (node.block_type? ||
|
85
|
+
node.each_descendant(:block).any?(&:multiline?))
|
86
|
+
end
|
87
|
+
|
88
|
+
def other_cop_takes_precedence?(node)
|
89
|
+
single_line_block_chain_enabled? && node.each_descendant(:block).any? do |block_node|
|
90
|
+
block_node.parent.send_type? && block_node.parent.loc.dot && !block_node.multiline?
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
def single_line_block_chain_enabled?
|
95
|
+
@config.for_cop('Layout/SingleLineBlockChain')['Enabled']
|
96
|
+
end
|
97
|
+
|
98
|
+
def suitable_as_single_line?(node)
|
99
|
+
!comment_within?(node) &&
|
100
|
+
node.each_descendant(:if, :case, :kwbegin, :def).none? &&
|
101
|
+
node.each_descendant(:dstr, :str).none?(&:heredoc?) &&
|
102
|
+
node.each_descendant(:begin).none? { |b| b.first_line != b.last_line }
|
103
|
+
end
|
104
|
+
|
105
|
+
def convertible_block?(node)
|
106
|
+
return false unless node.parent&.block_type?
|
107
|
+
|
108
|
+
send_node = node.parent&.send_node
|
109
|
+
send_node.parenthesized? || !send_node.arguments?
|
110
|
+
end
|
111
|
+
|
112
|
+
def comment_within?(node)
|
113
|
+
processed_source.comments.map(&:loc).map(&:line).any? do |comment_line_number|
|
114
|
+
comment_line_number >= node.first_line && comment_line_number <= node.last_line
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
def too_long?(node)
|
119
|
+
lines = processed_source.lines[(node.first_line - 1)...node.last_line]
|
120
|
+
to_single_line(lines.join("\n")).length > max_line_length
|
121
|
+
end
|
122
|
+
|
123
|
+
def to_single_line(source)
|
124
|
+
source
|
125
|
+
.gsub(/" *\\\n\s*'/, %q(" + ')) # Double quote, backslash, and then single quote
|
126
|
+
.gsub(/' *\\\n\s*"/, %q(' + ")) # Single quote, backslash, and then double quote
|
127
|
+
.gsub(/(["']) *\\\n\s*\1/, '') # Double or single quote, backslash, then same quote
|
128
|
+
.gsub(/\s*\\?\n\s*/, ' ') # Any other line break, with or without backslash
|
129
|
+
end
|
130
|
+
|
131
|
+
def max_line_length
|
132
|
+
config.for_cop('Layout/LineLength')['Max']
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
136
|
+
end
|
137
|
+
end
|
@@ -32,8 +32,7 @@ module RuboCop
|
|
32
32
|
ANCESTOR_TYPES = %i[kwbegin def defs class module].freeze
|
33
33
|
RUBY_2_5_ANCESTOR_TYPES = (ANCESTOR_TYPES + %i[block]).freeze
|
34
34
|
ANCESTOR_TYPES_WITH_ACCESS_MODIFIERS = %i[def defs].freeze
|
35
|
-
ALTERNATIVE_ACCESS_MODIFIERS = %i[public_class_method
|
36
|
-
private_class_method].freeze
|
35
|
+
ALTERNATIVE_ACCESS_MODIFIERS = %i[public_class_method private_class_method].freeze
|
37
36
|
|
38
37
|
def on_resbody(node)
|
39
38
|
check(node) unless modifier?(node)
|
@@ -118,8 +117,7 @@ module RuboCop
|
|
118
117
|
def alignment_node(node)
|
119
118
|
ancestor_node = ancestor_node(node)
|
120
119
|
|
121
|
-
return ancestor_node if ancestor_node.nil? ||
|
122
|
-
ancestor_node.kwbegin_type?
|
120
|
+
return ancestor_node if ancestor_node.nil? || ancestor_node.kwbegin_type?
|
123
121
|
|
124
122
|
assignment_node = assignment_node(ancestor_node)
|
125
123
|
return assignment_node if same_line?(ancestor_node, assignment_node)
|
@@ -173,8 +171,7 @@ module RuboCop
|
|
173
171
|
end
|
174
172
|
|
175
173
|
def access_modifier?(node)
|
176
|
-
return true if node.respond_to?(:access_modifier?) &&
|
177
|
-
node.access_modifier?
|
174
|
+
return true if node.respond_to?(:access_modifier?) && node.access_modifier?
|
178
175
|
|
179
176
|
return true if node.respond_to?(:method_name) &&
|
180
177
|
ALTERNATIVE_ACCESS_MODIFIERS.include?(node.method_name)
|
@@ -0,0 +1,53 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RuboCop
|
4
|
+
module Cop
|
5
|
+
module Layout
|
6
|
+
# This cop checks if method calls are chained onto single line blocks. It considers that a
|
7
|
+
# line break before the dot improves the readability of the code.
|
8
|
+
#
|
9
|
+
# @example
|
10
|
+
# # bad
|
11
|
+
# example.select { |item| item.cond? }.join('-')
|
12
|
+
#
|
13
|
+
# # good
|
14
|
+
# example.select { |item| item.cond? }
|
15
|
+
# .join('-')
|
16
|
+
#
|
17
|
+
# # good (not a concern for this cop)
|
18
|
+
# example.select do |item|
|
19
|
+
# item.cond?
|
20
|
+
# end.join('-')
|
21
|
+
#
|
22
|
+
class SingleLineBlockChain < Base
|
23
|
+
include RangeHelp
|
24
|
+
extend AutoCorrector
|
25
|
+
|
26
|
+
MSG = 'Put method call on a separate line if chained to a single line block.'
|
27
|
+
|
28
|
+
def on_send(node)
|
29
|
+
range = offending_range(node)
|
30
|
+
add_offense(range) { |corrector| corrector.insert_before(range, "\n") } if range
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
def offending_range(node)
|
36
|
+
receiver = node.receiver
|
37
|
+
return unless receiver&.block_type?
|
38
|
+
|
39
|
+
receiver_location = receiver.loc
|
40
|
+
closing_block_delimiter_line_number = receiver_location.end.line
|
41
|
+
return if receiver_location.begin.line < closing_block_delimiter_line_number
|
42
|
+
|
43
|
+
node_location = node.loc
|
44
|
+
dot_range = node_location.dot
|
45
|
+
return unless dot_range
|
46
|
+
return if dot_range.line > closing_block_delimiter_line_number
|
47
|
+
|
48
|
+
range_between(dot_range.begin_pos, node_location.selector.end_pos)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -37,9 +37,7 @@ module RuboCop
|
|
37
37
|
private
|
38
38
|
|
39
39
|
def register_offense(colon)
|
40
|
-
add_offense(colon)
|
41
|
-
corrector.insert_after(colon, ' ')
|
42
|
-
end
|
40
|
+
add_offense(colon) { |corrector| corrector.insert_after(colon, ' ') }
|
43
41
|
end
|
44
42
|
|
45
43
|
def followed_by_space?(colon)
|
@@ -18,16 +18,14 @@ module RuboCop
|
|
18
18
|
include RangeHelp
|
19
19
|
extend AutoCorrector
|
20
20
|
|
21
|
-
MSG = 'Do not put a space between a method name and the opening '
|
22
|
-
'parenthesis.'
|
21
|
+
MSG = 'Do not put a space between a method name and the opening parenthesis.'
|
23
22
|
|
24
23
|
def on_def(node)
|
25
24
|
args = node.arguments
|
26
25
|
return unless args.loc.begin&.is?('(')
|
27
26
|
|
28
27
|
expr = args.source_range
|
29
|
-
pos_before_left_paren = range_between(expr.begin_pos - 1,
|
30
|
-
expr.begin_pos)
|
28
|
+
pos_before_left_paren = range_between(expr.begin_pos - 1, expr.begin_pos)
|
31
29
|
return unless pos_before_left_paren.source.start_with?(' ')
|
32
30
|
|
33
31
|
add_offense(pos_before_left_paren) do |corrector|
|
@@ -77,8 +77,7 @@ module RuboCop
|
|
77
77
|
first = args.first.source_range
|
78
78
|
last = args.last.source_range
|
79
79
|
|
80
|
-
check_no_space(opening_pipe.end_pos, first.begin_pos,
|
81
|
-
'Space before first')
|
80
|
+
check_no_space(opening_pipe.end_pos, first.begin_pos, 'Space before first')
|
82
81
|
check_no_space(last_end_pos_inside_pipes(arguments, last),
|
83
82
|
closing_pipe.begin_pos, 'Space after last')
|
84
83
|
end
|
@@ -98,8 +97,7 @@ module RuboCop
|
|
98
97
|
|
99
98
|
check_space(opening_pipe.end_pos, range.begin_pos, range,
|
100
99
|
'before first block parameter', first_arg)
|
101
|
-
check_no_space(opening_pipe.end_pos, range.begin_pos - 1,
|
102
|
-
'Extra space before first')
|
100
|
+
check_no_space(opening_pipe.end_pos, range.begin_pos - 1, 'Extra space before first')
|
103
101
|
end
|
104
102
|
|
105
103
|
def check_closing_pipe_space(arguments, closing_pipe)
|
@@ -108,10 +106,8 @@ module RuboCop
|
|
108
106
|
last = args.last.source_range
|
109
107
|
last_end_pos = last_end_pos_inside_pipes(arguments, last)
|
110
108
|
|
111
|
-
check_space(last_end_pos, closing_pipe.begin_pos, last,
|
112
|
-
|
113
|
-
check_no_space(last_end_pos + 1, closing_pipe.begin_pos,
|
114
|
-
'Extra space after last')
|
109
|
+
check_space(last_end_pos, closing_pipe.begin_pos, last, 'after last block parameter')
|
110
|
+
check_no_space(last_end_pos + 1, closing_pipe.begin_pos, 'Extra space after last')
|
115
111
|
end
|
116
112
|
|
117
113
|
def last_end_pos_inside_pipes(arguments, range)
|
@@ -123,9 +119,7 @@ module RuboCop
|
|
123
119
|
end
|
124
120
|
|
125
121
|
def check_each_arg(args)
|
126
|
-
args.children.each
|
127
|
-
check_arg(arg)
|
128
|
-
end
|
122
|
+
args.children.each { |arg| check_arg(arg) }
|
129
123
|
end
|
130
124
|
|
131
125
|
def check_arg(arg)
|
@@ -160,9 +154,7 @@ module RuboCop
|
|
160
154
|
return if range.source.include?("\n")
|
161
155
|
|
162
156
|
message = "#{msg} block parameter detected."
|
163
|
-
add_offense(range, message: message)
|
164
|
-
corrector.remove(range)
|
165
|
-
end
|
157
|
+
add_offense(range, message: message) { |corrector| corrector.remove(range) }
|
166
158
|
end
|
167
159
|
end
|
168
160
|
end
|
@@ -47,8 +47,7 @@ module RuboCop
|
|
47
47
|
space_on_both_sides = space_on_both_sides?(arg, equals)
|
48
48
|
no_surrounding_space = no_surrounding_space?(arg, equals)
|
49
49
|
|
50
|
-
if style == :space && space_on_both_sides ||
|
51
|
-
style == :no_space && no_surrounding_space
|
50
|
+
if style == :space && space_on_both_sides || style == :no_space && no_surrounding_space
|
52
51
|
correct_style_detected
|
53
52
|
else
|
54
53
|
incorrect_style_detected(arg, value)
|
@@ -33,10 +33,8 @@ module RuboCop
|
|
33
33
|
DO = 'do'
|
34
34
|
SAFE_NAVIGATION = '&.'
|
35
35
|
NAMESPACE_OPERATOR = '::'
|
36
|
-
ACCEPT_LEFT_PAREN =
|
37
|
-
|
38
|
-
ACCEPT_LEFT_SQUARE_BRACKET =
|
39
|
-
%w[super yield].freeze
|
36
|
+
ACCEPT_LEFT_PAREN = %w[break defined? next not rescue return super yield].freeze
|
37
|
+
ACCEPT_LEFT_SQUARE_BRACKET = %w[super yield].freeze
|
40
38
|
ACCEPT_NAMESPACE_OPERATOR = 'super'
|
41
39
|
|
42
40
|
def on_and(node)
|
@@ -194,8 +192,7 @@ module RuboCop
|
|
194
192
|
|
195
193
|
return false if accepted_opening_delimiter?(range, char)
|
196
194
|
return false if safe_navigation_call?(range, pos)
|
197
|
-
return false if accept_namespace_operator?(range) &&
|
198
|
-
namespace_operator?(range, pos)
|
195
|
+
return false if accept_namespace_operator?(range) && namespace_operator?(range, pos)
|
199
196
|
|
200
197
|
!/[\s;,#\\)}\].]/.match?(char)
|
201
198
|
end
|
@@ -92,9 +92,7 @@ module RuboCop
|
|
92
92
|
if node.setter_method?
|
93
93
|
on_special_asgn(node)
|
94
94
|
elsif regular_operator?(node)
|
95
|
-
check_operator(:send,
|
96
|
-
node.loc.selector,
|
97
|
-
node.first_argument.source_range)
|
95
|
+
check_operator(:send, node.loc.selector, node.first_argument.source_range)
|
98
96
|
end
|
99
97
|
end
|
100
98
|
|
@@ -138,13 +136,11 @@ module RuboCop
|
|
138
136
|
private
|
139
137
|
|
140
138
|
def regular_operator?(send_node)
|
141
|
-
!send_node.unary_operation? && !send_node.dot? &&
|
142
|
-
operator_with_regular_syntax?(send_node)
|
139
|
+
!send_node.unary_operation? && !send_node.dot? && operator_with_regular_syntax?(send_node)
|
143
140
|
end
|
144
141
|
|
145
142
|
def operator_with_regular_syntax?(send_node)
|
146
|
-
send_node.operator_method? &&
|
147
|
-
!IRREGULAR_METHODS.include?(send_node.method_name)
|
143
|
+
send_node.operator_method? && !IRREGULAR_METHODS.include?(send_node.method_name)
|
148
144
|
end
|
149
145
|
|
150
146
|
def check_operator(type, operator, right_operand)
|
@@ -225,8 +221,7 @@ module RuboCop
|
|
225
221
|
end
|
226
222
|
|
227
223
|
def hash_table_style?
|
228
|
-
align_hash_cop_config &&
|
229
|
-
align_hash_cop_config['EnforcedHashRocketStyle'] == 'table'
|
224
|
+
align_hash_cop_config && align_hash_cop_config['EnforcedHashRocketStyle'] == 'table'
|
230
225
|
end
|
231
226
|
|
232
227
|
def space_around_exponent_operator?
|
@@ -61,7 +61,7 @@ module RuboCop
|
|
61
61
|
# by `EnforcedStyle: line_count_based` of `Style/BlockDelimiters` cop.
|
62
62
|
# That means preventing auto-correction to incorrect auto-corrected
|
63
63
|
# code.
|
64
|
-
# See: https://github.com/rubocop
|
64
|
+
# See: https://github.com/rubocop/rubocop/issues/7534
|
65
65
|
return if conflict_with_block_delimiters?(node)
|
66
66
|
|
67
67
|
left_brace = node.loc.begin
|
@@ -136,8 +136,7 @@ module RuboCop
|
|
136
136
|
end
|
137
137
|
|
138
138
|
def conflict_with_block_delimiters?(node)
|
139
|
-
block_delimiters_style == 'line_count_based' &&
|
140
|
-
style == :no_space && node.multiline?
|
139
|
+
block_delimiters_style == 'line_count_based' && style == :no_space && node.multiline?
|
141
140
|
end
|
142
141
|
|
143
142
|
def block_delimiters_style
|
@@ -26,23 +26,18 @@ module RuboCop
|
|
26
26
|
include RangeHelp
|
27
27
|
extend AutoCorrector
|
28
28
|
|
29
|
-
MSG = 'Put one space between the method name and '
|
30
|
-
'the first argument.'
|
29
|
+
MSG = 'Put one space between the method name and the first argument.'
|
31
30
|
|
32
31
|
def on_send(node)
|
33
32
|
return unless regular_method_call_with_arguments?(node)
|
34
33
|
|
35
34
|
first_arg = node.first_argument.source_range
|
36
|
-
first_arg_with_space = range_with_surrounding_space(range: first_arg,
|
37
|
-
|
38
|
-
space = range_between(first_arg_with_space.begin_pos,
|
39
|
-
first_arg.begin_pos)
|
35
|
+
first_arg_with_space = range_with_surrounding_space(range: first_arg, side: :left)
|
36
|
+
space = range_between(first_arg_with_space.begin_pos, first_arg.begin_pos)
|
40
37
|
return if space.length == 1
|
41
38
|
return unless expect_params_after_method_name?(node)
|
42
39
|
|
43
|
-
add_offense(space)
|
44
|
-
corrector.replace(space, ' ')
|
45
|
-
end
|
40
|
+
add_offense(space) { |corrector| corrector.replace(space, ' ') }
|
46
41
|
end
|
47
42
|
alias on_csend on_send
|
48
43
|
|
@@ -59,8 +54,7 @@ module RuboCop
|
|
59
54
|
first_arg = node.first_argument
|
60
55
|
|
61
56
|
same_line?(first_arg, node) &&
|
62
|
-
!(allow_for_alignment? &&
|
63
|
-
aligned_with_something?(first_arg.source_range))
|
57
|
+
!(allow_for_alignment? && aligned_with_something?(first_arg.source_range))
|
64
58
|
end
|
65
59
|
|
66
60
|
def no_space_between_method_name_and_first_argument?(node)
|