rubocop 0.80.1 → 0.85.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +4 -4
- data/config/default.yml +202 -49
- data/lib/rubocop.rb +20 -61
- data/lib/rubocop/ast_aliases.rb +8 -0
- data/lib/rubocop/cli.rb +13 -7
- data/lib/rubocop/cli/command/auto_genenerate_config.rb +2 -2
- data/lib/rubocop/cli/command/show_cops.rb +2 -6
- data/lib/rubocop/comment_config.rb +1 -1
- data/lib/rubocop/config.rb +14 -2
- data/lib/rubocop/config_loader.rb +37 -33
- data/lib/rubocop/config_loader_resolver.rb +45 -6
- data/lib/rubocop/config_obsoletion.rb +2 -0
- data/lib/rubocop/config_store.rb +12 -2
- data/lib/rubocop/config_validator.rb +18 -1
- data/lib/rubocop/cop/autocorrect_logic.rb +1 -2
- data/lib/rubocop/cop/badge.rb +5 -5
- data/lib/rubocop/cop/bundler/gem_comment.rb +70 -1
- data/lib/rubocop/cop/bundler/insecure_protocol_source.rb +1 -1
- data/lib/rubocop/cop/commissioner.rb +0 -21
- data/lib/rubocop/cop/cop.rb +14 -6
- data/lib/rubocop/cop/corrector.rb +48 -24
- data/lib/rubocop/cop/correctors/alignment_corrector.rb +4 -8
- data/lib/rubocop/cop/correctors/condition_corrector.rb +1 -2
- data/lib/rubocop/cop/correctors/empty_line_corrector.rb +1 -1
- data/lib/rubocop/cop/correctors/lambda_literal_to_method_corrector.rb +4 -4
- data/lib/rubocop/cop/correctors/line_break_corrector.rb +2 -2
- data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +1 -1
- data/lib/rubocop/cop/correctors/space_corrector.rb +1 -3
- data/lib/rubocop/cop/correctors/string_literal_corrector.rb +2 -2
- data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +1 -3
- data/lib/rubocop/cop/generator.rb +4 -3
- data/lib/rubocop/cop/ignored_node.rb +1 -3
- data/lib/rubocop/cop/internal_affairs/offense_location_keyword.rb +1 -1
- data/lib/rubocop/cop/layout/array_alignment.rb +53 -10
- data/lib/rubocop/cop/layout/block_end_newline.rb +5 -3
- data/lib/rubocop/cop/layout/case_indentation.rb +3 -3
- data/lib/rubocop/cop/layout/class_structure.rb +19 -16
- data/lib/rubocop/cop/layout/condition_position.rb +12 -2
- data/lib/rubocop/cop/layout/dot_position.rb +1 -1
- data/lib/rubocop/cop/layout/else_alignment.rb +8 -0
- data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +2 -6
- data/lib/rubocop/cop/layout/empty_lines_around_attribute_accessor.rb +126 -0
- data/lib/rubocop/cop/layout/end_of_line.rb +2 -2
- data/lib/rubocop/cop/layout/first_argument_indentation.rb +1 -3
- data/lib/rubocop/cop/layout/first_array_element_indentation.rb +14 -10
- data/lib/rubocop/cop/layout/first_array_element_line_break.rb +1 -1
- data/lib/rubocop/cop/layout/first_hash_element_indentation.rb +1 -1
- data/lib/rubocop/cop/layout/first_method_argument_line_break.rb +1 -3
- data/lib/rubocop/cop/layout/first_parameter_indentation.rb +2 -2
- data/lib/rubocop/cop/layout/hash_alignment.rb +6 -6
- data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +5 -9
- data/lib/rubocop/cop/layout/heredoc_indentation.rb +20 -103
- data/lib/rubocop/cop/layout/{tab.rb → indentation_style.rb} +48 -6
- data/lib/rubocop/cop/layout/indentation_width.rb +1 -3
- data/lib/rubocop/cop/layout/leading_comment_space.rb +1 -1
- data/lib/rubocop/cop/layout/line_length.rb +23 -20
- data/lib/rubocop/cop/layout/multiline_block_layout.rb +1 -1
- data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +1 -3
- data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +1 -1
- data/lib/rubocop/cop/layout/multiline_operation_indentation.rb +13 -4
- data/lib/rubocop/cop/layout/space_around_block_parameters.rb +3 -3
- data/lib/rubocop/cop/layout/space_around_keyword.rb +2 -2
- data/lib/rubocop/cop/layout/space_around_method_call_operator.rb +131 -0
- data/lib/rubocop/cop/layout/space_around_operators.rb +19 -2
- data/lib/rubocop/cop/layout/space_before_comment.rb +1 -3
- data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +1 -1
- data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +1 -3
- data/lib/rubocop/cop/layout/space_inside_block_braces.rb +2 -2
- data/lib/rubocop/cop/layout/space_inside_range_literal.rb +2 -2
- data/lib/rubocop/cop/layout/space_inside_reference_brackets.rb +1 -3
- data/lib/rubocop/cop/layout/trailing_whitespace.rb +2 -2
- data/lib/rubocop/cop/lint/ambiguous_operator.rb +41 -0
- data/lib/rubocop/cop/lint/ambiguous_regexp_literal.rb +14 -0
- data/lib/rubocop/cop/lint/boolean_symbol.rb +12 -0
- data/lib/rubocop/cop/lint/debugger.rb +1 -1
- data/lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb +137 -0
- data/lib/rubocop/cop/lint/duplicate_methods.rb +1 -5
- data/lib/rubocop/cop/lint/empty_when.rb +29 -6
- data/lib/rubocop/cop/lint/ensure_return.rb +19 -2
- data/lib/rubocop/cop/lint/erb_new_arguments.rb +2 -4
- data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +1 -1
- data/lib/rubocop/cop/lint/inherit_exception.rb +1 -1
- data/lib/rubocop/cop/lint/interpolation_check.rb +1 -1
- data/lib/rubocop/cop/lint/literal_as_condition.rb +10 -13
- data/lib/rubocop/cop/lint/literal_in_interpolation.rb +1 -1
- data/lib/rubocop/cop/lint/loop.rb +7 -5
- data/lib/rubocop/cop/lint/mixed_regexp_capture_types.rb +62 -0
- data/lib/rubocop/cop/lint/multiple_comparison.rb +1 -1
- data/lib/rubocop/cop/lint/nested_method_definition.rb +2 -2
- data/lib/rubocop/cop/lint/nested_percent_literal.rb +1 -1
- data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +2 -2
- data/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +7 -7
- data/lib/rubocop/cop/lint/number_conversion.rb +1 -1
- data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +33 -11
- data/lib/rubocop/cop/lint/percent_string_array.rb +2 -4
- data/lib/rubocop/cop/lint/raise_exception.rb +75 -0
- data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +1 -6
- data/lib/rubocop/cop/lint/redundant_require_statement.rb +3 -3
- data/lib/rubocop/cop/lint/redundant_string_coercion.rb +1 -1
- data/lib/rubocop/cop/lint/rescue_exception.rb +1 -1
- data/lib/rubocop/cop/lint/safe_navigation_chain.rb +1 -1
- data/lib/rubocop/cop/lint/struct_new_override.rb +58 -0
- data/lib/rubocop/cop/lint/suppressed_exception.rb +23 -26
- data/lib/rubocop/cop/lint/syntax.rb +1 -3
- data/lib/rubocop/cop/lint/unified_integer.rb +0 -2
- data/lib/rubocop/cop/lint/unreachable_code.rb +1 -1
- data/lib/rubocop/cop/lint/unused_method_argument.rb +32 -6
- data/lib/rubocop/cop/lint/uri_regexp.rb +4 -4
- data/lib/rubocop/cop/lint/useless_access_modifier.rb +13 -3
- data/lib/rubocop/cop/lint/useless_assignment.rb +3 -2
- data/lib/rubocop/cop/lint/useless_else_without_rescue.rb +6 -1
- data/lib/rubocop/cop/lint/useless_setter_call.rb +1 -1
- data/lib/rubocop/cop/migration/department_name.rb +22 -9
- data/lib/rubocop/cop/mixin/alignment.rb +1 -3
- data/lib/rubocop/cop/mixin/array_min_size.rb +1 -3
- data/lib/rubocop/cop/mixin/check_line_breakable.rb +3 -9
- data/lib/rubocop/cop/mixin/configurable_enforced_style.rb +1 -3
- data/lib/rubocop/cop/mixin/configurable_formatting.rb +2 -4
- data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +6 -1
- data/lib/rubocop/cop/mixin/frozen_string_literal.rb +10 -1
- data/lib/rubocop/cop/mixin/hash_transform_method.rb +9 -2
- data/lib/rubocop/cop/mixin/ignored_pattern.rb +1 -1
- data/lib/rubocop/cop/mixin/line_length_help.rb +3 -2
- data/lib/rubocop/cop/mixin/method_complexity.rb +5 -0
- data/lib/rubocop/cop/mixin/parser_diagnostic.rb +1 -1
- data/lib/rubocop/cop/mixin/regexp_literal_help.rb +16 -0
- data/lib/rubocop/cop/mixin/statement_modifier.rb +7 -22
- data/lib/rubocop/cop/mixin/target_ruby_version.rb +5 -1
- data/lib/rubocop/cop/mixin/trailing_comma.rb +2 -4
- data/lib/rubocop/cop/mixin/uncommunicative_name.rb +1 -1
- data/lib/rubocop/cop/naming/class_and_module_camel_case.rb +11 -1
- data/lib/rubocop/cop/naming/constant_name.rb +2 -1
- data/lib/rubocop/cop/naming/file_name.rb +27 -14
- data/lib/rubocop/cop/naming/heredoc_delimiter_naming.rb +1 -1
- data/lib/rubocop/cop/naming/method_name.rb +26 -0
- data/lib/rubocop/cop/naming/predicate_name.rb +1 -1
- data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +1 -1
- data/lib/rubocop/cop/registry.rb +12 -7
- data/lib/rubocop/cop/severity.rb +1 -3
- data/lib/rubocop/cop/style/access_modifier_declarations.rb +26 -6
- data/lib/rubocop/cop/style/alias.rb +4 -4
- data/lib/rubocop/cop/style/and_or.rb +7 -8
- data/lib/rubocop/cop/style/array_join.rb +2 -2
- data/lib/rubocop/cop/style/attr.rb +1 -3
- data/lib/rubocop/cop/style/bare_percent_literals.rb +1 -1
- data/lib/rubocop/cop/style/block_delimiters.rb +2 -8
- data/lib/rubocop/cop/style/case_equality.rb +24 -1
- data/lib/rubocop/cop/style/character_literal.rb +2 -2
- data/lib/rubocop/cop/style/collection_methods.rb +2 -0
- data/lib/rubocop/cop/style/conditional_assignment.rb +9 -11
- data/lib/rubocop/cop/style/copyright.rb +3 -3
- data/lib/rubocop/cop/style/dir.rb +1 -1
- data/lib/rubocop/cop/style/disable_cops_within_source_code_directive.rb +49 -0
- data/lib/rubocop/cop/style/documentation.rb +43 -5
- data/lib/rubocop/cop/style/double_cop_disable_directive.rb +1 -1
- data/lib/rubocop/cop/style/double_negation.rb +41 -4
- data/lib/rubocop/cop/style/each_for_simple_loop.rb +1 -1
- data/lib/rubocop/cop/style/each_with_object.rb +3 -3
- data/lib/rubocop/cop/style/empty_literal.rb +1 -3
- data/lib/rubocop/cop/style/empty_method.rb +2 -6
- data/lib/rubocop/cop/style/end_block.rb +6 -0
- data/lib/rubocop/cop/style/even_odd.rb +1 -1
- data/lib/rubocop/cop/style/expand_path_arguments.rb +3 -3
- data/lib/rubocop/cop/style/exponential_notation.rb +119 -0
- data/lib/rubocop/cop/style/format_string.rb +2 -2
- data/lib/rubocop/cop/style/format_string_token.rb +2 -3
- data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +3 -6
- data/lib/rubocop/cop/style/guard_clause.rb +25 -2
- data/lib/rubocop/cop/style/hash_each_methods.rb +6 -4
- data/lib/rubocop/cop/style/hash_syntax.rb +19 -12
- data/lib/rubocop/cop/style/hash_transform_keys.rb +6 -2
- data/lib/rubocop/cop/style/hash_transform_values.rb +6 -5
- data/lib/rubocop/cop/style/if_unless_modifier.rb +23 -3
- data/lib/rubocop/cop/style/if_with_semicolon.rb +16 -0
- data/lib/rubocop/cop/style/inline_comment.rb +1 -1
- data/lib/rubocop/cop/style/inverse_methods.rb +1 -1
- data/lib/rubocop/cop/style/lambda.rb +3 -2
- data/lib/rubocop/cop/style/lambda_call.rb +1 -21
- data/lib/rubocop/cop/style/method_call_with_args_parentheses/require_parentheses.rb +1 -3
- data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +1 -3
- data/lib/rubocop/cop/style/mixin_grouping.rb +1 -1
- data/lib/rubocop/cop/style/module_function.rb +58 -12
- data/lib/rubocop/cop/style/multiline_if_modifier.rb +1 -1
- data/lib/rubocop/cop/style/multiline_memoization.rb +1 -1
- data/lib/rubocop/cop/style/multiline_when_then.rb +16 -1
- data/lib/rubocop/cop/style/mutable_constant.rb +2 -4
- data/lib/rubocop/cop/style/negated_if.rb +3 -3
- data/lib/rubocop/cop/style/negated_unless.rb +3 -3
- data/lib/rubocop/cop/style/nested_parenthesized_calls.rb +2 -2
- data/lib/rubocop/cop/style/next.rb +2 -2
- data/lib/rubocop/cop/style/nil_comparison.rb +1 -1
- data/lib/rubocop/cop/style/non_nil_check.rb +5 -5
- data/lib/rubocop/cop/style/not.rb +1 -1
- data/lib/rubocop/cop/style/numeric_literal_prefix.rb +1 -1
- data/lib/rubocop/cop/style/numeric_literals.rb +1 -1
- data/lib/rubocop/cop/style/numeric_predicate.rb +1 -1
- data/lib/rubocop/cop/style/one_line_conditional.rb +6 -9
- data/lib/rubocop/cop/style/optional_arguments.rb +1 -1
- data/lib/rubocop/cop/style/or_assignment.rb +1 -1
- data/lib/rubocop/cop/style/percent_q_literals.rb +1 -1
- data/lib/rubocop/cop/style/perl_backrefs.rb +2 -2
- data/lib/rubocop/cop/style/proc.rb +1 -1
- data/lib/rubocop/cop/style/raise_args.rb +1 -1
- data/lib/rubocop/cop/style/random_with_offset.rb +3 -3
- data/lib/rubocop/cop/style/redundant_condition.rb +3 -4
- data/lib/rubocop/cop/style/redundant_conditional.rb +1 -1
- data/lib/rubocop/cop/style/redundant_exception.rb +3 -3
- data/lib/rubocop/cop/style/redundant_interpolation.rb +2 -2
- data/lib/rubocop/cop/style/redundant_parentheses.rb +2 -6
- data/lib/rubocop/cop/style/redundant_percent_q.rb +3 -3
- data/lib/rubocop/cop/style/redundant_regexp_character_class.rb +89 -0
- data/lib/rubocop/cop/style/redundant_regexp_escape.rb +130 -0
- data/lib/rubocop/cop/style/redundant_return.rb +5 -7
- data/lib/rubocop/cop/style/redundant_self.rb +1 -1
- data/lib/rubocop/cop/style/redundant_sort.rb +2 -2
- data/lib/rubocop/cop/style/rescue_modifier.rb +1 -1
- data/lib/rubocop/cop/style/return_nil.rb +1 -1
- data/lib/rubocop/cop/style/safe_navigation.rb +3 -7
- data/lib/rubocop/cop/style/self_assignment.rb +1 -1
- data/lib/rubocop/cop/style/slicing_with_range.rb +39 -0
- data/lib/rubocop/cop/style/special_global_vars.rb +3 -7
- data/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +1 -4
- data/lib/rubocop/cop/style/string_hash_keys.rb +1 -1
- data/lib/rubocop/cop/style/symbol_array.rb +2 -2
- data/lib/rubocop/cop/style/symbol_literal.rb +2 -2
- data/lib/rubocop/cop/style/ternary_parentheses.rb +2 -5
- data/lib/rubocop/cop/style/trailing_comma_in_arguments.rb +35 -0
- data/lib/rubocop/cop/style/trailing_comma_in_array_literal.rb +41 -0
- data/lib/rubocop/cop/style/trailing_comma_in_block_args.rb +88 -0
- data/lib/rubocop/cop/style/trailing_comma_in_hash_literal.rb +44 -0
- data/lib/rubocop/cop/style/trailing_underscore_variable.rb +1 -3
- data/lib/rubocop/cop/style/trivial_accessors.rb +1 -1
- data/lib/rubocop/cop/style/unless_else.rb +1 -1
- data/lib/rubocop/cop/style/unpack_first.rb +0 -4
- data/lib/rubocop/cop/style/variable_interpolation.rb +1 -1
- data/lib/rubocop/cop/style/when_then.rb +1 -1
- data/lib/rubocop/cop/style/while_until_modifier.rb +1 -1
- data/lib/rubocop/cop/style/word_array.rb +1 -1
- data/lib/rubocop/cop/style/zero_length_predicate.rb +1 -1
- data/lib/rubocop/cop/team.rb +61 -25
- data/lib/rubocop/cop/util.rb +25 -1
- data/lib/rubocop/cop/variable_force.rb +3 -9
- data/lib/rubocop/cop/variable_force/assignment.rb +1 -0
- data/lib/rubocop/cop/variable_force/branch.rb +1 -3
- data/lib/rubocop/cop/variable_force/scope.rb +1 -0
- data/lib/rubocop/cop/variable_force/variable.rb +3 -6
- data/lib/rubocop/ext/processed_source.rb +18 -0
- data/lib/rubocop/formatter/base_formatter.rb +0 -4
- data/lib/rubocop/formatter/clang_style_formatter.rb +1 -1
- data/lib/rubocop/formatter/disabled_config_formatter.rb +4 -12
- data/lib/rubocop/formatter/formatter_set.rb +1 -4
- data/lib/rubocop/formatter/junit_formatter.rb +27 -6
- data/lib/rubocop/formatter/pacman_formatter.rb +1 -1
- data/lib/rubocop/formatter/tap_formatter.rb +1 -1
- data/lib/rubocop/magic_comment.rb +1 -1
- data/lib/rubocop/name_similarity.rb +12 -9
- data/lib/rubocop/options.rb +33 -12
- data/lib/rubocop/remote_config.rb +1 -3
- data/lib/rubocop/result_cache.rb +5 -7
- data/lib/rubocop/rspec/cop_helper.rb +3 -26
- data/lib/rubocop/rspec/expect_offense.rb +46 -16
- data/lib/rubocop/rspec/shared_contexts.rb +54 -20
- data/lib/rubocop/runner.rb +21 -14
- data/lib/rubocop/target_finder.rb +7 -7
- data/lib/rubocop/target_ruby.rb +5 -2
- data/lib/rubocop/version.rb +5 -3
- metadata +50 -77
- data/lib/rubocop/ast/builder.rb +0 -83
- data/lib/rubocop/ast/node.rb +0 -632
- data/lib/rubocop/ast/node/alias_node.rb +0 -24
- data/lib/rubocop/ast/node/and_node.rb +0 -29
- data/lib/rubocop/ast/node/args_node.rb +0 -29
- data/lib/rubocop/ast/node/array_node.rb +0 -57
- data/lib/rubocop/ast/node/block_node.rb +0 -117
- data/lib/rubocop/ast/node/break_node.rb +0 -17
- data/lib/rubocop/ast/node/case_node.rb +0 -56
- data/lib/rubocop/ast/node/class_node.rb +0 -31
- data/lib/rubocop/ast/node/def_node.rb +0 -82
- data/lib/rubocop/ast/node/defined_node.rb +0 -17
- data/lib/rubocop/ast/node/ensure_node.rb +0 -17
- data/lib/rubocop/ast/node/float_node.rb +0 -12
- data/lib/rubocop/ast/node/for_node.rb +0 -53
- data/lib/rubocop/ast/node/forward_args_node.rb +0 -18
- data/lib/rubocop/ast/node/hash_node.rb +0 -109
- data/lib/rubocop/ast/node/if_node.rb +0 -175
- data/lib/rubocop/ast/node/int_node.rb +0 -12
- data/lib/rubocop/ast/node/keyword_splat_node.rb +0 -45
- data/lib/rubocop/ast/node/mixin/basic_literal_node.rb +0 -16
- data/lib/rubocop/ast/node/mixin/binary_operator_node.rb +0 -43
- data/lib/rubocop/ast/node/mixin/collection_node.rb +0 -15
- data/lib/rubocop/ast/node/mixin/conditional_node.rb +0 -45
- data/lib/rubocop/ast/node/mixin/hash_element_node.rb +0 -125
- data/lib/rubocop/ast/node/mixin/method_dispatch_node.rb +0 -261
- data/lib/rubocop/ast/node/mixin/method_identifier_predicates.rb +0 -114
- data/lib/rubocop/ast/node/mixin/modifier_node.rb +0 -17
- data/lib/rubocop/ast/node/mixin/numeric_node.rb +0 -21
- data/lib/rubocop/ast/node/mixin/parameterized_node.rb +0 -61
- data/lib/rubocop/ast/node/mixin/predicate_operator_node.rb +0 -35
- data/lib/rubocop/ast/node/module_node.rb +0 -24
- data/lib/rubocop/ast/node/or_node.rb +0 -29
- data/lib/rubocop/ast/node/pair_node.rb +0 -63
- data/lib/rubocop/ast/node/range_node.rb +0 -18
- data/lib/rubocop/ast/node/regexp_node.rb +0 -33
- data/lib/rubocop/ast/node/resbody_node.rb +0 -24
- data/lib/rubocop/ast/node/retry_node.rb +0 -17
- data/lib/rubocop/ast/node/return_node.rb +0 -24
- data/lib/rubocop/ast/node/self_class_node.rb +0 -24
- data/lib/rubocop/ast/node/send_node.rb +0 -13
- data/lib/rubocop/ast/node/str_node.rb +0 -16
- data/lib/rubocop/ast/node/super_node.rb +0 -21
- data/lib/rubocop/ast/node/symbol_node.rb +0 -12
- data/lib/rubocop/ast/node/until_node.rb +0 -35
- data/lib/rubocop/ast/node/when_node.rb +0 -53
- data/lib/rubocop/ast/node/while_node.rb +0 -35
- data/lib/rubocop/ast/node/yield_node.rb +0 -21
- data/lib/rubocop/ast/sexp.rb +0 -16
- data/lib/rubocop/ast/traversal.rb +0 -200
- data/lib/rubocop/cop/lint/end_in_method.rb +0 -40
- data/lib/rubocop/formatter/disabled_lines_formatter.rb +0 -57
- data/lib/rubocop/node_pattern.rb +0 -887
- data/lib/rubocop/processed_source.rb +0 -216
- data/lib/rubocop/string_util.rb +0 -14
- data/lib/rubocop/token.rb +0 -114
@@ -88,7 +88,7 @@ module RuboCop
|
|
88
88
|
def apply_autocorrect(node, rhs, operator, new_rhs)
|
89
89
|
lambda do |corrector|
|
90
90
|
corrector.insert_before(node.loc.operator, operator)
|
91
|
-
corrector.replace(rhs
|
91
|
+
corrector.replace(rhs, new_rhs.source)
|
92
92
|
end
|
93
93
|
end
|
94
94
|
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RuboCop
|
4
|
+
module Cop
|
5
|
+
module Style
|
6
|
+
# This cop checks that arrays are sliced with endless ranges instead of
|
7
|
+
# `ary[start..-1]` on Ruby 2.6+.
|
8
|
+
#
|
9
|
+
# @example
|
10
|
+
# # bad
|
11
|
+
# items[1..-1]
|
12
|
+
#
|
13
|
+
# # good
|
14
|
+
# items[1..]
|
15
|
+
class SlicingWithRange < Cop
|
16
|
+
extend TargetRubyVersion
|
17
|
+
|
18
|
+
minimum_target_ruby_version 2.6
|
19
|
+
|
20
|
+
MSG = 'Prefer ary[n..] over ary[n..-1].'
|
21
|
+
|
22
|
+
def_node_matcher :range_till_minus_one?, '(irange !nil? (int -1))'
|
23
|
+
|
24
|
+
def on_send(node)
|
25
|
+
return unless node.method?(:[]) && node.arguments.count == 1
|
26
|
+
return unless range_till_minus_one?(node.arguments.first)
|
27
|
+
|
28
|
+
add_offense(node.arguments.first)
|
29
|
+
end
|
30
|
+
|
31
|
+
def autocorrect(node)
|
32
|
+
lambda do |corrector|
|
33
|
+
corrector.remove(node.end)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -145,7 +145,7 @@ module RuboCop
|
|
145
145
|
node = node.parent
|
146
146
|
end
|
147
147
|
|
148
|
-
corrector.replace(node
|
148
|
+
corrector.replace(node, replacement(node, global_var))
|
149
149
|
end
|
150
150
|
end
|
151
151
|
|
@@ -181,13 +181,9 @@ module RuboCop
|
|
181
181
|
parent_type = node.parent&.type
|
182
182
|
preferred_name = preferred_names(global_var).first
|
183
183
|
|
184
|
-
unless %i[dstr xstr regexp].include?(parent_type)
|
185
|
-
return preferred_name.to_s
|
186
|
-
end
|
184
|
+
return preferred_name.to_s unless %i[dstr xstr regexp].include?(parent_type)
|
187
185
|
|
188
|
-
if style == :use_english_names
|
189
|
-
return english_name_replacement(preferred_name, node)
|
190
|
-
end
|
186
|
+
return english_name_replacement(preferred_name, node) if style == :use_english_names
|
191
187
|
|
192
188
|
"##{preferred_name}"
|
193
189
|
end
|
@@ -57,10 +57,7 @@ module RuboCop
|
|
57
57
|
|
58
58
|
def missing_parentheses_corrector(node)
|
59
59
|
lambda do |corrector|
|
60
|
-
|
61
|
-
|
62
|
-
corrector.insert_before(args_loc, '(')
|
63
|
-
corrector.insert_after(args_loc, ')')
|
60
|
+
corrector.wrap(node, '(', ')')
|
64
61
|
end
|
65
62
|
end
|
66
63
|
|
@@ -81,7 +81,7 @@ module RuboCop
|
|
81
81
|
end
|
82
82
|
|
83
83
|
lambda do |corrector|
|
84
|
-
corrector.replace(node
|
84
|
+
corrector.replace(node, "[#{syms.join(', ')}]")
|
85
85
|
end
|
86
86
|
end
|
87
87
|
|
@@ -106,7 +106,7 @@ module RuboCop
|
|
106
106
|
# method name
|
107
107
|
string =~ /\A[a-zA-Z_]\w*[!?]?\z/ ||
|
108
108
|
# instance / class variable
|
109
|
-
string =~ /\A
|
109
|
+
string =~ /\A@@?[a-zA-Z_]\w*\z/ ||
|
110
110
|
# global variable
|
111
111
|
string =~ /\A\$[1-9]\d*\z/ ||
|
112
112
|
string =~ /\A\$[a-zA-Z_]\w*\z/ ||
|
@@ -16,14 +16,14 @@ module RuboCop
|
|
16
16
|
MSG = 'Do not use strings for word-like symbol literals.'
|
17
17
|
|
18
18
|
def on_sym(node)
|
19
|
-
return unless
|
19
|
+
return unless /\A:["'][A-Za-z_]\w*["']\z/.match?(node.source)
|
20
20
|
|
21
21
|
add_offense(node)
|
22
22
|
end
|
23
23
|
|
24
24
|
def autocorrect(node)
|
25
25
|
lambda do |corrector|
|
26
|
-
corrector.replace(node
|
26
|
+
corrector.replace(node, node.source.delete(%q('")))
|
27
27
|
end
|
28
28
|
end
|
29
29
|
end
|
@@ -199,16 +199,13 @@ module RuboCop
|
|
199
199
|
# Ruby allows no space between the question mark and parentheses.
|
200
200
|
# If we remove the parentheses, we need to add a space or we'll
|
201
201
|
# generate invalid code.
|
202
|
-
unless whitespace_after?(condition)
|
203
|
-
corrector.insert_after(condition.loc.end, ' ')
|
204
|
-
end
|
202
|
+
corrector.insert_after(condition.loc.end, ' ') unless whitespace_after?(condition)
|
205
203
|
end
|
206
204
|
end
|
207
205
|
|
208
206
|
def correct_unparenthesized(condition)
|
209
207
|
lambda do |corrector|
|
210
|
-
corrector.
|
211
|
-
corrector.insert_after(condition.source_range, ')')
|
208
|
+
corrector.wrap(condition, '(', ')')
|
212
209
|
end
|
213
210
|
end
|
214
211
|
|
@@ -4,6 +4,14 @@ module RuboCop
|
|
4
4
|
module Cop
|
5
5
|
module Style
|
6
6
|
# This cop checks for trailing comma in argument lists.
|
7
|
+
# The supported styles are:
|
8
|
+
#
|
9
|
+
# * `consistent_comma`: Requires a comma after the last argument,
|
10
|
+
# for all parenthesized method calls with arguments.
|
11
|
+
# * `comma`: Requires a comma after the last argument, but only for
|
12
|
+
# parenthesized method calls where each argument is on its own line.
|
13
|
+
# * `no_comma`: Requires that there is no comma after the last
|
14
|
+
# argument.
|
7
15
|
#
|
8
16
|
# @example EnforcedStyleForMultiline: consistent_comma
|
9
17
|
# # bad
|
@@ -20,6 +28,11 @@ module RuboCop
|
|
20
28
|
#
|
21
29
|
# # good
|
22
30
|
# method(
|
31
|
+
# 1, 2, 3,
|
32
|
+
# )
|
33
|
+
#
|
34
|
+
# # good
|
35
|
+
# method(
|
23
36
|
# 1,
|
24
37
|
# 2,
|
25
38
|
# )
|
@@ -31,6 +44,28 @@ module RuboCop
|
|
31
44
|
# # good
|
32
45
|
# method(1, 2)
|
33
46
|
#
|
47
|
+
# # bad
|
48
|
+
# method(
|
49
|
+
# 1, 2,
|
50
|
+
# 3,
|
51
|
+
# )
|
52
|
+
#
|
53
|
+
# # good
|
54
|
+
# method(
|
55
|
+
# 1, 2,
|
56
|
+
# 3
|
57
|
+
# )
|
58
|
+
#
|
59
|
+
# # bad
|
60
|
+
# method(
|
61
|
+
# 1, 2, 3,
|
62
|
+
# )
|
63
|
+
#
|
64
|
+
# # good
|
65
|
+
# method(
|
66
|
+
# 1, 2, 3
|
67
|
+
# )
|
68
|
+
#
|
34
69
|
# # good
|
35
70
|
# method(
|
36
71
|
# 1,
|
@@ -4,12 +4,23 @@ module RuboCop
|
|
4
4
|
module Cop
|
5
5
|
module Style
|
6
6
|
# This cop checks for trailing comma in array literals.
|
7
|
+
# The configuration options are:
|
8
|
+
#
|
9
|
+
# * `consistent_comma`: Requires a comma after the
|
10
|
+
# last item of all non-empty, multiline array literals.
|
11
|
+
# * `comma`: Requires a comma after last item in an array,
|
12
|
+
# but only when each item is on its own line.
|
13
|
+
# * `no_comma`: Does not requires a comma after the
|
14
|
+
# last item in an array
|
7
15
|
#
|
8
16
|
# @example EnforcedStyleForMultiline: consistent_comma
|
9
17
|
# # bad
|
10
18
|
# a = [1, 2,]
|
11
19
|
#
|
12
20
|
# # good
|
21
|
+
# a = [1, 2]
|
22
|
+
#
|
23
|
+
# # good
|
13
24
|
# a = [
|
14
25
|
# 1, 2,
|
15
26
|
# 3,
|
@@ -17,6 +28,11 @@ module RuboCop
|
|
17
28
|
#
|
18
29
|
# # good
|
19
30
|
# a = [
|
31
|
+
# 1, 2, 3,
|
32
|
+
# ]
|
33
|
+
#
|
34
|
+
# # good
|
35
|
+
# a = [
|
20
36
|
# 1,
|
21
37
|
# 2,
|
22
38
|
# ]
|
@@ -26,6 +42,31 @@ module RuboCop
|
|
26
42
|
# a = [1, 2,]
|
27
43
|
#
|
28
44
|
# # good
|
45
|
+
# a = [1, 2]
|
46
|
+
#
|
47
|
+
# # bad
|
48
|
+
# a = [
|
49
|
+
# 1, 2,
|
50
|
+
# 3,
|
51
|
+
# ]
|
52
|
+
#
|
53
|
+
# # good
|
54
|
+
# a = [
|
55
|
+
# 1, 2,
|
56
|
+
# 3
|
57
|
+
# ]
|
58
|
+
#
|
59
|
+
# # bad
|
60
|
+
# a = [
|
61
|
+
# 1, 2, 3,
|
62
|
+
# ]
|
63
|
+
#
|
64
|
+
# # good
|
65
|
+
# a = [
|
66
|
+
# 1, 2, 3
|
67
|
+
# ]
|
68
|
+
#
|
69
|
+
# # good
|
29
70
|
# a = [
|
30
71
|
# 1,
|
31
72
|
# 2,
|
@@ -0,0 +1,88 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RuboCop
|
4
|
+
module Cop
|
5
|
+
module Style
|
6
|
+
# This cop checks whether trailing commas in block arguments are
|
7
|
+
# required. Blocks with only one argument and a trailing comma require
|
8
|
+
# that comma to be present. Blocks with more than one argument never
|
9
|
+
# require a trailing comma.
|
10
|
+
#
|
11
|
+
# @example
|
12
|
+
# # bad
|
13
|
+
# add { |foo, bar,| foo + bar }
|
14
|
+
#
|
15
|
+
# # good
|
16
|
+
# add { |foo, bar| foo + bar }
|
17
|
+
#
|
18
|
+
# # good
|
19
|
+
# add { |foo,| foo }
|
20
|
+
#
|
21
|
+
# # good
|
22
|
+
# add { foo }
|
23
|
+
#
|
24
|
+
# # bad
|
25
|
+
# add do |foo, bar,|
|
26
|
+
# foo + bar
|
27
|
+
# end
|
28
|
+
#
|
29
|
+
# # good
|
30
|
+
# add do |foo, bar|
|
31
|
+
# foo + bar
|
32
|
+
# end
|
33
|
+
#
|
34
|
+
# # good
|
35
|
+
# add do |foo,|
|
36
|
+
# foo
|
37
|
+
# end
|
38
|
+
#
|
39
|
+
# # good
|
40
|
+
# add do
|
41
|
+
# foo + bar
|
42
|
+
# end
|
43
|
+
class TrailingCommaInBlockArgs < Cop
|
44
|
+
MSG = 'Useless trailing comma present in block arguments.'
|
45
|
+
|
46
|
+
def on_block(node)
|
47
|
+
# lambda literal (`->`) never has block arguments.
|
48
|
+
return if node.send_node.lambda_literal?
|
49
|
+
|
50
|
+
return unless useless_trailing_comma?(node)
|
51
|
+
|
52
|
+
add_offense(node, location: last_comma(node).pos)
|
53
|
+
end
|
54
|
+
|
55
|
+
def autocorrect(node)
|
56
|
+
->(corrector) { corrector.replace(last_comma(node).pos, '') }
|
57
|
+
end
|
58
|
+
|
59
|
+
private
|
60
|
+
|
61
|
+
def useless_trailing_comma?(node)
|
62
|
+
arg_count(node) > 1 && trailing_comma?(node)
|
63
|
+
end
|
64
|
+
|
65
|
+
def arg_count(node)
|
66
|
+
node.arguments.each_descendant(:arg, :optarg, :kwoptarg).to_a.size
|
67
|
+
end
|
68
|
+
|
69
|
+
def trailing_comma?(node)
|
70
|
+
argument_tokens(node).last.comma?
|
71
|
+
end
|
72
|
+
|
73
|
+
def last_comma(node)
|
74
|
+
argument_tokens(node).last
|
75
|
+
end
|
76
|
+
|
77
|
+
def argument_tokens(node)
|
78
|
+
pipes = tokens(node).select { |token| token.type == :tPIPE }
|
79
|
+
begin_pos, end_pos = pipes.map do |pipe|
|
80
|
+
tokens(node).index(pipe)
|
81
|
+
end
|
82
|
+
|
83
|
+
tokens(node)[begin_pos + 1..end_pos - 1]
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
@@ -4,12 +4,24 @@ module RuboCop
|
|
4
4
|
module Cop
|
5
5
|
module Style
|
6
6
|
# This cop checks for trailing comma in hash literals.
|
7
|
+
# The configuration options are:
|
8
|
+
#
|
9
|
+
# * `consistent_comma`: Requires a comma after the
|
10
|
+
# last item of all non-empty, multiline hash literals.
|
11
|
+
# * `comma`: Requires a comma after the last item in a hash,
|
12
|
+
# but only when each item is on its own line.
|
13
|
+
# * `no_comma`: Does not requires a comma after the
|
14
|
+
# last item in a hash
|
7
15
|
#
|
8
16
|
# @example EnforcedStyleForMultiline: consistent_comma
|
17
|
+
#
|
9
18
|
# # bad
|
10
19
|
# a = { foo: 1, bar: 2, }
|
11
20
|
#
|
12
21
|
# # good
|
22
|
+
# a = { foo: 1, bar: 2 }
|
23
|
+
#
|
24
|
+
# # good
|
13
25
|
# a = {
|
14
26
|
# foo: 1, bar: 2,
|
15
27
|
# qux: 3,
|
@@ -17,21 +29,53 @@ module RuboCop
|
|
17
29
|
#
|
18
30
|
# # good
|
19
31
|
# a = {
|
32
|
+
# foo: 1, bar: 2, qux: 3,
|
33
|
+
# }
|
34
|
+
#
|
35
|
+
# # good
|
36
|
+
# a = {
|
20
37
|
# foo: 1,
|
21
38
|
# bar: 2,
|
22
39
|
# }
|
23
40
|
#
|
24
41
|
# @example EnforcedStyleForMultiline: comma
|
42
|
+
#
|
25
43
|
# # bad
|
26
44
|
# a = { foo: 1, bar: 2, }
|
27
45
|
#
|
28
46
|
# # good
|
47
|
+
# a = { foo: 1, bar: 2 }
|
48
|
+
#
|
49
|
+
# # bad
|
50
|
+
# a = {
|
51
|
+
# foo: 1, bar: 2,
|
52
|
+
# qux: 3,
|
53
|
+
# }
|
54
|
+
#
|
55
|
+
# # good
|
56
|
+
# a = {
|
57
|
+
# foo: 1, bar: 2,
|
58
|
+
# qux: 3
|
59
|
+
# }
|
60
|
+
#
|
61
|
+
# # bad
|
62
|
+
# a = {
|
63
|
+
# foo: 1, bar: 2, qux: 3,
|
64
|
+
# }
|
65
|
+
#
|
66
|
+
# # good
|
67
|
+
# a = {
|
68
|
+
# foo: 1, bar: 2, qux: 3
|
69
|
+
# }
|
70
|
+
#
|
71
|
+
# # good
|
29
72
|
# a = {
|
30
73
|
# foo: 1,
|
31
74
|
# bar: 2,
|
32
75
|
# }
|
33
76
|
#
|
34
77
|
# @example EnforcedStyleForMultiline: no_comma (default)
|
78
|
+
#
|
35
79
|
# # bad
|
36
80
|
# a = { foo: 1, bar: 2, }
|
37
81
|
#
|
@@ -126,9 +126,7 @@ module RuboCop
|
|
126
126
|
return unused_range(node.type, mlhs_node, right)
|
127
127
|
end
|
128
128
|
|
129
|
-
if Util.parentheses?(mlhs_node)
|
130
|
-
return range_for_parentheses(first_offense, mlhs_node)
|
131
|
-
end
|
129
|
+
return range_for_parentheses(first_offense, mlhs_node) if Util.parentheses?(mlhs_node)
|
132
130
|
|
133
131
|
range_between(first_offense.source_range.begin_pos,
|
134
132
|
node.loc.operator.begin_pos)
|