rubocop 0.88.0 → 0.89.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/bin/rubocop-profile +1 -0
- data/config/default.yml +96 -16
- data/lib/rubocop.rb +16 -4
- data/lib/rubocop/cli/command/auto_genenerate_config.rb +1 -1
- data/lib/rubocop/cli/command/base.rb +1 -0
- data/lib/rubocop/cli/command/execute_runner.rb +1 -1
- data/lib/rubocop/cli/command/show_cops.rb +2 -2
- data/lib/rubocop/cli/command/version.rb +2 -2
- data/lib/rubocop/comment_config.rb +5 -7
- data/lib/rubocop/config.rb +20 -3
- data/lib/rubocop/config_loader.rb +2 -2
- data/lib/rubocop/config_loader_resolver.rb +3 -3
- data/lib/rubocop/config_obsoletion.rb +6 -1
- data/lib/rubocop/config_validator.rb +2 -4
- data/lib/rubocop/cop/base.rb +2 -2
- data/lib/rubocop/cop/commissioner.rb +0 -1
- data/lib/rubocop/cop/correctors/line_break_corrector.rb +4 -4
- data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +2 -2
- data/lib/rubocop/cop/correctors/punctuation_corrector.rb +1 -1
- data/lib/rubocop/cop/correctors/unused_arg_corrector.rb +15 -18
- data/lib/rubocop/cop/force.rb +1 -0
- data/lib/rubocop/cop/gemspec/required_ruby_version.rb +32 -11
- 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 +1 -1
- data/lib/rubocop/cop/layout/class_structure.rb +3 -7
- data/lib/rubocop/cop/layout/comment_indentation.rb +1 -1
- data/lib/rubocop/cop/layout/empty_lines.rb +0 -2
- data/lib/rubocop/cop/layout/extra_spacing.rb +22 -36
- data/lib/rubocop/cop/layout/first_method_argument_line_break.rb +1 -1
- data/lib/rubocop/cop/layout/heredoc_indentation.rb +2 -2
- data/lib/rubocop/cop/layout/indentation_style.rb +0 -2
- data/lib/rubocop/cop/layout/leading_comment_space.rb +1 -1
- data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +1 -1
- data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +0 -2
- data/lib/rubocop/cop/layout/space_around_method_call_operator.rb +9 -1
- 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 +1 -1
- 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 +17 -13
- data/lib/rubocop/cop/lint/duplicate_case_condition.rb +1 -1
- data/lib/rubocop/cop/lint/duplicate_hash_key.rb +1 -1
- data/lib/rubocop/cop/lint/duplicate_methods.rb +7 -4
- data/lib/rubocop/cop/lint/duplicate_rescue_exception.rb +60 -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_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 +2 -2
- 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 +4 -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 +1 -1
- data/lib/rubocop/cop/lint/multiple_comparison.rb +6 -9
- data/lib/rubocop/cop/lint/nested_method_definition.rb +1 -1
- 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 +27 -23
- 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 +90 -0
- data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +4 -10
- data/lib/rubocop/cop/lint/percent_string_array.rb +13 -12
- 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 +3 -3
- 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/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_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 +48 -5
- data/lib/rubocop/cop/metrics/utils/code_length_calculator.rb +52 -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 +2 -1
- data/lib/rubocop/cop/mixin/array_min_size.rb +1 -1
- data/lib/rubocop/cop/mixin/check_line_breakable.rb +2 -2
- data/lib/rubocop/cop/mixin/code_length.rb +22 -5
- data/lib/rubocop/cop/mixin/hash_transform_method.rb +5 -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_literal_brace_layout.rb +1 -2
- data/lib/rubocop/cop/mixin/percent_array.rb +2 -6
- data/lib/rubocop/cop/mixin/range_help.rb +18 -4
- data/lib/rubocop/cop/mixin/statement_modifier.rb +37 -8
- data/lib/rubocop/cop/mixin/surrounding_space.rb +0 -25
- data/lib/rubocop/cop/mixin/trailing_comma.rb +2 -4
- data/lib/rubocop/cop/mixin/uncommunicative_name.rb +6 -13
- data/lib/rubocop/cop/mixin/unused_argument.rb +4 -6
- 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/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/style/access_modifier_declarations.rb +16 -9
- data/lib/rubocop/cop/style/accessor_grouping.rb +23 -21
- 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_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 +2 -5
- 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 +9 -14
- 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 +22 -3
- data/lib/rubocop/cop/style/case_like_if.rb +19 -16
- 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_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/command_literal.rb +23 -24
- data/lib/rubocop/cop/style/comment_annotation.rb +15 -15
- data/lib/rubocop/cop/style/commented_keyword.rb +1 -1
- data/lib/rubocop/cop/style/conditional_assignment.rb +12 -3
- 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_case_condition.rb +19 -20
- data/lib/rubocop/cop/style/empty_else.rb +17 -19
- 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 +1 -1
- data/lib/rubocop/cop/style/float_division.rb +1 -1
- 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 +5 -7
- 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 +5 -6
- data/lib/rubocop/cop/style/hash_as_last_array_item.rb +8 -1
- data/lib/rubocop/cop/style/hash_each_methods.rb +5 -8
- data/lib/rubocop/cop/style/hash_syntax.rb +4 -3
- data/lib/rubocop/cop/style/hash_transform_keys.rb +3 -2
- data/lib/rubocop/cop/style/hash_transform_values.rb +2 -1
- 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 +10 -32
- 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/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 +2 -2
- 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 +13 -13
- 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 +7 -9
- 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/nested_parenthesized_calls.rb +3 -1
- data/lib/rubocop/cop/style/numeric_predicate.rb +4 -0
- data/lib/rubocop/cop/style/optional_boolean_parameter.rb +42 -0
- data/lib/rubocop/cop/style/parallel_assignment.rb +2 -2
- data/lib/rubocop/cop/style/percent_literal_delimiters.rb +2 -2
- data/lib/rubocop/cop/style/random_with_offset.rb +1 -0
- data/lib/rubocop/cop/style/redundant_condition.rb +15 -3
- data/lib/rubocop/cop/style/redundant_exception.rb +4 -0
- data/lib/rubocop/cop/style/redundant_regexp_escape.rb +9 -9
- data/lib/rubocop/cop/style/redundant_sort.rb +23 -10
- data/lib/rubocop/cop/style/safe_navigation.rb +4 -4
- data/lib/rubocop/cop/style/signal_exception.rb +2 -0
- data/lib/rubocop/cop/style/single_argument_dig.rb +54 -0
- data/lib/rubocop/cop/style/single_line_methods.rb +1 -1
- data/lib/rubocop/cop/style/string_concatenation.rb +92 -0
- data/lib/rubocop/cop/style/struct_inheritance.rb +1 -1
- data/lib/rubocop/cop/style/symbol_array.rb +1 -1
- data/lib/rubocop/cop/style/symbol_proc.rb +1 -1
- data/lib/rubocop/cop/style/trailing_method_end_statement.rb +1 -1
- data/lib/rubocop/cop/style/zero_length_predicate.rb +10 -6
- data/lib/rubocop/cop/team.rb +1 -1
- data/lib/rubocop/cop/tokens_util.rb +84 -0
- data/lib/rubocop/cop/util.rb +3 -13
- data/lib/rubocop/cop/variable_force.rb +0 -2
- data/lib/rubocop/cop/variable_force/branch.rb +1 -0
- data/lib/rubocop/cop/variable_force/variable.rb +2 -2
- data/lib/rubocop/cops_documentation_generator.rb +282 -0
- data/lib/rubocop/error.rb +1 -0
- data/lib/rubocop/formatter/disabled_config_formatter.rb +1 -1
- data/lib/rubocop/formatter/formatter_set.rb +1 -0
- data/lib/rubocop/formatter/junit_formatter.rb +1 -1
- data/lib/rubocop/options.rb +3 -3
- data/lib/rubocop/path_util.rb +19 -4
- data/lib/rubocop/rake_task.rb +1 -0
- data/lib/rubocop/rspec/expect_offense.rb +1 -1
- data/lib/rubocop/rspec/shared_contexts.rb +1 -5
- data/lib/rubocop/runner.rb +1 -1
- data/lib/rubocop/target_finder.rb +12 -9
- data/lib/rubocop/version.rb +2 -2
- metadata +21 -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
@@ -25,9 +25,9 @@ module RuboCop
|
|
25
25
|
target_line = find_target_line
|
26
26
|
if target_line
|
27
27
|
configuration_entries.insert(target_line,
|
28
|
-
new_configuration_entry
|
28
|
+
"#{new_configuration_entry}\n")
|
29
29
|
else
|
30
|
-
configuration_entries.push("\n"
|
30
|
+
configuration_entries.push("\n#{new_configuration_entry}")
|
31
31
|
end
|
32
32
|
|
33
33
|
File.write(configuration_file_path, configuration_entries.join)
|
@@ -12,8 +12,9 @@ module RuboCop
|
|
12
12
|
# # good
|
13
13
|
# node.method?(:do_something)
|
14
14
|
#
|
15
|
-
class MethodNameEqual <
|
15
|
+
class MethodNameEqual < Base
|
16
16
|
include RangeHelp
|
17
|
+
extend AutoCorrector
|
17
18
|
|
18
19
|
MSG = 'Use `method?(%<method_name>s)` instead of ' \
|
19
20
|
'`method_name == %<method_name>s`.'
|
@@ -31,17 +32,8 @@ module RuboCop
|
|
31
32
|
|
32
33
|
range = range(method_name_node, node)
|
33
34
|
|
34
|
-
add_offense(
|
35
|
-
|
36
|
-
end
|
37
|
-
|
38
|
-
def autocorrect(node)
|
39
|
-
lambda do |corrector|
|
40
|
-
method_name?(node) do |method_name_node, method_name_arg|
|
41
|
-
corrector.replace(
|
42
|
-
range(method_name_node, node),
|
43
|
-
"method?(#{method_name_arg.first.source})"
|
44
|
-
)
|
35
|
+
add_offense(range, message: message) do |corrector|
|
36
|
+
corrector.replace(range, "method?(#{method_name_arg.first.source})")
|
45
37
|
end
|
46
38
|
end
|
47
39
|
end
|
@@ -13,24 +13,24 @@ module RuboCop
|
|
13
13
|
#
|
14
14
|
# # good
|
15
15
|
# add_offense(node, location: :selector)
|
16
|
-
class OffenseLocationKeyword <
|
16
|
+
class OffenseLocationKeyword < Base
|
17
|
+
extend AutoCorrector
|
18
|
+
|
17
19
|
MSG = 'Use `:%<keyword>s` as the location argument to ' \
|
18
20
|
'`#add_offense`.'
|
19
21
|
|
20
22
|
def on_send(node)
|
21
23
|
node_type_check(node) do |node_arg, kwargs|
|
22
24
|
find_offending_argument(node_arg, kwargs) do |location, keyword|
|
23
|
-
add_offense(location, message: format(MSG, keyword: keyword))
|
25
|
+
add_offense(location, message: format(MSG, keyword: keyword)) do |corrector|
|
26
|
+
(*, keyword) = offending_location_argument(location.parent)
|
27
|
+
|
28
|
+
corrector.replace(location, ":#{keyword}")
|
29
|
+
end
|
24
30
|
end
|
25
31
|
end
|
26
32
|
end
|
27
33
|
|
28
|
-
def autocorrect(node)
|
29
|
-
(*, keyword) = offending_location_argument(node.parent)
|
30
|
-
|
31
|
-
->(corrector) { corrector.replace(node, ":#{keyword}") }
|
32
|
-
end
|
33
|
-
|
34
34
|
private
|
35
35
|
|
36
36
|
def_node_matcher :node_type_check, <<~PATTERN
|
@@ -16,8 +16,9 @@ module RuboCop
|
|
16
16
|
# add_offense(node)
|
17
17
|
# add_offense(node, location: :selector)
|
18
18
|
#
|
19
|
-
class RedundantLocationArgument <
|
19
|
+
class RedundantLocationArgument < Base
|
20
20
|
include RangeHelp
|
21
|
+
extend AutoCorrector
|
21
22
|
|
22
23
|
MSG = 'Redundant location argument to `#add_offense`.'
|
23
24
|
|
@@ -28,15 +29,17 @@ module RuboCop
|
|
28
29
|
PATTERN
|
29
30
|
|
30
31
|
def on_send(node)
|
31
|
-
redundant_location_argument(node)
|
32
|
-
|
33
|
-
|
34
|
-
def autocorrect(node)
|
35
|
-
range = offending_range(node)
|
32
|
+
redundant_location_argument(node) do |argument|
|
33
|
+
add_offense(argument) do |corrector|
|
34
|
+
range = offending_range(argument)
|
36
35
|
|
37
|
-
|
36
|
+
corrector.remove(range)
|
37
|
+
end
|
38
|
+
end
|
38
39
|
end
|
39
40
|
|
41
|
+
private
|
42
|
+
|
40
43
|
def offending_range(node)
|
41
44
|
with_space = range_with_surrounding_space(range: node.loc.expression)
|
42
45
|
|
@@ -19,8 +19,9 @@ module RuboCop
|
|
19
19
|
# add_offense(node, message: CUSTOM_MSG)
|
20
20
|
# add_offense(node, message: message(other_node))
|
21
21
|
#
|
22
|
-
class RedundantMessageArgument <
|
22
|
+
class RedundantMessageArgument < Base
|
23
23
|
include RangeHelp
|
24
|
+
extend AutoCorrector
|
24
25
|
|
25
26
|
MSG = 'Redundant message argument to `#add_offense`.'
|
26
27
|
|
@@ -39,17 +40,15 @@ module RuboCop
|
|
39
40
|
def on_send(node)
|
40
41
|
node_type_check(node) do |node_arg, kwargs|
|
41
42
|
find_offending_argument(node_arg, kwargs) do |pair|
|
42
|
-
add_offense(pair)
|
43
|
+
add_offense(pair) do |corrector|
|
44
|
+
range = offending_range(pair)
|
45
|
+
|
46
|
+
corrector.remove(range)
|
47
|
+
end
|
43
48
|
end
|
44
49
|
end
|
45
50
|
end
|
46
51
|
|
47
|
-
def autocorrect(node)
|
48
|
-
range = offending_range(node)
|
49
|
-
|
50
|
-
->(corrector) { corrector.remove(range) }
|
51
|
-
end
|
52
|
-
|
53
52
|
private
|
54
53
|
|
55
54
|
def offending_range(node)
|
@@ -13,7 +13,7 @@ module RuboCop
|
|
13
13
|
# # good
|
14
14
|
# expect(cop.messages).to eq(['Do not write bad code like that.'])
|
15
15
|
#
|
16
|
-
class UselessMessageAssertion <
|
16
|
+
class UselessMessageAssertion < Base
|
17
17
|
MSG = 'Do not specify cop behavior using `described_class::MSG`.'
|
18
18
|
|
19
19
|
def_node_search :described_class_msg, <<~PATTERN
|
@@ -24,7 +24,7 @@ module RuboCop
|
|
24
24
|
(send (send nil? :expect #contains_described_class_msg?) :to ...)
|
25
25
|
PATTERN
|
26
26
|
|
27
|
-
def
|
27
|
+
def on_new_investigation
|
28
28
|
assertions_using_described_class_msg.each do |node|
|
29
29
|
add_offense(node)
|
30
30
|
end
|
@@ -269,15 +269,11 @@ module RuboCop
|
|
269
269
|
end
|
270
270
|
|
271
271
|
def begin_pos_with_comment(node)
|
272
|
-
annotation_line = node.first_line - 1
|
273
272
|
first_comment = nil
|
273
|
+
(node.first_line - 1).downto(1) do |annotation_line|
|
274
|
+
break unless (comment = processed_source.comment_at_line(annotation_line))
|
274
275
|
|
275
|
-
|
276
|
-
.reverse_each do |comment|
|
277
|
-
if comment.location.line == annotation_line
|
278
|
-
first_comment = comment
|
279
|
-
annotation_line -= 1
|
280
|
-
end
|
276
|
+
first_comment = comment
|
281
277
|
end
|
282
278
|
|
283
279
|
start_line_position(first_comment || node)
|
@@ -39,7 +39,7 @@ module RuboCop
|
|
39
39
|
'instead of %<correct_comment_indentation>d).'
|
40
40
|
|
41
41
|
def investigate(processed_source)
|
42
|
-
processed_source.
|
42
|
+
processed_source.comments.each { |comment| check(comment) }
|
43
43
|
end
|
44
44
|
|
45
45
|
def autocorrect(comment)
|
@@ -1,7 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'set'
|
4
|
-
|
5
3
|
module RuboCop
|
6
4
|
module Cop
|
7
5
|
module Layout
|
@@ -30,7 +28,8 @@ module RuboCop
|
|
30
28
|
# object.method(arg) # this is a comment
|
31
29
|
# another_object.method(arg) # this is another comment
|
32
30
|
# some_object.method(arg) # this is some comment
|
33
|
-
class ExtraSpacing <
|
31
|
+
class ExtraSpacing < Base
|
32
|
+
extend AutoCorrector
|
34
33
|
include PrecedingFollowingAlignment
|
35
34
|
include RangeHelp
|
36
35
|
|
@@ -38,9 +37,10 @@ module RuboCop
|
|
38
37
|
MSG_UNALIGNED_ASGN = '`=` is not aligned with the %<location>s ' \
|
39
38
|
'assignment.'
|
40
39
|
|
41
|
-
def
|
40
|
+
def on_new_investigation
|
42
41
|
return if processed_source.blank?
|
43
42
|
|
43
|
+
@aligned_comments = aligned_locations(processed_source.comments.map(&:loc))
|
44
44
|
@corrected = Set.new if force_equal_sign_alignment?
|
45
45
|
|
46
46
|
processed_source.tokens.each_cons(2) do |token1, token2|
|
@@ -48,18 +48,20 @@ module RuboCop
|
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
51
|
+
private
|
52
|
+
|
53
|
+
def aligned_locations(locs)
|
54
|
+
return [] if locs.empty?
|
55
|
+
|
56
|
+
aligned = Set[locs.first.line, locs.last.line]
|
57
|
+
locs.each_cons(3) do |before, loc, after|
|
58
|
+
col = loc.column
|
59
|
+
aligned << loc.line if col == before.column || # rubocop:disable Style/MultipleComparison
|
60
|
+
col == after.column
|
58
61
|
end
|
62
|
+
aligned
|
59
63
|
end
|
60
64
|
|
61
|
-
private
|
62
|
-
|
63
65
|
def check_tokens(ast, token1, token2)
|
64
66
|
return if token2.type == :tNL
|
65
67
|
|
@@ -74,7 +76,9 @@ module RuboCop
|
|
74
76
|
return unless aligned_with_preceding_assignment(token) == :no
|
75
77
|
|
76
78
|
message = format(MSG_UNALIGNED_ASGN, location: 'preceding')
|
77
|
-
add_offense(token.pos,
|
79
|
+
add_offense(token.pos, message: message) do |corrector|
|
80
|
+
align_equal_signs(token.pos, corrector)
|
81
|
+
end
|
78
82
|
end
|
79
83
|
|
80
84
|
def check_other(token1, token2, ast)
|
@@ -84,7 +88,9 @@ module RuboCop
|
|
84
88
|
extra_space_range(token1, token2) do |range|
|
85
89
|
next if ignored_range?(ast, range.begin_pos)
|
86
90
|
|
87
|
-
add_offense(range,
|
91
|
+
add_offense(range, message: MSG_UNNECESSARY) do |corrector|
|
92
|
+
corrector.remove(range)
|
93
|
+
end
|
88
94
|
end
|
89
95
|
end
|
90
96
|
|
@@ -102,7 +108,7 @@ module RuboCop
|
|
102
108
|
|
103
109
|
def aligned_tok?(token)
|
104
110
|
if token.comment?
|
105
|
-
aligned_comments?(token)
|
111
|
+
@aligned_comments.include?(token.line)
|
106
112
|
else
|
107
113
|
aligned_with_something?(token.pos)
|
108
114
|
end
|
@@ -126,26 +132,6 @@ module RuboCop
|
|
126
132
|
end.compact
|
127
133
|
end
|
128
134
|
|
129
|
-
def aligned_comments?(comment_token)
|
130
|
-
ix = processed_source.comments.index do |comment|
|
131
|
-
comment.loc.expression.begin_pos == comment_token.begin_pos
|
132
|
-
end
|
133
|
-
aligned_with_previous_comment?(ix) || aligned_with_next_comment?(ix)
|
134
|
-
end
|
135
|
-
|
136
|
-
def aligned_with_previous_comment?(index)
|
137
|
-
index.positive? && comment_column(index - 1) == comment_column(index)
|
138
|
-
end
|
139
|
-
|
140
|
-
def aligned_with_next_comment?(index)
|
141
|
-
index < processed_source.comments.length - 1 &&
|
142
|
-
comment_column(index + 1) == comment_column(index)
|
143
|
-
end
|
144
|
-
|
145
|
-
def comment_column(index)
|
146
|
-
processed_source.comments[index].loc.column
|
147
|
-
end
|
148
|
-
|
149
135
|
def force_equal_sign_alignment?
|
150
136
|
cop_config['ForceEqualSignAlignment']
|
151
137
|
end
|
@@ -161,11 +161,11 @@ module RuboCop
|
|
161
161
|
end
|
162
162
|
|
163
163
|
def heredoc_body(node)
|
164
|
-
node.loc.heredoc_body.source
|
164
|
+
node.loc.heredoc_body.source
|
165
165
|
end
|
166
166
|
|
167
167
|
def heredoc_end(node)
|
168
|
-
node.loc.heredoc_end.source
|
168
|
+
node.loc.heredoc_end.source
|
169
169
|
end
|
170
170
|
end
|
171
171
|
end
|
@@ -55,7 +55,7 @@ module RuboCop
|
|
55
55
|
MSG = 'Missing space after `#`.'
|
56
56
|
|
57
57
|
def investigate(processed_source)
|
58
|
-
processed_source.
|
58
|
+
processed_source.comments.each do |comment|
|
59
59
|
next unless /\A#+[^#\s=:+-]/.match?(comment.text)
|
60
60
|
next if comment.loc.line == 1 && allowed_on_first_line?(comment)
|
61
61
|
next if doxygen_comment_style?(comment)
|
@@ -37,7 +37,7 @@ module RuboCop
|
|
37
37
|
# ...then each key/value pair is treated as a method 'argument'
|
38
38
|
# when determining where line breaks should appear.
|
39
39
|
if (last_arg = args.last)
|
40
|
-
args = args.
|
40
|
+
args = args[0...-1] + last_arg.children if last_arg.hash_type? && !last_arg.braces?
|
41
41
|
end
|
42
42
|
|
43
43
|
check_line_breaks(node, args)
|
@@ -96,7 +96,6 @@ module RuboCop
|
|
96
96
|
)
|
97
97
|
end
|
98
98
|
|
99
|
-
# rubocop:disable Metrics/AbcSize
|
100
99
|
def alignment_source(node, starting_loc)
|
101
100
|
ending_loc =
|
102
101
|
case node.type
|
@@ -115,7 +114,6 @@ module RuboCop
|
|
115
114
|
|
116
115
|
range_between(starting_loc.begin_pos, ending_loc.end_pos).source
|
117
116
|
end
|
118
|
-
# rubocop:enable Metrics/AbcSize
|
119
117
|
|
120
118
|
# We will use ancestor or wrapper with access modifier.
|
121
119
|
|
@@ -66,7 +66,15 @@ module RuboCop
|
|
66
66
|
|
67
67
|
def check_space_after_dot(node)
|
68
68
|
dot_pos = node.loc.dot.end_pos
|
69
|
-
|
69
|
+
|
70
|
+
selector_pos =
|
71
|
+
# `Proc#call` shorthand syntax
|
72
|
+
if node.method?(:call) && !node.loc.selector
|
73
|
+
node.loc.begin.begin_pos
|
74
|
+
else
|
75
|
+
node.loc.selector.begin_pos
|
76
|
+
end
|
77
|
+
|
70
78
|
check_space(dot_pos, selector_pos)
|
71
79
|
end
|
72
80
|
|
@@ -24,18 +24,21 @@ module RuboCop
|
|
24
24
|
# # good
|
25
25
|
# # Lambda arguments require no disambiguation
|
26
26
|
# foo = ->(bar) { bar.baz }
|
27
|
-
class AmbiguousBlockAssociation <
|
27
|
+
class AmbiguousBlockAssociation < Base
|
28
28
|
MSG = 'Parenthesize the param `%<param>s` to make sure that the ' \
|
29
29
|
'block will be associated with the `%<method>s` method ' \
|
30
30
|
'call.'
|
31
31
|
|
32
32
|
def on_send(node)
|
33
|
-
return
|
34
|
-
node.last_argument.lambda? || allowed_method?(node)
|
33
|
+
return unless node.arguments?
|
35
34
|
|
36
35
|
return unless ambiguous_block_association?(node)
|
36
|
+
return if node.parenthesized? ||
|
37
|
+
node.last_argument.lambda? || allowed_method?(node)
|
38
|
+
|
39
|
+
message = message(node)
|
37
40
|
|
38
|
-
add_offense(node)
|
41
|
+
add_offense(node, message: message)
|
39
42
|
end
|
40
43
|
alias on_csend on_send
|
41
44
|
|