rubocop 0.87.0 → 0.90.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 +1 -1
- data/bin/rubocop-profile +32 -0
- data/config/default.yml +232 -33
- data/lib/rubocop.rb +36 -4
- data/lib/rubocop/cached_data.rb +1 -0
- data/lib/rubocop/cli.rb +2 -2
- data/lib/rubocop/cli/command.rb +1 -0
- data/lib/rubocop/cli/command/auto_genenerate_config.rb +4 -3
- data/lib/rubocop/cli/command/base.rb +2 -0
- data/lib/rubocop/cli/command/execute_runner.rb +2 -1
- data/lib/rubocop/cli/command/init_dotfile.rb +1 -0
- data/lib/rubocop/cli/command/show_cops.rb +3 -2
- data/lib/rubocop/cli/command/version.rb +3 -2
- data/lib/rubocop/cli/environment.rb +1 -0
- data/lib/rubocop/comment_config.rb +10 -7
- data/lib/rubocop/config.rb +20 -3
- data/lib/rubocop/config_loader.rb +39 -16
- data/lib/rubocop/config_loader_resolver.rb +4 -3
- data/lib/rubocop/config_obsoletion.rb +7 -1
- data/lib/rubocop/config_store.rb +4 -0
- data/lib/rubocop/config_validator.rb +5 -4
- data/lib/rubocop/cop/autocorrect_logic.rb +1 -1
- data/lib/rubocop/cop/badge.rb +1 -1
- data/lib/rubocop/cop/base.rb +37 -6
- data/lib/rubocop/cop/bundler/gem_comment.rb +7 -3
- data/lib/rubocop/cop/commissioner.rb +47 -8
- data/lib/rubocop/cop/cop.rb +1 -1
- data/lib/rubocop/cop/correctors/alignment_corrector.rb +4 -4
- data/lib/rubocop/cop/correctors/condition_corrector.rb +3 -5
- data/lib/rubocop/cop/correctors/empty_line_corrector.rb +9 -10
- data/lib/rubocop/cop/correctors/line_break_corrector.rb +6 -6
- data/lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb +34 -3
- data/lib/rubocop/cop/correctors/parentheses_corrector.rb +5 -8
- data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +6 -11
- data/lib/rubocop/cop/correctors/punctuation_corrector.rb +8 -10
- data/lib/rubocop/cop/correctors/unused_arg_corrector.rb +15 -18
- data/lib/rubocop/cop/documentation.rb +22 -0
- data/lib/rubocop/cop/force.rb +1 -0
- data/lib/rubocop/cop/gemspec/required_ruby_version.rb +38 -12
- data/lib/rubocop/cop/generator.rb +1 -0
- data/lib/rubocop/cop/generator/configuration_injector.rb +2 -2
- data/lib/rubocop/cop/internal_affairs/method_name_equal.rb +4 -12
- data/lib/rubocop/cop/internal_affairs/node_destructuring.rb +1 -1
- data/lib/rubocop/cop/internal_affairs/offense_location_keyword.rb +8 -8
- data/lib/rubocop/cop/internal_affairs/redundant_location_argument.rb +10 -7
- data/lib/rubocop/cop/internal_affairs/redundant_message_argument.rb +7 -8
- data/lib/rubocop/cop/internal_affairs/useless_message_assertion.rb +2 -2
- data/lib/rubocop/cop/layout/block_alignment.rb +24 -20
- data/lib/rubocop/cop/layout/class_structure.rb +15 -53
- data/lib/rubocop/cop/layout/closing_heredoc_indentation.rb +4 -6
- data/lib/rubocop/cop/layout/comment_indentation.rb +1 -1
- data/lib/rubocop/cop/layout/condition_position.rb +13 -15
- data/lib/rubocop/cop/layout/def_end_alignment.rb +7 -4
- data/lib/rubocop/cop/layout/dot_position.rb +21 -17
- data/lib/rubocop/cop/layout/empty_comment.rb +30 -23
- data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +19 -16
- data/lib/rubocop/cop/layout/empty_line_after_magic_comment.rb +13 -13
- data/lib/rubocop/cop/layout/empty_line_after_multiline_condition.rb +144 -0
- data/lib/rubocop/cop/layout/empty_line_between_defs.rb +21 -23
- data/lib/rubocop/cop/layout/empty_lines.rb +6 -9
- data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +5 -6
- data/lib/rubocop/cop/layout/empty_lines_around_arguments.rb +7 -8
- data/lib/rubocop/cop/layout/empty_lines_around_attribute_accessor.rb +3 -6
- data/lib/rubocop/cop/layout/empty_lines_around_begin_body.rb +2 -5
- data/lib/rubocop/cop/layout/empty_lines_around_block_body.rb +2 -5
- data/lib/rubocop/cop/layout/empty_lines_around_class_body.rb +2 -5
- data/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +2 -5
- data/lib/rubocop/cop/layout/empty_lines_around_method_body.rb +2 -5
- data/lib/rubocop/cop/layout/empty_lines_around_module_body.rb +2 -5
- data/lib/rubocop/cop/layout/end_alignment.rb +9 -9
- data/lib/rubocop/cop/layout/extra_spacing.rb +22 -36
- data/lib/rubocop/cop/layout/first_array_element_line_break.rb +2 -5
- data/lib/rubocop/cop/layout/first_hash_element_line_break.rb +2 -5
- data/lib/rubocop/cop/layout/first_method_argument_line_break.rb +5 -9
- data/lib/rubocop/cop/layout/first_method_parameter_line_break.rb +2 -5
- data/lib/rubocop/cop/layout/hash_alignment.rb +17 -20
- data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +15 -14
- data/lib/rubocop/cop/layout/heredoc_indentation.rb +16 -13
- data/lib/rubocop/cop/layout/indentation_style.rb +0 -2
- data/lib/rubocop/cop/layout/initial_indentation.rb +6 -7
- data/lib/rubocop/cop/layout/leading_comment_space.rb +12 -10
- data/lib/rubocop/cop/layout/leading_empty_lines.rb +6 -11
- data/lib/rubocop/cop/layout/multiline_array_brace_layout.rb +2 -5
- data/lib/rubocop/cop/layout/multiline_array_line_breaks.rb +2 -5
- data/lib/rubocop/cop/layout/multiline_assignment_layout.rb +10 -14
- data/lib/rubocop/cop/layout/multiline_block_layout.rb +37 -24
- data/lib/rubocop/cop/layout/multiline_hash_brace_layout.rb +2 -5
- data/lib/rubocop/cop/layout/multiline_hash_key_line_breaks.rb +2 -5
- data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +5 -9
- data/lib/rubocop/cop/layout/multiline_method_call_brace_layout.rb +2 -5
- data/lib/rubocop/cop/layout/multiline_method_definition_brace_layout.rb +2 -5
- data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +18 -23
- data/lib/rubocop/cop/layout/space_after_colon.rb +11 -7
- data/lib/rubocop/cop/layout/space_after_comma.rb +2 -5
- data/lib/rubocop/cop/layout/space_after_method_name.rb +5 -6
- data/lib/rubocop/cop/layout/space_after_not.rb +9 -11
- data/lib/rubocop/cop/layout/space_after_semicolon.rb +2 -5
- data/lib/rubocop/cop/layout/space_around_block_parameters.rb +3 -2
- data/lib/rubocop/cop/layout/space_around_equals_in_parameter_default.rb +20 -15
- data/lib/rubocop/cop/layout/space_around_keyword.rb +17 -18
- data/lib/rubocop/cop/layout/space_around_method_call_operator.rb +33 -66
- data/lib/rubocop/cop/layout/space_around_operators.rb +17 -16
- data/lib/rubocop/cop/layout/space_before_block_braces.rb +23 -22
- data/lib/rubocop/cop/layout/space_before_comma.rb +3 -5
- data/lib/rubocop/cop/layout/space_before_comment.rb +10 -7
- data/lib/rubocop/cop/layout/space_before_first_arg.rb +7 -7
- data/lib/rubocop/cop/layout/space_before_semicolon.rb +2 -5
- data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +9 -17
- data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +16 -18
- data/lib/rubocop/cop/layout/space_inside_array_percent_literal.rb +3 -8
- data/lib/rubocop/cop/layout/space_inside_block_braces.rb +17 -16
- data/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +16 -19
- data/lib/rubocop/cop/layout/space_inside_parens.rb +9 -14
- data/lib/rubocop/cop/layout/space_inside_percent_literal_delimiters.rb +5 -10
- data/lib/rubocop/cop/layout/space_inside_range_literal.rb +8 -17
- data/lib/rubocop/cop/layout/space_inside_reference_brackets.rb +13 -16
- data/lib/rubocop/cop/layout/space_inside_string_interpolation.rb +10 -11
- data/lib/rubocop/cop/layout/trailing_empty_lines.rb +10 -15
- data/lib/rubocop/cop/layout/trailing_whitespace.rb +11 -11
- data/lib/rubocop/cop/lint/ambiguous_block_association.rb +7 -4
- data/lib/rubocop/cop/lint/ambiguous_operator.rb +15 -10
- data/lib/rubocop/cop/lint/ambiguous_regexp_literal.rb +11 -13
- data/lib/rubocop/cop/lint/assignment_in_condition.rb +2 -2
- data/lib/rubocop/cop/lint/big_decimal_new.rb +10 -10
- data/lib/rubocop/cop/lint/binary_operator_with_identical_operands.rb +50 -0
- data/lib/rubocop/cop/lint/boolean_symbol.rb +16 -11
- data/lib/rubocop/cop/lint/circular_argument_reference.rb +1 -1
- data/lib/rubocop/cop/lint/constant_resolution.rb +2 -2
- data/lib/rubocop/cop/lint/debugger.rb +7 -1
- data/lib/rubocop/cop/lint/deprecated_class_methods.rb +9 -10
- data/lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb +21 -17
- data/lib/rubocop/cop/lint/disjunctive_assignment_in_constructor.rb +8 -2
- data/lib/rubocop/cop/lint/duplicate_case_condition.rb +1 -1
- data/lib/rubocop/cop/lint/duplicate_elsif_condition.rb +39 -0
- data/lib/rubocop/cop/lint/duplicate_hash_key.rb +1 -1
- data/lib/rubocop/cop/lint/duplicate_methods.rb +9 -6
- data/lib/rubocop/cop/lint/duplicate_require.rb +41 -0
- data/lib/rubocop/cop/lint/duplicate_rescue_exception.rb +49 -0
- data/lib/rubocop/cop/lint/each_with_object_argument.rb +1 -1
- data/lib/rubocop/cop/lint/else_layout.rb +1 -1
- data/lib/rubocop/cop/lint/empty_conditional_body.rb +67 -0
- data/lib/rubocop/cop/lint/empty_ensure.rb +5 -5
- data/lib/rubocop/cop/lint/empty_expression.rb +2 -2
- data/lib/rubocop/cop/lint/empty_file.rb +53 -0
- data/lib/rubocop/cop/lint/empty_interpolation.rb +5 -6
- data/lib/rubocop/cop/lint/empty_when.rb +2 -2
- data/lib/rubocop/cop/lint/ensure_return.rb +27 -29
- data/lib/rubocop/cop/lint/erb_new_arguments.rb +11 -10
- data/lib/rubocop/cop/lint/flip_flop.rb +1 -1
- data/lib/rubocop/cop/lint/float_comparison.rb +93 -0
- data/lib/rubocop/cop/lint/float_out_of_range.rb +1 -1
- data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +5 -4
- data/lib/rubocop/cop/lint/heredoc_method_call_position.rb +13 -14
- data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +5 -4
- data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +8 -8
- data/lib/rubocop/cop/lint/inherit_exception.rb +12 -7
- data/lib/rubocop/cop/lint/interpolation_check.rb +18 -15
- data/lib/rubocop/cop/lint/literal_as_condition.rb +14 -2
- data/lib/rubocop/cop/lint/literal_in_interpolation.rb +7 -7
- data/lib/rubocop/cop/lint/loop.rb +23 -2
- data/lib/rubocop/cop/lint/missing_cop_enable_directive.rb +6 -5
- data/lib/rubocop/cop/lint/missing_super.rb +99 -0
- data/lib/rubocop/cop/lint/mixed_regexp_capture_types.rb +3 -36
- data/lib/rubocop/cop/lint/multiple_comparison.rb +6 -9
- data/lib/rubocop/cop/lint/nested_method_definition.rb +14 -20
- data/lib/rubocop/cop/lint/nested_percent_literal.rb +1 -1
- data/lib/rubocop/cop/lint/next_without_accumulator.rb +1 -1
- data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +82 -11
- data/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +2 -2
- data/lib/rubocop/cop/lint/number_conversion.rb +6 -9
- data/lib/rubocop/cop/lint/ordered_magic_comments.rb +11 -13
- data/lib/rubocop/cop/lint/out_of_range_regexp_ref.rb +80 -0
- data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +4 -10
- data/lib/rubocop/cop/lint/percent_string_array.rb +3 -6
- data/lib/rubocop/cop/lint/percent_symbol_array.rb +13 -12
- data/lib/rubocop/cop/lint/raise_exception.rb +12 -10
- data/lib/rubocop/cop/lint/rand_one.rb +2 -2
- data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +16 -19
- data/lib/rubocop/cop/lint/redundant_cop_enable_directive.rb +7 -11
- data/lib/rubocop/cop/lint/redundant_require_statement.rb +4 -7
- data/lib/rubocop/cop/lint/redundant_splat_expansion.rb +13 -9
- data/lib/rubocop/cop/lint/redundant_string_coercion.rb +6 -13
- data/lib/rubocop/cop/lint/redundant_with_index.rb +11 -14
- data/lib/rubocop/cop/lint/redundant_with_object.rb +11 -14
- data/lib/rubocop/cop/lint/regexp_as_condition.rb +4 -6
- data/lib/rubocop/cop/lint/require_parentheses.rb +2 -2
- data/lib/rubocop/cop/lint/rescue_exception.rb +1 -1
- data/lib/rubocop/cop/lint/rescue_type.rb +8 -8
- data/lib/rubocop/cop/lint/return_in_void_context.rb +2 -4
- data/lib/rubocop/cop/lint/safe_navigation_chain.rb +3 -6
- data/lib/rubocop/cop/lint/safe_navigation_consistency.rb +14 -10
- data/lib/rubocop/cop/lint/safe_navigation_with_empty.rb +7 -7
- data/lib/rubocop/cop/lint/script_permission.rb +10 -7
- data/lib/rubocop/cop/lint/self_assignment.rb +78 -0
- data/lib/rubocop/cop/lint/send_with_mixin_argument.rb +5 -11
- data/lib/rubocop/cop/lint/shadowed_argument.rb +3 -3
- data/lib/rubocop/cop/lint/shadowed_exception.rb +2 -2
- data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +7 -7
- data/lib/rubocop/cop/lint/struct_new_override.rb +1 -1
- data/lib/rubocop/cop/lint/suppressed_exception.rb +4 -7
- data/lib/rubocop/cop/lint/to_json.rb +4 -6
- data/lib/rubocop/cop/lint/top_level_return_with_argument.rb +34 -0
- data/lib/rubocop/cop/lint/trailing_comma_in_attribute_declaration.rb +57 -0
- data/lib/rubocop/cop/lint/underscore_prefixed_variable_name.rb +4 -4
- data/lib/rubocop/cop/lint/unified_integer.rb +4 -6
- data/lib/rubocop/cop/lint/unreachable_code.rb +1 -1
- data/lib/rubocop/cop/lint/unreachable_loop.rb +174 -0
- data/lib/rubocop/cop/lint/unused_block_argument.rb +8 -3
- data/lib/rubocop/cop/lint/unused_method_argument.rb +8 -3
- data/lib/rubocop/cop/lint/uri_escape_unescape.rb +1 -1
- data/lib/rubocop/cop/lint/uri_regexp.rb +11 -47
- data/lib/rubocop/cop/lint/useless_access_modifier.rb +25 -15
- data/lib/rubocop/cop/lint/useless_assignment.rb +4 -4
- data/lib/rubocop/cop/lint/useless_else_without_rescue.rb +6 -15
- data/lib/rubocop/cop/lint/useless_method_definition.rb +77 -0
- data/lib/rubocop/cop/lint/useless_setter_call.rb +4 -6
- data/lib/rubocop/cop/lint/void.rb +3 -7
- data/lib/rubocop/cop/metrics/abc_size.rb +1 -1
- data/lib/rubocop/cop/metrics/block_length.rb +2 -2
- data/lib/rubocop/cop/metrics/block_nesting.rb +2 -2
- data/lib/rubocop/cop/metrics/class_length.rb +2 -2
- data/lib/rubocop/cop/metrics/cyclomatic_complexity.rb +2 -1
- data/lib/rubocop/cop/metrics/method_length.rb +2 -2
- data/lib/rubocop/cop/metrics/module_length.rb +2 -2
- data/lib/rubocop/cop/metrics/parameter_lists.rb +2 -6
- data/lib/rubocop/cop/metrics/perceived_complexity.rb +7 -8
- data/lib/rubocop/cop/metrics/utils/abc_size_calculator.rb +50 -5
- data/lib/rubocop/cop/metrics/utils/code_length_calculator.rb +53 -24
- data/lib/rubocop/cop/metrics/utils/repeated_csend_discount.rb +37 -0
- data/lib/rubocop/cop/migration/department_name.rb +14 -16
- data/lib/rubocop/cop/mixin/alignment.rb +5 -1
- data/lib/rubocop/cop/mixin/allowed_methods.rb +2 -0
- data/lib/rubocop/cop/mixin/annotation_comment.rb +5 -0
- data/lib/rubocop/cop/mixin/array_min_size.rb +1 -1
- data/lib/rubocop/cop/mixin/check_line_breakable.rb +17 -8
- data/lib/rubocop/cop/mixin/code_length.rb +22 -5
- data/lib/rubocop/cop/mixin/comments_help.rb +54 -0
- data/lib/rubocop/cop/mixin/empty_lines_around_body.rb +8 -7
- data/lib/rubocop/cop/mixin/empty_parameter.rb +3 -1
- data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +3 -1
- data/lib/rubocop/cop/mixin/first_element_line_break.rb +3 -1
- data/lib/rubocop/cop/mixin/hash_transform_method.rb +22 -11
- data/lib/rubocop/cop/mixin/line_length_help.rb +1 -3
- data/lib/rubocop/cop/mixin/method_complexity.rb +10 -2
- data/lib/rubocop/cop/mixin/multiline_element_line_breaks.rb +3 -1
- data/lib/rubocop/cop/mixin/multiline_literal_brace_layout.rb +13 -12
- data/lib/rubocop/cop/mixin/negative_conditional.rb +2 -2
- data/lib/rubocop/cop/mixin/percent_array.rb +16 -9
- data/lib/rubocop/cop/mixin/range_help.rb +18 -4
- data/lib/rubocop/cop/mixin/regexp_literal_help.rb +1 -1
- data/lib/rubocop/cop/mixin/rescue_node.rb +10 -1
- data/lib/rubocop/cop/mixin/space_after_punctuation.rb +4 -3
- data/lib/rubocop/cop/mixin/space_before_punctuation.rb +4 -3
- data/lib/rubocop/cop/mixin/statement_modifier.rb +39 -10
- data/lib/rubocop/cop/mixin/surrounding_space.rb +8 -29
- data/lib/rubocop/cop/mixin/trailing_comma.rb +9 -11
- data/lib/rubocop/cop/mixin/uncommunicative_name.rb +6 -13
- data/lib/rubocop/cop/mixin/unused_argument.rb +4 -6
- data/lib/rubocop/cop/mixin/visibility_help.rb +50 -0
- data/lib/rubocop/cop/naming/accessor_method_name.rb +4 -2
- data/lib/rubocop/cop/naming/ascii_identifiers.rb +3 -3
- data/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +1 -1
- data/lib/rubocop/cop/naming/block_parameter_name.rb +1 -1
- data/lib/rubocop/cop/naming/class_and_module_camel_case.rb +2 -2
- data/lib/rubocop/cop/naming/constant_name.rb +2 -2
- data/lib/rubocop/cop/naming/file_name.rb +3 -3
- data/lib/rubocop/cop/naming/heredoc_delimiter_case.rb +2 -2
- data/lib/rubocop/cop/naming/heredoc_delimiter_naming.rb +2 -2
- data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +2 -2
- data/lib/rubocop/cop/naming/method_parameter_name.rb +1 -1
- data/lib/rubocop/cop/naming/predicate_name.rb +3 -5
- data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +12 -11
- data/lib/rubocop/cop/offense.rb +1 -0
- data/lib/rubocop/cop/registry.rb +3 -3
- data/lib/rubocop/cop/security/eval.rb +2 -2
- data/lib/rubocop/cop/security/json_load.rb +6 -8
- data/lib/rubocop/cop/security/marshal_load.rb +2 -4
- data/lib/rubocop/cop/security/open.rb +2 -2
- data/lib/rubocop/cop/security/yaml_load.rb +6 -6
- data/lib/rubocop/cop/severity.rb +0 -8
- data/lib/rubocop/cop/style/access_modifier_declarations.rb +16 -9
- data/lib/rubocop/cop/style/accessor_grouping.rb +33 -20
- data/lib/rubocop/cop/style/alias.rb +41 -36
- data/lib/rubocop/cop/style/and_or.rb +9 -11
- data/lib/rubocop/cop/style/array_coercion.rb +63 -0
- data/lib/rubocop/cop/style/array_join.rb +6 -8
- data/lib/rubocop/cop/style/ascii_comments.rb +4 -4
- data/lib/rubocop/cop/style/attr.rb +11 -9
- data/lib/rubocop/cop/style/auto_resource_cleanup.rb +5 -7
- data/lib/rubocop/cop/style/bare_percent_literals.rb +10 -12
- data/lib/rubocop/cop/style/begin_block.rb +2 -2
- data/lib/rubocop/cop/style/bisected_attr_accessor.rb +58 -38
- data/lib/rubocop/cop/style/block_comments.rb +14 -18
- data/lib/rubocop/cop/style/block_delimiters.rb +23 -23
- data/lib/rubocop/cop/style/case_equality.rb +29 -5
- data/lib/rubocop/cop/style/case_like_if.rb +236 -0
- data/lib/rubocop/cop/style/class_and_module_children.rb +14 -11
- data/lib/rubocop/cop/style/class_check.rb +7 -9
- data/lib/rubocop/cop/style/class_methods.rb +7 -11
- data/lib/rubocop/cop/style/class_methods_definitions.rb +131 -0
- data/lib/rubocop/cop/style/class_vars.rb +6 -10
- data/lib/rubocop/cop/style/collection_methods.rb +11 -17
- data/lib/rubocop/cop/style/colon_method_call.rb +8 -9
- data/lib/rubocop/cop/style/colon_method_definition.rb +6 -6
- data/lib/rubocop/cop/style/combinable_loops.rb +89 -0
- data/lib/rubocop/cop/style/command_literal.rb +23 -24
- data/lib/rubocop/cop/style/comment_annotation.rb +15 -15
- data/lib/rubocop/cop/style/commented_keyword.rb +6 -3
- data/lib/rubocop/cop/style/conditional_assignment.rb +13 -4
- data/lib/rubocop/cop/style/constant_visibility.rb +3 -2
- data/lib/rubocop/cop/style/copyright.rb +12 -12
- data/lib/rubocop/cop/style/date_time.rb +1 -1
- data/lib/rubocop/cop/style/def_with_parentheses.rb +8 -10
- data/lib/rubocop/cop/style/dir.rb +7 -10
- data/lib/rubocop/cop/style/disable_cops_within_source_code_directive.rb +7 -9
- data/lib/rubocop/cop/style/documentation.rb +6 -8
- data/lib/rubocop/cop/style/documentation_method.rb +1 -1
- data/lib/rubocop/cop/style/double_cop_disable_directive.rb +12 -15
- data/lib/rubocop/cop/style/double_negation.rb +2 -2
- data/lib/rubocop/cop/style/each_for_simple_loop.rb +5 -8
- data/lib/rubocop/cop/style/each_with_object.rb +16 -19
- data/lib/rubocop/cop/style/empty_block_parameter.rb +9 -10
- data/lib/rubocop/cop/style/empty_case_condition.rb +19 -20
- data/lib/rubocop/cop/style/empty_else.rb +17 -19
- data/lib/rubocop/cop/style/empty_lambda_parameter.rb +9 -10
- data/lib/rubocop/cop/style/empty_literal.rb +15 -16
- data/lib/rubocop/cop/style/empty_method.rb +10 -13
- data/lib/rubocop/cop/style/encoding.rb +5 -9
- data/lib/rubocop/cop/style/end_block.rb +4 -6
- data/lib/rubocop/cop/style/eval_with_location.rb +9 -7
- data/lib/rubocop/cop/style/even_odd.rb +7 -11
- data/lib/rubocop/cop/style/expand_path_arguments.rb +21 -20
- data/lib/rubocop/cop/style/explicit_block_argument.rb +102 -0
- data/lib/rubocop/cop/style/exponential_notation.rb +7 -9
- data/lib/rubocop/cop/style/float_division.rb +8 -11
- data/lib/rubocop/cop/style/for.rb +11 -15
- data/lib/rubocop/cop/style/format_string.rb +21 -19
- data/lib/rubocop/cop/style/format_string_token.rb +10 -12
- data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +19 -41
- data/lib/rubocop/cop/style/global_std_stream.rb +65 -0
- data/lib/rubocop/cop/style/global_vars.rb +2 -2
- data/lib/rubocop/cop/style/guard_clause.rb +6 -6
- data/lib/rubocop/cop/style/hash_as_last_array_item.rb +69 -0
- data/lib/rubocop/cop/style/hash_each_methods.rb +5 -8
- data/lib/rubocop/cop/style/hash_like_case.rb +76 -0
- data/lib/rubocop/cop/style/hash_syntax.rb +10 -8
- data/lib/rubocop/cop/style/hash_transform_keys.rb +17 -3
- data/lib/rubocop/cop/style/hash_transform_values.rb +16 -2
- data/lib/rubocop/cop/style/identical_conditional_branches.rb +2 -2
- data/lib/rubocop/cop/style/if_inside_else.rb +3 -3
- data/lib/rubocop/cop/style/if_unless_modifier.rb +19 -41
- data/lib/rubocop/cop/style/if_unless_modifier_of_if_unless.rb +3 -7
- data/lib/rubocop/cop/style/if_with_semicolon.rb +3 -6
- data/lib/rubocop/cop/style/implicit_runtime_error.rb +1 -1
- data/lib/rubocop/cop/style/infinite_loop.rb +24 -24
- data/lib/rubocop/cop/style/inline_comment.rb +3 -3
- data/lib/rubocop/cop/style/inverse_methods.rb +22 -32
- data/lib/rubocop/cop/style/keyword_parameters_order.rb +58 -0
- data/lib/rubocop/cop/style/lambda.rb +7 -12
- data/lib/rubocop/cop/style/lambda_call.rb +14 -13
- data/lib/rubocop/cop/style/line_end_concatenation.rb +19 -16
- data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +2 -1
- data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +16 -11
- data/lib/rubocop/cop/style/method_call_with_args_parentheses/require_parentheses.rb +4 -8
- data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +8 -7
- data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +12 -3
- data/lib/rubocop/cop/style/method_def_parentheses.rb +11 -16
- data/lib/rubocop/cop/style/min_max.rb +8 -12
- data/lib/rubocop/cop/style/missing_else.rb +11 -21
- data/lib/rubocop/cop/style/missing_respond_to_missing.rb +10 -3
- data/lib/rubocop/cop/style/mixin_grouping.rb +24 -27
- data/lib/rubocop/cop/style/mixin_usage.rb +1 -1
- data/lib/rubocop/cop/style/module_function.rb +10 -13
- data/lib/rubocop/cop/style/multiline_if_modifier.rb +3 -10
- data/lib/rubocop/cop/style/multiline_if_then.rb +4 -10
- data/lib/rubocop/cop/style/multiline_memoization.rb +14 -12
- data/lib/rubocop/cop/style/multiline_method_signature.rb +2 -2
- data/lib/rubocop/cop/style/multiline_ternary_operator.rb +4 -6
- data/lib/rubocop/cop/style/multiline_when_then.rb +9 -11
- data/lib/rubocop/cop/style/multiple_comparison.rb +1 -1
- data/lib/rubocop/cop/style/mutable_constant.rb +23 -20
- data/lib/rubocop/cop/style/negated_if.rb +6 -6
- data/lib/rubocop/cop/style/negated_unless.rb +6 -6
- data/lib/rubocop/cop/style/negated_while.rb +7 -15
- data/lib/rubocop/cop/style/nested_modifier.rb +10 -13
- data/lib/rubocop/cop/style/nested_parenthesized_calls.rb +14 -12
- data/lib/rubocop/cop/style/nested_ternary_operator.rb +14 -16
- data/lib/rubocop/cop/style/next.rb +10 -14
- data/lib/rubocop/cop/style/nil_comparison.rb +11 -11
- data/lib/rubocop/cop/style/non_nil_check.rb +32 -26
- data/lib/rubocop/cop/style/not.rb +19 -26
- data/lib/rubocop/cop/style/numeric_literal_prefix.rb +4 -9
- data/lib/rubocop/cop/style/numeric_predicate.rb +11 -15
- data/lib/rubocop/cop/style/one_line_conditional.rb +71 -23
- data/lib/rubocop/cop/style/option_hash.rb +1 -1
- data/lib/rubocop/cop/style/optional_arguments.rb +1 -1
- data/lib/rubocop/cop/style/optional_boolean_parameter.rb +42 -0
- data/lib/rubocop/cop/style/or_assignment.rb +13 -10
- data/lib/rubocop/cop/style/parallel_assignment.rb +18 -18
- data/lib/rubocop/cop/style/parentheses_around_condition.rb +6 -6
- data/lib/rubocop/cop/style/percent_literal_delimiters.rb +14 -20
- data/lib/rubocop/cop/style/percent_q_literals.rb +8 -10
- data/lib/rubocop/cop/style/perl_backrefs.rb +8 -10
- data/lib/rubocop/cop/style/preferred_hash_methods.rb +9 -14
- data/lib/rubocop/cop/style/proc.rb +6 -6
- data/lib/rubocop/cop/style/raise_args.rb +13 -24
- data/lib/rubocop/cop/style/random_with_offset.rb +16 -16
- data/lib/rubocop/cop/style/redundant_assignment.rb +8 -10
- data/lib/rubocop/cop/style/redundant_begin.rb +7 -9
- data/lib/rubocop/cop/style/redundant_capital_w.rb +6 -9
- data/lib/rubocop/cop/style/redundant_condition.rb +20 -9
- data/lib/rubocop/cop/style/redundant_exception.rb +4 -0
- data/lib/rubocop/cop/style/redundant_fetch_block.rb +3 -12
- data/lib/rubocop/cop/style/redundant_file_extension_in_require.rb +50 -0
- data/lib/rubocop/cop/style/redundant_freeze.rb +3 -6
- data/lib/rubocop/cop/style/redundant_interpolation.rb +25 -24
- data/lib/rubocop/cop/style/redundant_parentheses.rb +7 -9
- data/lib/rubocop/cop/style/redundant_regexp_character_class.rb +6 -13
- data/lib/rubocop/cop/style/redundant_regexp_escape.rb +16 -25
- data/lib/rubocop/cop/style/redundant_self.rb +2 -2
- data/lib/rubocop/cop/style/redundant_self_assignment.rb +116 -0
- data/lib/rubocop/cop/style/redundant_sort.rb +26 -12
- data/lib/rubocop/cop/style/regexp_literal.rb +10 -21
- data/lib/rubocop/cop/style/rescue_modifier.rb +29 -9
- data/lib/rubocop/cop/style/return_nil.rb +5 -5
- data/lib/rubocop/cop/style/safe_navigation.rb +17 -16
- data/lib/rubocop/cop/style/sample.rb +10 -13
- data/lib/rubocop/cop/style/self_assignment.rb +26 -22
- data/lib/rubocop/cop/style/semicolon.rb +6 -9
- data/lib/rubocop/cop/style/send.rb +2 -2
- data/lib/rubocop/cop/style/signal_exception.rb +23 -19
- data/lib/rubocop/cop/style/single_argument_dig.rb +54 -0
- data/lib/rubocop/cop/style/single_line_block_params.rb +4 -2
- data/lib/rubocop/cop/style/single_line_methods.rb +18 -17
- data/lib/rubocop/cop/style/slicing_with_range.rb +4 -7
- data/lib/rubocop/cop/style/sole_nested_conditional.rb +66 -0
- data/lib/rubocop/cop/style/special_global_vars.rb +10 -15
- data/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +17 -20
- data/lib/rubocop/cop/style/stderr_puts.rb +4 -6
- data/lib/rubocop/cop/style/string_concatenation.rb +92 -0
- data/lib/rubocop/cop/style/string_hash_keys.rb +6 -7
- data/lib/rubocop/cop/style/string_methods.rb +7 -17
- data/lib/rubocop/cop/style/strip.rb +8 -14
- data/lib/rubocop/cop/style/struct_inheritance.rb +4 -7
- data/lib/rubocop/cop/style/symbol_array.rb +6 -17
- data/lib/rubocop/cop/style/symbol_literal.rb +4 -6
- data/lib/rubocop/cop/style/symbol_proc.rb +15 -19
- data/lib/rubocop/cop/style/ternary_parentheses.rb +21 -20
- data/lib/rubocop/cop/style/trailing_body_on_class.rb +3 -6
- data/lib/rubocop/cop/style/trailing_body_on_method_definition.rb +4 -7
- data/lib/rubocop/cop/style/trailing_body_on_module.rb +3 -6
- data/lib/rubocop/cop/style/trailing_comma_in_arguments.rb +2 -5
- data/lib/rubocop/cop/style/trailing_comma_in_array_literal.rb +2 -5
- data/lib/rubocop/cop/style/trailing_comma_in_block_args.rb +7 -6
- data/lib/rubocop/cop/style/trailing_comma_in_hash_literal.rb +2 -5
- data/lib/rubocop/cop/style/trailing_method_end_statement.rb +9 -32
- data/lib/rubocop/cop/style/trailing_underscore_variable.rb +8 -17
- data/lib/rubocop/cop/style/trivial_accessors.rb +26 -30
- data/lib/rubocop/cop/style/unless_else.rb +5 -8
- data/lib/rubocop/cop/style/unpack_first.rb +4 -8
- data/lib/rubocop/cop/style/variable_interpolation.rb +7 -10
- data/lib/rubocop/cop/style/when_then.rb +4 -6
- data/lib/rubocop/cop/style/while_until_do.rb +6 -16
- data/lib/rubocop/cop/style/while_until_modifier.rb +6 -20
- data/lib/rubocop/cop/style/word_array.rb +5 -23
- data/lib/rubocop/cop/style/yoda_condition.rb +4 -15
- data/lib/rubocop/cop/style/zero_length_predicate.rb +19 -17
- data/lib/rubocop/cop/team.rb +2 -1
- data/lib/rubocop/cop/tokens_util.rb +84 -0
- data/lib/rubocop/cop/util.rb +3 -13
- data/lib/rubocop/cop/utils/format_string.rb +3 -5
- data/lib/rubocop/cop/variable_force.rb +2 -2
- data/lib/rubocop/cop/variable_force/branch.rb +1 -0
- data/lib/rubocop/cop/variable_force/variable.rb +7 -5
- data/lib/rubocop/cops_documentation_generator.rb +284 -0
- data/lib/rubocop/core_ext/string.rb +1 -1
- data/lib/rubocop/error.rb +1 -0
- data/lib/rubocop/ext/regexp_node.rb +46 -0
- data/lib/rubocop/file_finder.rb +13 -12
- data/lib/rubocop/formatter/auto_gen_config_formatter.rb +2 -1
- data/lib/rubocop/formatter/disabled_config_formatter.rb +2 -2
- data/lib/rubocop/formatter/formatter_set.rb +1 -0
- data/lib/rubocop/formatter/html_formatter.rb +2 -0
- data/lib/rubocop/formatter/junit_formatter.rb +1 -1
- data/lib/rubocop/formatter/progress_formatter.rb +2 -1
- data/lib/rubocop/formatter/quiet_formatter.rb +1 -1
- data/lib/rubocop/formatter/simple_text_formatter.rb +36 -6
- data/lib/rubocop/name_similarity.rb +1 -0
- data/lib/rubocop/options.rb +9 -6
- data/lib/rubocop/path_util.rb +17 -17
- data/lib/rubocop/rake_task.rb +1 -0
- data/lib/rubocop/remote_config.rb +1 -0
- data/lib/rubocop/result_cache.rb +13 -8
- data/lib/rubocop/rspec/cop_helper.rb +4 -1
- data/lib/rubocop/rspec/expect_offense.rb +49 -7
- data/lib/rubocop/rspec/shared_contexts.rb +25 -14
- data/lib/rubocop/runner.rb +7 -7
- data/lib/rubocop/string_interpreter.rb +3 -0
- data/lib/rubocop/target_finder.rb +14 -10
- data/lib/rubocop/target_ruby.rb +6 -0
- data/lib/rubocop/version.rb +3 -2
- data/lib/rubocop/yaml_duplication_checker.rb +1 -0
- metadata +42 -8
- data/lib/rubocop/cop/lint/useless_comparison.rb +0 -28
- data/lib/rubocop/cop/mixin/parser_diagnostic.rb +0 -37
- data/lib/rubocop/cop/mixin/too_many_lines.rb +0 -25
- data/lib/rubocop/cop/style/method_missing_super.rb +0 -34
@@ -48,8 +48,9 @@ module RuboCop
|
|
48
48
|
# foo(i)
|
49
49
|
# bar(i)
|
50
50
|
# }
|
51
|
-
class MultilineBlockLayout <
|
51
|
+
class MultilineBlockLayout < Base
|
52
52
|
include RangeHelp
|
53
|
+
extend AutoCorrector
|
53
54
|
|
54
55
|
MSG = 'Block body expression is on the same line as ' \
|
55
56
|
'the block start.'
|
@@ -70,23 +71,6 @@ module RuboCop
|
|
70
71
|
add_offense_for_expression(node, node.body, MSG)
|
71
72
|
end
|
72
73
|
|
73
|
-
def autocorrect(node)
|
74
|
-
lambda do |corrector|
|
75
|
-
unless args_on_beginning_line?(node)
|
76
|
-
autocorrect_arguments(corrector, node)
|
77
|
-
expr_before_body = node.arguments.source_range.end
|
78
|
-
end
|
79
|
-
|
80
|
-
return unless node.body
|
81
|
-
|
82
|
-
expr_before_body ||= node.loc.begin
|
83
|
-
|
84
|
-
if expr_before_body.line == node.body.first_line
|
85
|
-
autocorrect_body(corrector, node, node.body)
|
86
|
-
end
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
74
|
private
|
91
75
|
|
92
76
|
def args_on_beginning_line?(node)
|
@@ -95,17 +79,46 @@ module RuboCop
|
|
95
79
|
end
|
96
80
|
|
97
81
|
def line_break_necessary_in_args?(node)
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
82
|
+
needed_length_for_args(node) > max_line_length
|
83
|
+
end
|
84
|
+
|
85
|
+
def needed_length_for_args(node)
|
86
|
+
node.source_range.column +
|
87
|
+
characters_needed_for_space_and_pipes(node) +
|
88
|
+
node.source.lines.first.chomp.length +
|
89
|
+
block_arg_string(node, node.arguments).length
|
90
|
+
end
|
91
|
+
|
92
|
+
def characters_needed_for_space_and_pipes(node)
|
93
|
+
if node.source.lines.first.end_with?("|\n")
|
94
|
+
PIPE_SIZE
|
95
|
+
else
|
96
|
+
1 + PIPE_SIZE * 2
|
97
|
+
end
|
103
98
|
end
|
104
99
|
|
105
100
|
def add_offense_for_expression(node, expr, msg)
|
106
101
|
expression = expr.source_range
|
107
102
|
range = range_between(expression.begin_pos, expression.end_pos)
|
108
|
-
|
103
|
+
|
104
|
+
add_offense(range, message: msg) do |corrector|
|
105
|
+
autocorrect(corrector, node)
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
def autocorrect(corrector, node)
|
110
|
+
unless args_on_beginning_line?(node)
|
111
|
+
autocorrect_arguments(corrector, node)
|
112
|
+
expr_before_body = node.arguments.source_range.end
|
113
|
+
end
|
114
|
+
|
115
|
+
return unless node.body
|
116
|
+
|
117
|
+
expr_before_body ||= node.loc.begin
|
118
|
+
|
119
|
+
return unless expr_before_body.line == node.body.first_line
|
120
|
+
|
121
|
+
autocorrect_body(corrector, node, node.body)
|
109
122
|
end
|
110
123
|
|
111
124
|
def autocorrect_arguments(corrector, node)
|
@@ -88,8 +88,9 @@ module RuboCop
|
|
88
88
|
# # good
|
89
89
|
# { a: 1,
|
90
90
|
# b: 2 }
|
91
|
-
class MultilineHashBraceLayout <
|
91
|
+
class MultilineHashBraceLayout < Base
|
92
92
|
include MultilineLiteralBraceLayout
|
93
|
+
extend AutoCorrector
|
93
94
|
|
94
95
|
SAME_LINE_MESSAGE = 'Closing hash brace must be on the same line as ' \
|
95
96
|
'the last hash element when opening brace is on the same line as ' \
|
@@ -108,10 +109,6 @@ module RuboCop
|
|
108
109
|
def on_hash(node)
|
109
110
|
check_brace_layout(node)
|
110
111
|
end
|
111
|
-
|
112
|
-
def autocorrect(node)
|
113
|
-
MultilineLiteralBraceCorrector.new(node, processed_source)
|
114
|
-
end
|
115
112
|
end
|
116
113
|
end
|
117
114
|
end
|
@@ -20,8 +20,9 @@ module RuboCop
|
|
20
20
|
# b: 2,
|
21
21
|
# c: 3
|
22
22
|
# }
|
23
|
-
class MultilineHashKeyLineBreaks <
|
23
|
+
class MultilineHashKeyLineBreaks < Base
|
24
24
|
include MultilineElementLineBreaks
|
25
|
+
extend AutoCorrector
|
25
26
|
|
26
27
|
MSG = 'Each key in a multi-line hash must start on a ' \
|
27
28
|
'separate line.'
|
@@ -35,10 +36,6 @@ module RuboCop
|
|
35
36
|
check_line_breaks(node, node.children) if node.loc.begin
|
36
37
|
end
|
37
38
|
|
38
|
-
def autocorrect(node)
|
39
|
-
EmptyLineCorrector.insert_before(node)
|
40
|
-
end
|
41
|
-
|
42
39
|
private
|
43
40
|
|
44
41
|
def starts_with_curly_brace?(node)
|
@@ -19,8 +19,9 @@ module RuboCop
|
|
19
19
|
# b,
|
20
20
|
# c
|
21
21
|
# )
|
22
|
-
class MultilineMethodArgumentLineBreaks <
|
23
|
-
include
|
22
|
+
class MultilineMethodArgumentLineBreaks < Base
|
23
|
+
include MultilineElementLineBreaks
|
24
|
+
extend AutoCorrector
|
24
25
|
|
25
26
|
MSG = 'Each argument in a multi-line method call must start ' \
|
26
27
|
'on a separate line.'
|
@@ -36,16 +37,11 @@ module RuboCop
|
|
36
37
|
#
|
37
38
|
# ...then each key/value pair is treated as a method 'argument'
|
38
39
|
# when determining where line breaks should appear.
|
39
|
-
|
40
|
-
|
41
|
-
end
|
40
|
+
last_arg = args.last
|
41
|
+
args = args[0...-1] + last_arg.children if last_arg&.hash_type? && !last_arg&.braces?
|
42
42
|
|
43
43
|
check_line_breaks(node, args)
|
44
44
|
end
|
45
|
-
|
46
|
-
def autocorrect(node)
|
47
|
-
EmptyLineCorrector.insert_before(node)
|
48
|
-
end
|
49
45
|
end
|
50
46
|
end
|
51
47
|
end
|
@@ -88,8 +88,9 @@ module RuboCop
|
|
88
88
|
# # good
|
89
89
|
# foo(a,
|
90
90
|
# b)
|
91
|
-
class MultilineMethodCallBraceLayout <
|
91
|
+
class MultilineMethodCallBraceLayout < Base
|
92
92
|
include MultilineLiteralBraceLayout
|
93
|
+
extend AutoCorrector
|
93
94
|
|
94
95
|
SAME_LINE_MESSAGE = 'Closing method call brace must be on the ' \
|
95
96
|
'same line as the last argument when opening brace is on the same ' \
|
@@ -109,10 +110,6 @@ module RuboCop
|
|
109
110
|
check_brace_layout(node)
|
110
111
|
end
|
111
112
|
|
112
|
-
def autocorrect(node)
|
113
|
-
MultilineLiteralBraceCorrector.new(node, processed_source)
|
114
|
-
end
|
115
|
-
|
116
113
|
private
|
117
114
|
|
118
115
|
def children(node)
|
@@ -100,8 +100,9 @@ module RuboCop
|
|
100
100
|
# def foo(a,
|
101
101
|
# b)
|
102
102
|
# end
|
103
|
-
class MultilineMethodDefinitionBraceLayout <
|
103
|
+
class MultilineMethodDefinitionBraceLayout < Base
|
104
104
|
include MultilineLiteralBraceLayout
|
105
|
+
extend AutoCorrector
|
105
106
|
|
106
107
|
SAME_LINE_MESSAGE = 'Closing method definition brace must be on the ' \
|
107
108
|
'same line as the last parameter when opening brace is on the same ' \
|
@@ -121,10 +122,6 @@ module RuboCop
|
|
121
122
|
check_brace_layout(node.arguments)
|
122
123
|
end
|
123
124
|
alias on_defs on_def
|
124
|
-
|
125
|
-
def autocorrect(node)
|
126
|
-
MultilineLiteralBraceCorrector.new(node, processed_source)
|
127
|
-
end
|
128
125
|
end
|
129
126
|
end
|
130
127
|
end
|
@@ -21,8 +21,9 @@ module RuboCop
|
|
21
21
|
# rescue
|
22
22
|
# puts 'error'
|
23
23
|
# end
|
24
|
-
class RescueEnsureAlignment <
|
24
|
+
class RescueEnsureAlignment < Base
|
25
25
|
include RangeHelp
|
26
|
+
extend AutoCorrector
|
26
27
|
|
27
28
|
MSG = '`%<kw_loc>s` at %<kw_loc_line>d, %<kw_loc_column>d is not ' \
|
28
29
|
'aligned with `%<beginning>s` at ' \
|
@@ -41,19 +42,7 @@ module RuboCop
|
|
41
42
|
check(node)
|
42
43
|
end
|
43
44
|
|
44
|
-
def
|
45
|
-
whitespace = whitespace_range(node)
|
46
|
-
# Some inline node is sitting before current node.
|
47
|
-
return nil unless whitespace.source.strip.empty?
|
48
|
-
|
49
|
-
alignment_node = alignment_node(node)
|
50
|
-
return false if alignment_node.nil?
|
51
|
-
|
52
|
-
new_column = alignment_node.loc.column
|
53
|
-
->(corrector) { corrector.replace(whitespace, ' ' * new_column) }
|
54
|
-
end
|
55
|
-
|
56
|
-
def investigate(processed_source)
|
45
|
+
def on_new_investigation
|
57
46
|
@modifier_locations =
|
58
47
|
processed_source.tokens.each_with_object([]) do |token, locations|
|
59
48
|
next unless token.rescue_modifier?
|
@@ -73,15 +62,23 @@ module RuboCop
|
|
73
62
|
alignment_loc = alignment_node.loc.expression
|
74
63
|
kw_loc = node.loc.keyword
|
75
64
|
|
76
|
-
return if
|
77
|
-
alignment_loc.column == kw_loc.column ||
|
78
|
-
alignment_loc.line == kw_loc.line
|
65
|
+
return if alignment_loc.column == kw_loc.column || alignment_loc.line == kw_loc.line
|
79
66
|
|
80
67
|
add_offense(
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
68
|
+
kw_loc, message: format_message(alignment_node, alignment_loc, kw_loc)
|
69
|
+
) do |corrector|
|
70
|
+
autocorrect(corrector, node, alignment_node)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
def autocorrect(corrector, node, alignment_node)
|
75
|
+
whitespace = whitespace_range(node)
|
76
|
+
# Some inline node is sitting before current node.
|
77
|
+
return nil unless whitespace.source.strip.empty?
|
78
|
+
|
79
|
+
new_column = alignment_node.loc.column
|
80
|
+
|
81
|
+
corrector.replace(whitespace, ' ' * new_column)
|
85
82
|
end
|
86
83
|
|
87
84
|
def format_message(alignment_node, alignment_loc, kw_loc)
|
@@ -96,7 +93,6 @@ module RuboCop
|
|
96
93
|
)
|
97
94
|
end
|
98
95
|
|
99
|
-
# rubocop:disable Metrics/AbcSize
|
100
96
|
def alignment_source(node, starting_loc)
|
101
97
|
ending_loc =
|
102
98
|
case node.type
|
@@ -115,7 +111,6 @@ module RuboCop
|
|
115
111
|
|
116
112
|
range_between(starting_loc.begin_pos, ending_loc.end_pos).source
|
117
113
|
end
|
118
|
-
# rubocop:enable Metrics/AbcSize
|
119
114
|
|
120
115
|
# We will use ancestor or wrapper with access modifier.
|
121
116
|
|
@@ -13,7 +13,9 @@ module RuboCop
|
|
13
13
|
#
|
14
14
|
# # good
|
15
15
|
# def f(a:, b: 2); {a: 3}; end
|
16
|
-
class SpaceAfterColon <
|
16
|
+
class SpaceAfterColon < Base
|
17
|
+
extend AutoCorrector
|
18
|
+
|
17
19
|
MSG = 'Space missing after colon.'
|
18
20
|
|
19
21
|
def on_pair(node)
|
@@ -21,7 +23,7 @@ module RuboCop
|
|
21
23
|
|
22
24
|
colon = node.loc.operator
|
23
25
|
|
24
|
-
|
26
|
+
register_offense(colon) unless followed_by_space?(colon)
|
25
27
|
end
|
26
28
|
|
27
29
|
def on_kwoptarg(node)
|
@@ -29,15 +31,17 @@ module RuboCop
|
|
29
31
|
# optional keyword argument's name, so must construct one.
|
30
32
|
colon = node.loc.name.end.resize(1)
|
31
33
|
|
32
|
-
|
33
|
-
end
|
34
|
-
|
35
|
-
def autocorrect(range)
|
36
|
-
->(corrector) { corrector.insert_after(range, ' ') }
|
34
|
+
register_offense(colon) unless followed_by_space?(colon)
|
37
35
|
end
|
38
36
|
|
39
37
|
private
|
40
38
|
|
39
|
+
def register_offense(colon)
|
40
|
+
add_offense(colon) do |corrector|
|
41
|
+
corrector.insert_after(colon, ' ')
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
41
45
|
def followed_by_space?(colon)
|
42
46
|
/\s/.match?(colon.source_buffer.source[colon.end_pos])
|
43
47
|
end
|
@@ -14,12 +14,9 @@ module RuboCop
|
|
14
14
|
# # good
|
15
15
|
# [1, 2]
|
16
16
|
# { foo:bar, }
|
17
|
-
class SpaceAfterComma <
|
17
|
+
class SpaceAfterComma < Base
|
18
18
|
include SpaceAfterPunctuation
|
19
|
-
|
20
|
-
def autocorrect(comma)
|
21
|
-
PunctuationCorrector.add_space(comma)
|
22
|
-
end
|
19
|
+
extend AutoCorrector
|
23
20
|
|
24
21
|
def space_style_before_rcurly
|
25
22
|
cfg = config.for_cop('Layout/SpaceInsideHashLiteralBraces')
|
@@ -14,8 +14,9 @@ module RuboCop
|
|
14
14
|
# # good
|
15
15
|
# def func(x) end
|
16
16
|
# def method=(y) end
|
17
|
-
class SpaceAfterMethodName <
|
17
|
+
class SpaceAfterMethodName < Base
|
18
18
|
include RangeHelp
|
19
|
+
extend AutoCorrector
|
19
20
|
|
20
21
|
MSG = 'Do not put a space between a method name and the opening ' \
|
21
22
|
'parenthesis.'
|
@@ -29,13 +30,11 @@ module RuboCop
|
|
29
30
|
expr.begin_pos)
|
30
31
|
return unless pos_before_left_paren.source.start_with?(' ')
|
31
32
|
|
32
|
-
add_offense(pos_before_left_paren
|
33
|
+
add_offense(pos_before_left_paren) do |corrector|
|
34
|
+
corrector.remove(pos_before_left_paren)
|
35
|
+
end
|
33
36
|
end
|
34
37
|
alias on_defs on_def
|
35
|
-
|
36
|
-
def autocorrect(pos_before_left_paren)
|
37
|
-
->(corrector) { corrector.remove(pos_before_left_paren) }
|
38
|
-
end
|
39
38
|
end
|
40
39
|
end
|
41
40
|
end
|
@@ -11,29 +11,27 @@ module RuboCop
|
|
11
11
|
#
|
12
12
|
# # good
|
13
13
|
# !something
|
14
|
-
class SpaceAfterNot <
|
14
|
+
class SpaceAfterNot < Base
|
15
15
|
include RangeHelp
|
16
|
+
extend AutoCorrector
|
16
17
|
|
17
18
|
MSG = 'Do not leave space between `!` and its argument.'
|
18
19
|
|
19
20
|
def on_send(node)
|
20
21
|
return unless node.prefix_bang? && whitespace_after_operator?(node)
|
21
22
|
|
22
|
-
add_offense(node)
|
23
|
+
add_offense(node) do |corrector|
|
24
|
+
corrector.remove(
|
25
|
+
range_between(node.loc.selector.end_pos, node.receiver.source_range.begin_pos)
|
26
|
+
)
|
27
|
+
end
|
23
28
|
end
|
24
29
|
|
30
|
+
private
|
31
|
+
|
25
32
|
def whitespace_after_operator?(node)
|
26
33
|
node.receiver.loc.column - node.loc.column > 1
|
27
34
|
end
|
28
|
-
|
29
|
-
def autocorrect(node)
|
30
|
-
lambda do |corrector|
|
31
|
-
corrector.remove(
|
32
|
-
range_between(node.loc.selector.end_pos,
|
33
|
-
node.receiver.source_range.begin_pos)
|
34
|
-
)
|
35
|
-
end
|
36
|
-
end
|
37
35
|
end
|
38
36
|
end
|
39
37
|
end
|
@@ -11,12 +11,9 @@ module RuboCop
|
|
11
11
|
#
|
12
12
|
# # good
|
13
13
|
# x = 1; y = 2
|
14
|
-
class SpaceAfterSemicolon <
|
14
|
+
class SpaceAfterSemicolon < Base
|
15
15
|
include SpaceAfterPunctuation
|
16
|
-
|
17
|
-
def autocorrect(semicolon)
|
18
|
-
PunctuationCorrector.add_space(semicolon)
|
19
|
-
end
|
16
|
+
extend AutoCorrector
|
20
17
|
|
21
18
|
def space_style_before_rcurly
|
22
19
|
cfg = config.for_cop('Layout/SpaceInsideBlockBraces')
|
@@ -56,11 +56,12 @@ module RuboCop
|
|
56
56
|
def check_inside_pipes(arguments)
|
57
57
|
opening_pipe, closing_pipe = pipes(arguments)
|
58
58
|
|
59
|
-
|
59
|
+
case style
|
60
|
+
when :no_space
|
60
61
|
check_no_space_style_inside_pipes(arguments.children,
|
61
62
|
opening_pipe,
|
62
63
|
closing_pipe)
|
63
|
-
|
64
|
+
when :space
|
64
65
|
check_space_style_inside_pipes(arguments.children,
|
65
66
|
opening_pipe,
|
66
67
|
closing_pipe)
|
@@ -27,10 +27,11 @@ module RuboCop
|
|
27
27
|
# def some_method(arg1=:default, arg2=nil, arg3=[])
|
28
28
|
# # do something...
|
29
29
|
# end
|
30
|
-
class SpaceAroundEqualsInParameterDefault <
|
30
|
+
class SpaceAroundEqualsInParameterDefault < Base
|
31
31
|
include SurroundingSpace
|
32
32
|
include ConfigurableEnforcedStyle
|
33
33
|
include RangeHelp
|
34
|
+
extend AutoCorrector
|
34
35
|
|
35
36
|
MSG = 'Surrounding space %<type>s in default value assignment.'
|
36
37
|
|
@@ -40,13 +41,6 @@ module RuboCop
|
|
40
41
|
check_optarg(arg, equals, value)
|
41
42
|
end
|
42
43
|
|
43
|
-
def autocorrect(range)
|
44
|
-
m = range.source.match(/=\s*(\S+)/)
|
45
|
-
rest = m ? m.captures[0] : ''
|
46
|
-
replacement = style == :space ? ' = ' : '='
|
47
|
-
->(corrector) { corrector.replace(range, replacement + rest) }
|
48
|
-
end
|
49
|
-
|
50
44
|
private
|
51
45
|
|
52
46
|
def check_optarg(arg, equals, value)
|
@@ -65,14 +59,25 @@ module RuboCop
|
|
65
59
|
def incorrect_style_detected(arg, value, space_on_both_sides,
|
66
60
|
no_surrounding_space)
|
67
61
|
range = range_between(arg.end_pos, value.begin_pos)
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
end
|
62
|
+
|
63
|
+
if style == :space && no_surrounding_space ||
|
64
|
+
style == :no_space && space_on_both_sides
|
65
|
+
return unless opposite_style_detected
|
66
|
+
else
|
67
|
+
return unless unrecognized_style_detected
|
75
68
|
end
|
69
|
+
|
70
|
+
add_offense(range) do |corrector|
|
71
|
+
autocorrect(corrector, range)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def autocorrect(corrector, range)
|
76
|
+
m = range.source.match(/=\s*(\S+)/)
|
77
|
+
rest = m ? m.captures[0] : ''
|
78
|
+
replacement = style == :space ? ' = ' : '='
|
79
|
+
|
80
|
+
corrector.replace(range, replacement + rest)
|
76
81
|
end
|
77
82
|
|
78
83
|
def space_on_both_sides?(arg, equals)
|