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
@@ -48,10 +48,8 @@ module RuboCop
|
|
48
48
|
return if taboo_ranges.any? { |t| within?(range, t) }
|
49
49
|
|
50
50
|
if column_delta.positive?
|
51
|
-
unless range.resize(1).source == "\n"
|
52
|
-
|
53
|
-
end
|
54
|
-
elsif range.source =~ /\A[ \t]+\z/
|
51
|
+
corrector.insert_before(range, ' ' * column_delta) unless range.resize(1).source == "\n"
|
52
|
+
elsif /\A[ \t]+\z/.match?(range.source)
|
55
53
|
remove(range, corrector)
|
56
54
|
end
|
57
55
|
end
|
@@ -92,9 +90,7 @@ module RuboCop
|
|
92
90
|
end
|
93
91
|
|
94
92
|
def calculate_range(expr, line_begin_pos, column_delta)
|
95
|
-
if column_delta.positive?
|
96
|
-
return range_between(line_begin_pos, line_begin_pos)
|
97
|
-
end
|
93
|
+
return range_between(line_begin_pos, line_begin_pos) if column_delta.positive?
|
98
94
|
|
99
95
|
starts_with_space =
|
100
96
|
expr.source_buffer.source[line_begin_pos].start_with?(' ')
|
@@ -112,7 +108,7 @@ module RuboCop
|
|
112
108
|
corrector.remove(range)
|
113
109
|
rescue RuntimeError
|
114
110
|
range = range_between(range.begin_pos + 1, range.end_pos + 1)
|
115
|
-
retry if range.source
|
111
|
+
retry if /^ +$/.match?(range.source)
|
116
112
|
ensure
|
117
113
|
$stderr = original_stderr
|
118
114
|
end
|
@@ -10,8 +10,7 @@ module RuboCop
|
|
10
10
|
|
11
11
|
lambda do |corrector|
|
12
12
|
corrector.replace(node.loc.keyword, node.inverse_keyword)
|
13
|
-
corrector.replace(condition.
|
14
|
-
condition.children.first.source)
|
13
|
+
corrector.replace(condition, condition.children.first.source)
|
15
14
|
end
|
16
15
|
end
|
17
16
|
|
@@ -44,13 +44,13 @@ module RuboCop
|
|
44
44
|
end
|
45
45
|
|
46
46
|
def replace_selector(corrector)
|
47
|
-
corrector.replace(method
|
47
|
+
corrector.replace(method, 'lambda')
|
48
48
|
end
|
49
49
|
|
50
50
|
def remove_arguments(corrector)
|
51
51
|
return if arguments.empty_and_without_delimiters?
|
52
52
|
|
53
|
-
corrector.remove(arguments
|
53
|
+
corrector.remove(arguments)
|
54
54
|
end
|
55
55
|
|
56
56
|
def insert_arguments(corrector)
|
@@ -62,7 +62,7 @@ module RuboCop
|
|
62
62
|
|
63
63
|
def remove_leading_whitespace(corrector)
|
64
64
|
corrector.remove_preceding(
|
65
|
-
arguments
|
65
|
+
arguments,
|
66
66
|
arguments.source_range.begin_pos -
|
67
67
|
block_node.send_node.source_range.end_pos
|
68
68
|
)
|
@@ -129,7 +129,7 @@ module RuboCop
|
|
129
129
|
end
|
130
130
|
|
131
131
|
def separating_space?
|
132
|
-
block_begin.source_buffer.source[block_begin.begin_pos + 2].match(/\s/)
|
132
|
+
block_begin.source_buffer.source[block_begin.begin_pos + 2].match?(/\s/)
|
133
133
|
end
|
134
134
|
end
|
135
135
|
end
|
@@ -38,9 +38,9 @@ module RuboCop
|
|
38
38
|
return unless eol_comment
|
39
39
|
|
40
40
|
text = eol_comment.loc.expression.source
|
41
|
-
corrector.insert_before(node
|
41
|
+
corrector.insert_before(node,
|
42
42
|
text + "\n" + (' ' * node.loc.keyword.column))
|
43
|
-
corrector.remove(eol_comment
|
43
|
+
corrector.remove(eol_comment)
|
44
44
|
end
|
45
45
|
|
46
46
|
private
|
@@ -35,9 +35,7 @@ module RuboCop
|
|
35
35
|
|
36
36
|
def add_space(processed_source, corrector, left_token, right_token)
|
37
37
|
@processed_source = processed_source
|
38
|
-
unless left_token.space_after?
|
39
|
-
corrector.insert_after(left_token.pos, ' ')
|
40
|
-
end
|
38
|
+
corrector.insert_after(left_token.pos, ' ') unless left_token.space_after?
|
41
39
|
return if right_token.space_before?
|
42
40
|
|
43
41
|
corrector.insert_before(right_token.pos, ' ')
|
@@ -13,9 +13,9 @@ module RuboCop
|
|
13
13
|
lambda do |corrector|
|
14
14
|
str = node.str_content
|
15
15
|
if style == :single_quotes
|
16
|
-
corrector.replace(node
|
16
|
+
corrector.replace(node, to_string_literal(str))
|
17
17
|
else
|
18
|
-
corrector.replace(node
|
18
|
+
corrector.replace(node, str.inspect)
|
19
19
|
end
|
20
20
|
end
|
21
21
|
end
|
@@ -68,9 +68,7 @@ module RuboCop
|
|
68
68
|
gem_name(current),
|
69
69
|
gem_name(previous)
|
70
70
|
)
|
71
|
-
unless get_dependency_name(previous) == get_dependency_name(current)
|
72
|
-
next
|
73
|
-
end
|
71
|
+
next unless get_dependency_name(previous) == get_dependency_name(current)
|
74
72
|
|
75
73
|
register_offense(previous, current)
|
76
74
|
end
|
@@ -58,7 +58,7 @@ module RuboCop
|
|
58
58
|
# TODO: Implement the cop in here.
|
59
59
|
#
|
60
60
|
# In many cases, you can use a node matcher for matching node pattern.
|
61
|
-
# See https://github.com/rubocop-hq/rubocop/blob/master/lib/rubocop/node_pattern.rb
|
61
|
+
# See https://github.com/rubocop-hq/rubocop-ast/blob/master/lib/rubocop/node_pattern.rb
|
62
62
|
#
|
63
63
|
# For example
|
64
64
|
MSG = 'Use `#good_method` instead of `#bad_method`.'
|
@@ -132,11 +132,12 @@ module RuboCop
|
|
132
132
|
).inject
|
133
133
|
end
|
134
134
|
|
135
|
-
def inject_config(config_file_path: 'config/default.yml'
|
135
|
+
def inject_config(config_file_path: 'config/default.yml',
|
136
|
+
version_added: bump_minor_version)
|
136
137
|
injector =
|
137
138
|
ConfigurationInjector.new(configuration_file_path: config_file_path,
|
138
139
|
badge: badge,
|
139
|
-
version_added:
|
140
|
+
version_added: version_added)
|
140
141
|
|
141
142
|
injector.inject do
|
142
143
|
output.puts(format(CONFIGURATION_ADDED_MESSAGE,
|
@@ -10,9 +10,7 @@ module RuboCop
|
|
10
10
|
|
11
11
|
def part_of_ignored_node?(node)
|
12
12
|
ignored_nodes.map(&:loc).any? do |ignored_loc|
|
13
|
-
if ignored_loc.expression.begin_pos > node.source_range.begin_pos
|
14
|
-
next false
|
15
|
-
end
|
13
|
+
next false if ignored_loc.expression.begin_pos > node.source_range.begin_pos
|
16
14
|
|
17
15
|
ignored_end_pos = if ignored_loc.respond_to?(:heredoc_body)
|
18
16
|
ignored_loc.heredoc_end.end_pos
|
@@ -6,33 +6,76 @@ module RuboCop
|
|
6
6
|
# Here we check if the elements of a multi-line array literal are
|
7
7
|
# aligned.
|
8
8
|
#
|
9
|
-
# @example
|
9
|
+
# @example EnforcedStyle: with_first_element (default)
|
10
|
+
# # good
|
11
|
+
#
|
12
|
+
# array = [1, 2, 3,
|
13
|
+
# 4, 5, 6]
|
14
|
+
# array = ['run',
|
15
|
+
# 'forrest',
|
16
|
+
# 'run']
|
17
|
+
#
|
10
18
|
# # bad
|
11
|
-
#
|
19
|
+
#
|
20
|
+
# array = [1, 2, 3,
|
12
21
|
# 4, 5, 6]
|
13
22
|
# array = ['run',
|
14
23
|
# 'forrest',
|
15
24
|
# 'run']
|
16
25
|
#
|
26
|
+
# @example EnforcedStyle: with_fixed_indentation
|
17
27
|
# # good
|
18
|
-
#
|
19
|
-
#
|
20
|
-
#
|
21
|
-
#
|
22
|
-
#
|
28
|
+
#
|
29
|
+
# array = [1, 2, 3,
|
30
|
+
# 4, 5, 6]
|
31
|
+
#
|
32
|
+
# # bad
|
33
|
+
#
|
34
|
+
# array = [1, 2, 3,
|
35
|
+
# 4, 5, 6]
|
23
36
|
class ArrayAlignment < Cop
|
24
37
|
include Alignment
|
25
38
|
|
26
|
-
|
27
|
-
|
39
|
+
ALIGN_ELEMENTS_MSG = 'Align the elements of an array literal ' \
|
40
|
+
'if they span more than one line.'
|
41
|
+
|
42
|
+
FIXED_INDENT_MSG = 'Use one level of indentation for elements ' \
|
43
|
+
'following the first line of a multi-line array.'
|
28
44
|
|
29
45
|
def on_array(node)
|
30
|
-
|
46
|
+
return if node.children.size < 2
|
47
|
+
|
48
|
+
check_alignment(node.children, base_column(node, node.children))
|
31
49
|
end
|
32
50
|
|
33
51
|
def autocorrect(node)
|
34
52
|
AlignmentCorrector.correct(processed_source, node, column_delta)
|
35
53
|
end
|
54
|
+
|
55
|
+
private
|
56
|
+
|
57
|
+
def message(_node)
|
58
|
+
fixed_indentation? ? FIXED_INDENT_MSG : ALIGN_ELEMENTS_MSG
|
59
|
+
end
|
60
|
+
|
61
|
+
def fixed_indentation?
|
62
|
+
cop_config['EnforcedStyle'] == 'with_fixed_indentation'
|
63
|
+
end
|
64
|
+
|
65
|
+
def base_column(node, args)
|
66
|
+
if fixed_indentation?
|
67
|
+
lineno = target_method_lineno(node)
|
68
|
+
line = node.source_range.source_buffer.source_line(lineno)
|
69
|
+
indentation_of_line = /\S.*/.match(line).begin(0)
|
70
|
+
indentation_of_line + configured_indentation_width
|
71
|
+
else
|
72
|
+
display_column(args.first.source_range)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
def target_method_lineno(node)
|
77
|
+
node.loc.line
|
78
|
+
end
|
36
79
|
end
|
37
80
|
end
|
38
81
|
end
|
@@ -52,9 +52,11 @@ module RuboCop
|
|
52
52
|
end
|
53
53
|
|
54
54
|
def delimiter_range(node)
|
55
|
-
Parser::Source::Range.new(
|
56
|
-
|
57
|
-
|
55
|
+
Parser::Source::Range.new(
|
56
|
+
node.loc.expression.source_buffer,
|
57
|
+
node.children.compact.last.loc.expression.end_pos,
|
58
|
+
node.loc.expression.end_pos
|
59
|
+
)
|
58
60
|
end
|
59
61
|
end
|
60
62
|
end
|
@@ -3,10 +3,10 @@
|
|
3
3
|
module RuboCop
|
4
4
|
module Cop
|
5
5
|
module Layout
|
6
|
-
# This cop checks how the
|
7
|
-
# are indented in relation to its
|
6
|
+
# This cop checks how the ``when``s of a `case` expression
|
7
|
+
# are indented in relation to its `case` or `end` keyword.
|
8
8
|
#
|
9
|
-
# It will register a separate offense for each misaligned
|
9
|
+
# It will register a separate offense for each misaligned `when`.
|
10
10
|
#
|
11
11
|
# @example
|
12
12
|
# # If Layout/EndAlignment is set to keyword style (default)
|
@@ -8,22 +8,24 @@ module RuboCop
|
|
8
8
|
# `Categories` allows us to map macro names into a category.
|
9
9
|
#
|
10
10
|
# Consider an example of code style that covers the following order:
|
11
|
-
#
|
12
|
-
#
|
13
|
-
#
|
14
|
-
#
|
15
|
-
#
|
16
|
-
#
|
17
|
-
#
|
18
|
-
#
|
19
|
-
#
|
20
|
-
#
|
21
|
-
#
|
22
|
-
#
|
11
|
+
#
|
12
|
+
# * Module inclusion (include, prepend, extend)
|
13
|
+
# * Constants
|
14
|
+
# * Associations (has_one, has_many)
|
15
|
+
# * Public attribute macros (attr_accessor, attr_writer, attr_reader)
|
16
|
+
# * Other macros (validates, validate)
|
17
|
+
# * Public class methods
|
18
|
+
# * Initializer
|
19
|
+
# * Public instance methods
|
20
|
+
# * Protected attribute macros (attr_accessor, attr_writer, attr_reader)
|
21
|
+
# * Protected instance methods
|
22
|
+
# * Private attribute macros (attr_accessor, attr_writer, attr_reader)
|
23
|
+
# * Private instance methods
|
23
24
|
#
|
24
25
|
# You can configure the following order:
|
25
26
|
#
|
26
|
-
#
|
27
|
+
# [source,yaml]
|
28
|
+
# ----
|
27
29
|
# Layout/ClassStructure:
|
28
30
|
# ExpectedOrder:
|
29
31
|
# - module_inclusion
|
@@ -40,13 +42,14 @@ module RuboCop
|
|
40
42
|
# - private_attribute_macros
|
41
43
|
# - private_delegate
|
42
44
|
# - private_methods
|
43
|
-
#
|
45
|
+
# ----
|
44
46
|
#
|
45
47
|
# Instead of putting all literals in the expected order, is also
|
46
48
|
# possible to group categories of macros. Visibility levels are handled
|
47
49
|
# automatically.
|
48
50
|
#
|
49
|
-
#
|
51
|
+
# [source,yaml]
|
52
|
+
# ----
|
50
53
|
# Layout/ClassStructure:
|
51
54
|
# Categories:
|
52
55
|
# association:
|
@@ -63,7 +66,7 @@ module RuboCop
|
|
63
66
|
# - include
|
64
67
|
# - prepend
|
65
68
|
# - extend
|
66
|
-
#
|
69
|
+
# ----
|
67
70
|
#
|
68
71
|
# @example
|
69
72
|
# # bad
|
@@ -23,6 +23,8 @@ module RuboCop
|
|
23
23
|
# do_something
|
24
24
|
# end
|
25
25
|
class ConditionPosition < Cop
|
26
|
+
include RangeHelp
|
27
|
+
|
26
28
|
MSG = 'Place the condition on the same line as `%<keyword>s`.'
|
27
29
|
|
28
30
|
def on_if(node)
|
@@ -34,9 +36,17 @@ module RuboCop
|
|
34
36
|
def on_while(node)
|
35
37
|
check(node)
|
36
38
|
end
|
39
|
+
alias on_until on_while
|
37
40
|
|
38
|
-
def
|
39
|
-
|
41
|
+
def autocorrect(node)
|
42
|
+
lambda do |corrector|
|
43
|
+
range = range_by_whole_lines(
|
44
|
+
node.source_range, include_final_newline: true
|
45
|
+
)
|
46
|
+
|
47
|
+
corrector.insert_after(node.parent.loc.keyword, " #{node.source}")
|
48
|
+
corrector.remove(range)
|
49
|
+
end
|
40
50
|
end
|
41
51
|
|
42
52
|
private
|
@@ -59,6 +59,14 @@ module RuboCop
|
|
59
59
|
check_alignment(node.when_branches.last.loc.keyword, node.loc.else)
|
60
60
|
end
|
61
61
|
|
62
|
+
def on_case_match(node)
|
63
|
+
return unless node.else?
|
64
|
+
|
65
|
+
check_alignment(
|
66
|
+
node.in_pattern_branches.last.loc.keyword, node.loc.else
|
67
|
+
)
|
68
|
+
end
|
69
|
+
|
62
70
|
def autocorrect(node)
|
63
71
|
AlignmentCorrector.correct(processed_source, node, column_delta)
|
64
72
|
end
|
@@ -99,9 +99,7 @@ module RuboCop
|
|
99
99
|
lambda do |corrector|
|
100
100
|
line = range_by_whole_lines(node.source_range)
|
101
101
|
|
102
|
-
unless previous_line_empty?(node.first_line)
|
103
|
-
corrector.insert_before(line, "\n")
|
104
|
-
end
|
102
|
+
corrector.insert_before(line, "\n") unless previous_line_empty?(node.first_line)
|
105
103
|
|
106
104
|
correct_next_line_if_denied_style(corrector, node, line)
|
107
105
|
end
|
@@ -120,9 +118,7 @@ module RuboCop
|
|
120
118
|
def correct_next_line_if_denied_style(corrector, node, line)
|
121
119
|
case style
|
122
120
|
when :around
|
123
|
-
unless next_line_empty?(node.last_line)
|
124
|
-
corrector.insert_after(line, "\n")
|
125
|
-
end
|
121
|
+
corrector.insert_after(line, "\n") unless next_line_empty?(node.last_line)
|
126
122
|
when :only_before
|
127
123
|
if next_line_empty?(node.last_line)
|
128
124
|
range = next_empty_line_range(node)
|