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
@@ -84,10 +84,7 @@ module RuboCop
|
|
84
84
|
# below the keyword
|
85
85
|
check_line(style, line, message('after', keyword), &:empty?)
|
86
86
|
# above the keyword
|
87
|
-
check_line(style,
|
88
|
-
line - 2,
|
89
|
-
message('before', keyword),
|
90
|
-
&:empty?)
|
87
|
+
check_line(style, line - 2, message('before', keyword), &:empty?)
|
91
88
|
end
|
92
89
|
end
|
93
90
|
|
@@ -113,10 +110,7 @@ module RuboCop
|
|
113
110
|
end
|
114
111
|
|
115
112
|
def keyword_locations_in_rescue(node)
|
116
|
-
[
|
117
|
-
node.loc.else,
|
118
|
-
*node.resbody_branches.map { |body| body.loc.keyword }
|
119
|
-
].compact
|
113
|
+
[node.loc.else, *node.resbody_branches.map { |body| body.loc.keyword }].compact
|
120
114
|
end
|
121
115
|
|
122
116
|
def keyword_locations_in_ensure(node)
|
@@ -168,8 +168,7 @@ module RuboCop
|
|
168
168
|
return node.parent if node.case_type? && node.argument?
|
169
169
|
|
170
170
|
assignment = node.ancestors.find(&:assignment_or_similar?)
|
171
|
-
if assignment && !line_break_before_keyword?(assignment.source_range,
|
172
|
-
node)
|
171
|
+
if assignment && !line_break_before_keyword?(assignment.source_range, node)
|
173
172
|
assignment
|
174
173
|
else
|
175
174
|
# Fall back to 'keyword' style if this node is not on the RHS of an
|
@@ -65,7 +65,7 @@ module RuboCop
|
|
65
65
|
|
66
66
|
# If there is no LF on the last line, we don't care if there's no CR.
|
67
67
|
def unimportant_missing_cr?(index, last_line, line)
|
68
|
-
style == :crlf && index == last_line - 1 &&
|
68
|
+
style == :crlf && index == last_line - 1 && !line.end_with?("\n")
|
69
69
|
end
|
70
70
|
|
71
71
|
def offense_message(line)
|
@@ -11,12 +11,12 @@ module RuboCop
|
|
11
11
|
# name = "RuboCop"
|
12
12
|
# # Some comment and an empty line
|
13
13
|
#
|
14
|
-
# website += "/rubocop
|
14
|
+
# website += "/rubocop/rubocop" unless cond
|
15
15
|
# puts "rubocop" if debug
|
16
16
|
#
|
17
17
|
# # bad for any configuration
|
18
18
|
# set_app("RuboCop")
|
19
|
-
# website = "https://github.com/rubocop
|
19
|
+
# website = "https://github.com/rubocop/rubocop"
|
20
20
|
#
|
21
21
|
# # good only if AllowBeforeTrailingComments is true
|
22
22
|
# object.method(arg) # this is a comment
|
@@ -34,8 +34,7 @@ module RuboCop
|
|
34
34
|
include RangeHelp
|
35
35
|
|
36
36
|
MSG_UNNECESSARY = 'Unnecessary spacing detected.'
|
37
|
-
MSG_UNALIGNED_ASGN = '`=` is not aligned with the %<location>s '
|
38
|
-
'assignment.'
|
37
|
+
MSG_UNALIGNED_ASGN = '`=` is not aligned with the %<location>s assignment.'
|
39
38
|
|
40
39
|
def on_new_investigation
|
41
40
|
return if processed_source.blank?
|
@@ -81,15 +80,12 @@ module RuboCop
|
|
81
80
|
end
|
82
81
|
|
83
82
|
def check_other(token1, token2, ast)
|
84
|
-
return false if allow_for_trailing_comments? &&
|
85
|
-
token2.text.start_with?('#')
|
83
|
+
return false if allow_for_trailing_comments? && token2.text.start_with?('#')
|
86
84
|
|
87
85
|
extra_space_range(token1, token2) do |range|
|
88
86
|
next if ignored_range?(ast, range.begin_pos)
|
89
87
|
|
90
|
-
add_offense(range, message: MSG_UNNECESSARY)
|
91
|
-
corrector.remove(range)
|
92
|
-
end
|
88
|
+
add_offense(range, message: MSG_UNNECESSARY) { |corrector| corrector.remove(range) }
|
93
89
|
end
|
94
90
|
end
|
95
91
|
|
@@ -144,16 +144,17 @@ module RuboCop
|
|
144
144
|
# nested_first_param),
|
145
145
|
# second_param
|
146
146
|
#
|
147
|
-
class FirstArgumentIndentation <
|
147
|
+
class FirstArgumentIndentation < Base
|
148
148
|
include Alignment
|
149
149
|
include ConfigurableEnforcedStyle
|
150
150
|
include RangeHelp
|
151
|
+
extend AutoCorrector
|
151
152
|
|
152
153
|
MSG = 'Indent the first argument one step more than %<base>s.'
|
153
154
|
|
154
155
|
def on_send(node)
|
155
156
|
return if style != :consistent && enforce_first_argument_with_fixed_indentation?
|
156
|
-
return if !node.arguments? || node
|
157
|
+
return if !node.arguments? || bare_operator?(node)
|
157
158
|
|
158
159
|
indent = base_indentation(node) + configured_indentation_width
|
159
160
|
|
@@ -161,11 +162,15 @@ module RuboCop
|
|
161
162
|
end
|
162
163
|
alias on_csend on_send
|
163
164
|
|
164
|
-
|
165
|
-
|
165
|
+
private
|
166
|
+
|
167
|
+
def autocorrect(corrector, node)
|
168
|
+
AlignmentCorrector.correct(corrector, processed_source, node, column_delta)
|
166
169
|
end
|
167
170
|
|
168
|
-
|
171
|
+
def bare_operator?(node)
|
172
|
+
node.operator_method? && !node.dot?
|
173
|
+
end
|
169
174
|
|
170
175
|
def message(arg_node)
|
171
176
|
return 'Bad indentation of the first argument.' unless arg_node
|
@@ -206,6 +211,7 @@ module RuboCop
|
|
206
211
|
node.source_range.begin_pos > parent.source_range.begin_pos
|
207
212
|
end
|
208
213
|
|
214
|
+
# @!method eligible_method_call?(node)
|
209
215
|
def_node_matcher :eligible_method_call?, <<~PATTERN
|
210
216
|
(send _ !:[]= ...)
|
211
217
|
PATTERN
|
@@ -79,10 +79,11 @@ module RuboCop
|
|
79
79
|
# and_now_for_something = [
|
80
80
|
# :completely_different
|
81
81
|
# ]
|
82
|
-
class FirstArrayElementIndentation <
|
82
|
+
class FirstArrayElementIndentation < Base
|
83
83
|
include Alignment
|
84
84
|
include ConfigurableEnforcedStyle
|
85
85
|
include MultilineElementIndentation
|
86
|
+
extend AutoCorrector
|
86
87
|
|
87
88
|
MSG = 'Use %<configured_indentation_width>d spaces for indentation ' \
|
88
89
|
'in an array, relative to %<base_description>s.'
|
@@ -98,12 +99,12 @@ module RuboCop
|
|
98
99
|
end
|
99
100
|
alias on_csend on_send
|
100
101
|
|
101
|
-
def autocorrect(node)
|
102
|
-
AlignmentCorrector.correct(processed_source, node, @column_delta)
|
103
|
-
end
|
104
|
-
|
105
102
|
private
|
106
103
|
|
104
|
+
def autocorrect(corrector, node)
|
105
|
+
AlignmentCorrector.correct(corrector, processed_source, node, @column_delta)
|
106
|
+
end
|
107
|
+
|
107
108
|
def brace_alignment_style
|
108
109
|
:align_brackets
|
109
110
|
end
|
@@ -119,8 +120,7 @@ module RuboCop
|
|
119
120
|
check_first(first_elem, left_bracket, left_parenthesis, 0)
|
120
121
|
end
|
121
122
|
|
122
|
-
check_right_bracket(array_node.loc.end, left_bracket,
|
123
|
-
left_parenthesis)
|
123
|
+
check_right_bracket(array_node.loc.end, left_bracket, left_parenthesis)
|
124
124
|
end
|
125
125
|
|
126
126
|
def check_right_bracket(right_bracket, left_bracket, left_parenthesis)
|
@@ -132,7 +132,9 @@ module RuboCop
|
|
132
132
|
return if @column_delta.zero?
|
133
133
|
|
134
134
|
msg = msg(left_parenthesis)
|
135
|
-
add_offense(right_bracket,
|
135
|
+
add_offense(right_bracket, message: msg) do |corrector|
|
136
|
+
autocorrect(corrector, right_bracket)
|
137
|
+
end
|
136
138
|
end
|
137
139
|
|
138
140
|
# Returns the description of what the correct indentation is based on.
|
@@ -21,8 +21,7 @@ module RuboCop
|
|
21
21
|
include FirstElementLineBreak
|
22
22
|
extend AutoCorrector
|
23
23
|
|
24
|
-
MSG = 'Add a line break before the first element of a '
|
25
|
-
'multi-line array.'
|
24
|
+
MSG = 'Add a line break before the first element of a multi-line array.'
|
26
25
|
|
27
26
|
def on_array(node)
|
28
27
|
return if !node.loc.begin && !assignment_on_same_line?(node)
|
@@ -77,10 +77,11 @@ module RuboCop
|
|
77
77
|
# and_now_for_something = {
|
78
78
|
# completely: :different
|
79
79
|
# }
|
80
|
-
class FirstHashElementIndentation <
|
80
|
+
class FirstHashElementIndentation < Base
|
81
81
|
include Alignment
|
82
82
|
include ConfigurableEnforcedStyle
|
83
83
|
include MultilineElementIndentation
|
84
|
+
extend AutoCorrector
|
84
85
|
|
85
86
|
MSG = 'Use %<configured_indentation_width>d spaces for indentation ' \
|
86
87
|
'in a hash, relative to %<base_description>s.'
|
@@ -96,12 +97,12 @@ module RuboCop
|
|
96
97
|
end
|
97
98
|
alias on_csend on_send
|
98
99
|
|
99
|
-
def autocorrect(node)
|
100
|
-
AlignmentCorrector.correct(processed_source, node, @column_delta)
|
101
|
-
end
|
102
|
-
|
103
100
|
private
|
104
101
|
|
102
|
+
def autocorrect(corrector, node)
|
103
|
+
AlignmentCorrector.correct(corrector, processed_source, node, @column_delta)
|
104
|
+
end
|
105
|
+
|
105
106
|
def brace_alignment_style
|
106
107
|
:align_braces
|
107
108
|
end
|
@@ -116,8 +117,7 @@ module RuboCop
|
|
116
117
|
return if first_pair.first_line == left_brace.line
|
117
118
|
|
118
119
|
if separator_style?(first_pair)
|
119
|
-
check_based_on_longest_key(hash_node, left_brace,
|
120
|
-
left_parenthesis)
|
120
|
+
check_based_on_longest_key(hash_node, left_brace, left_parenthesis)
|
121
121
|
else
|
122
122
|
check_first(first_pair, left_brace, left_parenthesis, 0)
|
123
123
|
end
|
@@ -134,16 +134,10 @@ module RuboCop
|
|
134
134
|
@column_delta = expected_column - right_brace.column
|
135
135
|
return if @column_delta.zero?
|
136
136
|
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
'after the preceding left parenthesis.'
|
142
|
-
else
|
143
|
-
'Indent the right brace the same as the start of the line ' \
|
144
|
-
'where the left brace is.'
|
145
|
-
end
|
146
|
-
add_offense(right_brace, location: right_brace, message: msg)
|
137
|
+
message = message_for_right_brace(left_parenthesis)
|
138
|
+
add_offense(right_brace, message: message) do |corrector|
|
139
|
+
autocorrect(corrector, right_brace)
|
140
|
+
end
|
147
141
|
end
|
148
142
|
|
149
143
|
def separator_style?(first_pair)
|
@@ -153,9 +147,7 @@ module RuboCop
|
|
153
147
|
end
|
154
148
|
|
155
149
|
def check_based_on_longest_key(hash_node, left_brace, left_parenthesis)
|
156
|
-
key_lengths = hash_node.keys.map
|
157
|
-
key.source_range.length
|
158
|
-
end
|
150
|
+
key_lengths = hash_node.keys.map { |key| key.source_range.length }
|
159
151
|
check_first(hash_node.pairs.first, left_brace, left_parenthesis,
|
160
152
|
key_lengths.max - key_lengths.first)
|
161
153
|
end
|
@@ -178,6 +170,18 @@ module RuboCop
|
|
178
170
|
base_description: base_description
|
179
171
|
)
|
180
172
|
end
|
173
|
+
|
174
|
+
def message_for_right_brace(left_parenthesis)
|
175
|
+
if style == :align_braces
|
176
|
+
'Indent the right brace the same as the left brace.'
|
177
|
+
elsif style == :special_inside_parentheses && left_parenthesis
|
178
|
+
'Indent the right brace the same as the first position ' \
|
179
|
+
'after the preceding left parenthesis.'
|
180
|
+
else
|
181
|
+
'Indent the right brace the same as the start of the line ' \
|
182
|
+
'where the left brace is.'
|
183
|
+
end
|
184
|
+
end
|
181
185
|
end
|
182
186
|
end
|
183
187
|
end
|
@@ -20,8 +20,7 @@ module RuboCop
|
|
20
20
|
include FirstElementLineBreak
|
21
21
|
extend AutoCorrector
|
22
22
|
|
23
|
-
MSG = 'Add a line break before the first element of a '
|
24
|
-
'multi-line hash.'
|
23
|
+
MSG = 'Add a line break before the first element of a multi-line hash.'
|
25
24
|
|
26
25
|
def on_hash(node)
|
27
26
|
# node.loc.begin tells us whether the hash opens with a {
|
@@ -24,8 +24,7 @@ module RuboCop
|
|
24
24
|
include FirstElementLineBreak
|
25
25
|
extend AutoCorrector
|
26
26
|
|
27
|
-
MSG = 'Add a line break before the first argument of a '
|
28
|
-
'multi-line method argument list.'
|
27
|
+
MSG = 'Add a line break before the first argument of a multi-line method argument list.'
|
29
28
|
|
30
29
|
def on_send(node)
|
31
30
|
args = node.arguments.dup
|
@@ -30,8 +30,7 @@ module RuboCop
|
|
30
30
|
include FirstElementLineBreak
|
31
31
|
extend AutoCorrector
|
32
32
|
|
33
|
-
MSG = 'Add a line break before the first parameter of a '
|
34
|
-
'multi-line method parameter list.'
|
33
|
+
MSG = 'Add a line break before the first parameter of a multi-line method parameter list.'
|
35
34
|
|
36
35
|
def on_def(node)
|
37
36
|
check_method_line_break(node, node.arguments)
|
@@ -41,10 +41,11 @@ module RuboCop
|
|
41
41
|
# second_param)
|
42
42
|
# 123
|
43
43
|
# end
|
44
|
-
class FirstParameterIndentation <
|
44
|
+
class FirstParameterIndentation < Base
|
45
45
|
include Alignment
|
46
46
|
include ConfigurableEnforcedStyle
|
47
47
|
include MultilineElementIndentation
|
48
|
+
extend AutoCorrector
|
48
49
|
|
49
50
|
MSG = 'Use %<configured_indentation_width>d spaces for indentation ' \
|
50
51
|
'in method args, relative to %<base_description>s.'
|
@@ -57,12 +58,12 @@ module RuboCop
|
|
57
58
|
end
|
58
59
|
alias on_defs on_def
|
59
60
|
|
60
|
-
def autocorrect(node)
|
61
|
-
AlignmentCorrector.correct(processed_source, node, @column_delta)
|
62
|
-
end
|
63
|
-
|
64
61
|
private
|
65
62
|
|
63
|
+
def autocorrect(corrector, node)
|
64
|
+
AlignmentCorrector.correct(corrector, processed_source, node, @column_delta)
|
65
|
+
end
|
66
|
+
|
66
67
|
def brace_alignment_style
|
67
68
|
:align_parentheses
|
68
69
|
end
|
@@ -193,8 +193,7 @@ module RuboCop
|
|
193
193
|
|
194
194
|
last_argument = node.last_argument
|
195
195
|
|
196
|
-
return unless last_argument.hash_type? &&
|
197
|
-
ignore_hash_argument?(last_argument)
|
196
|
+
return unless last_argument.hash_type? && ignore_hash_argument?(last_argument)
|
198
197
|
|
199
198
|
ignore_node(last_argument)
|
200
199
|
end
|
@@ -282,13 +281,11 @@ module RuboCop
|
|
282
281
|
end
|
283
282
|
|
284
283
|
def alignment_for_hash_rockets
|
285
|
-
@alignment_for_hash_rockets ||=
|
286
|
-
new_alignment('EnforcedHashRocketStyle')
|
284
|
+
@alignment_for_hash_rockets ||= new_alignment('EnforcedHashRocketStyle')
|
287
285
|
end
|
288
286
|
|
289
287
|
def alignment_for_colons
|
290
|
-
@alignment_for_colons ||=
|
291
|
-
new_alignment('EnforcedColonStyle')
|
288
|
+
@alignment_for_colons ||= new_alignment('EnforcedColonStyle')
|
292
289
|
end
|
293
290
|
|
294
291
|
def correct_node(corrector, node, delta)
|
@@ -132,9 +132,7 @@ module RuboCop
|
|
132
132
|
end
|
133
133
|
|
134
134
|
def extract_heredoc_argument(node)
|
135
|
-
node.arguments.find
|
136
|
-
extract_heredoc(arg_node)
|
137
|
-
end
|
135
|
+
node.arguments.find { |arg_node| extract_heredoc(arg_node) }
|
138
136
|
end
|
139
137
|
|
140
138
|
def extract_heredoc(node)
|
@@ -234,12 +232,7 @@ module RuboCop
|
|
234
232
|
def remove_internal_trailing_comma(node, corrector)
|
235
233
|
offset = internal_trailing_comma_offset_from_last_arg(node)
|
236
234
|
last_arg_end_pos = node.children.last.source_range.end_pos
|
237
|
-
corrector.remove(
|
238
|
-
range_between(
|
239
|
-
last_arg_end_pos,
|
240
|
-
last_arg_end_pos + offset
|
241
|
-
)
|
242
|
-
)
|
235
|
+
corrector.remove(range_between(last_arg_end_pos, last_arg_end_pos + offset))
|
243
236
|
end
|
244
237
|
|
245
238
|
def internal_trailing_comma?(node)
|
@@ -81,10 +81,7 @@ module RuboCop
|
|
81
81
|
end
|
82
82
|
|
83
83
|
def width_message(indentation_width)
|
84
|
-
format(
|
85
|
-
WIDTH_MSG,
|
86
|
-
indentation_width: indentation_width
|
87
|
-
)
|
84
|
+
format(WIDTH_MSG, indentation_width: indentation_width)
|
88
85
|
end
|
89
86
|
|
90
87
|
def line_too_long?(node)
|
@@ -126,8 +123,7 @@ module RuboCop
|
|
126
123
|
body = heredoc_body(node)
|
127
124
|
body_indent_level = indent_level(body)
|
128
125
|
correct_indent_level = base_indent_level(node) + indentation_width
|
129
|
-
body.gsub(/^[^\S\r\n]{#{body_indent_level}}/,
|
130
|
-
' ' * correct_indent_level)
|
126
|
+
body.gsub(/^[^\S\r\n]{#{body_indent_level}}/, ' ' * correct_indent_level)
|
131
127
|
end
|
132
128
|
|
133
129
|
def indented_end(node)
|
@@ -118,9 +118,10 @@ module RuboCop
|
|
118
118
|
# def bar
|
119
119
|
# end
|
120
120
|
# end
|
121
|
-
class IndentationConsistency <
|
121
|
+
class IndentationConsistency < Base
|
122
122
|
include Alignment
|
123
123
|
include ConfigurableEnforcedStyle
|
124
|
+
extend AutoCorrector
|
124
125
|
|
125
126
|
MSG = 'Inconsistent indentation detected.'
|
126
127
|
|
@@ -132,12 +133,12 @@ module RuboCop
|
|
132
133
|
check(node)
|
133
134
|
end
|
134
135
|
|
135
|
-
def autocorrect(node)
|
136
|
-
AlignmentCorrector.correct(processed_source, node, column_delta)
|
137
|
-
end
|
138
|
-
|
139
136
|
private
|
140
137
|
|
138
|
+
def autocorrect(corrector, node)
|
139
|
+
AlignmentCorrector.correct(corrector, processed_source, node, column_delta)
|
140
|
+
end
|
141
|
+
|
141
142
|
# Not all nodes define `bare_access_modifier?` (for example,
|
142
143
|
# `RuboCop::AST::DefNode` does not), so we must check `send_type?` first
|
143
144
|
# to avoid a NoMethodError.
|
@@ -161,8 +162,10 @@ module RuboCop
|
|
161
162
|
# to the level of the module (see `AccessModifierIndentation` cop) we
|
162
163
|
# return nil so that `check_alignment` will derive the correct
|
163
164
|
# indentation from the first child that is not an access modifier.
|
164
|
-
module_indent = display_column(node.parent.source_range)
|
165
165
|
access_modifier_indent = display_column(first_child.source_range)
|
166
|
+
return access_modifier_indent unless node.parent
|
167
|
+
|
168
|
+
module_indent = display_column(node.parent.source_range)
|
166
169
|
access_modifier_indent if access_modifier_indent > module_indent
|
167
170
|
end
|
168
171
|
|