rubocop 0.80.1 → 0.85.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 +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)
|