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
@@ -25,9 +25,7 @@ module RuboCop
|
|
25
25
|
end
|
26
26
|
|
27
27
|
def check_alignment(items, base_column = nil)
|
28
|
-
unless items.empty?
|
29
|
-
base_column ||= display_column(items.first.source_range)
|
30
|
-
end
|
28
|
+
base_column ||= display_column(items.first.source_range) unless items.empty?
|
31
29
|
|
32
30
|
each_bad_alignment(items, base_column) do |current|
|
33
31
|
expr = current.source_range
|
@@ -48,9 +48,7 @@ module RuboCop
|
|
48
48
|
def smallest_percent_size(style, ary_size)
|
49
49
|
@smallest_percent ||= Float::INFINITY
|
50
50
|
|
51
|
-
if style == :percent && ary_size < @smallest_percent
|
52
|
-
@smallest_percent = ary_size
|
53
|
-
end
|
51
|
+
@smallest_percent = ary_size if style == :percent && ary_size < @smallest_percent
|
54
52
|
|
55
53
|
@smallest_percent
|
56
54
|
end
|
@@ -88,9 +88,7 @@ module RuboCop
|
|
88
88
|
# or redundant edits, we only mark one offense at a time.
|
89
89
|
return true if contained_by_breakable_collection_on_same_line?(node)
|
90
90
|
|
91
|
-
if contained_by_multiline_collection_that_could_be_broken_up?(node)
|
92
|
-
return true
|
93
|
-
end
|
91
|
+
return true if contained_by_multiline_collection_that_could_be_broken_up?(node)
|
94
92
|
|
95
93
|
false
|
96
94
|
end
|
@@ -141,9 +139,7 @@ module RuboCop
|
|
141
139
|
next unless ancestor.send_type?
|
142
140
|
|
143
141
|
args = process_args(ancestor.arguments)
|
144
|
-
if breakable_collection?(ancestor, args)
|
145
|
-
return children_could_be_broken_up?(args)
|
146
|
-
end
|
142
|
+
return children_could_be_broken_up?(args) if breakable_collection?(ancestor, args)
|
147
143
|
end
|
148
144
|
|
149
145
|
false
|
@@ -175,9 +171,7 @@ module RuboCop
|
|
175
171
|
# ...then each key/value pair is treated as a method 'argument'
|
176
172
|
# when determining where line breaks should appear.
|
177
173
|
if (last_arg = args.last)
|
178
|
-
if last_arg.hash_type? && !last_arg.braces?
|
179
|
-
args = args.concat(args.pop.children)
|
180
|
-
end
|
174
|
+
args = args.concat(args.pop.children) if last_arg.hash_type? && !last_arg.braces?
|
181
175
|
end
|
182
176
|
args
|
183
177
|
end
|
@@ -67,9 +67,7 @@ module RuboCop
|
|
67
67
|
def style
|
68
68
|
@style ||= begin
|
69
69
|
s = cop_config[style_parameter_name].to_sym
|
70
|
-
unless supported_styles.include?(s)
|
71
|
-
raise "Unknown style #{s} selected!"
|
72
|
-
end
|
70
|
+
raise "Unknown style #{s} selected!" unless supported_styles.include?(s)
|
73
71
|
|
74
72
|
s
|
75
73
|
end
|
@@ -18,14 +18,12 @@ module RuboCop
|
|
18
18
|
|
19
19
|
def report_opposing_styles(node, name)
|
20
20
|
alternative_styles.each do |alternative|
|
21
|
-
if valid_name?(node, name, alternative)
|
22
|
-
return unexpected_style_detected(alternative)
|
23
|
-
end
|
21
|
+
return unexpected_style_detected(alternative) if valid_name?(node, name, alternative)
|
24
22
|
end
|
25
23
|
end
|
26
24
|
|
27
25
|
def valid_name?(node, name, given_style = style)
|
28
|
-
name.match(self.class::FORMATS.fetch(given_style)) ||
|
26
|
+
name.match?(self.class::FORMATS.fetch(given_style)) ||
|
29
27
|
class_emitter_method?(node, name)
|
30
28
|
end
|
31
29
|
|
@@ -20,7 +20,7 @@ module RuboCop
|
|
20
20
|
return if ignored_node?(node)
|
21
21
|
|
22
22
|
end_loc = node.loc.end
|
23
|
-
return
|
23
|
+
return if accept_end_kw_alignment?(end_loc)
|
24
24
|
|
25
25
|
matching = matching_ranges(end_loc, align_ranges)
|
26
26
|
|
@@ -49,6 +49,11 @@ module RuboCop
|
|
49
49
|
add_offense(node, location: end_loc, message: msg)
|
50
50
|
end
|
51
51
|
|
52
|
+
def accept_end_kw_alignment?(end_loc)
|
53
|
+
end_loc.nil? || # Discard modifier forms of if/while/until.
|
54
|
+
processed_source.lines[end_loc.line - 1] !~ /\A[ \t]*end/
|
55
|
+
end
|
56
|
+
|
52
57
|
def style_parameter_name
|
53
58
|
'EnforcedStyleAlignWith'
|
54
59
|
end
|
@@ -46,7 +46,16 @@ module RuboCop
|
|
46
46
|
end
|
47
47
|
|
48
48
|
def leading_comment_lines
|
49
|
-
processed_source.
|
49
|
+
first_non_comment_token = processed_source.tokens.find do |token|
|
50
|
+
!token.comment?
|
51
|
+
end
|
52
|
+
|
53
|
+
if first_non_comment_token
|
54
|
+
# `line` is 1-indexed so we need to subtract 1 to get the array index
|
55
|
+
processed_source.lines[0...first_non_comment_token.line - 1]
|
56
|
+
else
|
57
|
+
processed_source.lines
|
58
|
+
end
|
50
59
|
end
|
51
60
|
end
|
52
61
|
end
|
@@ -132,7 +132,14 @@ module RuboCop
|
|
132
132
|
end
|
133
133
|
|
134
134
|
def self.from_map_to_h(node, match)
|
135
|
-
strip_trailing_chars =
|
135
|
+
strip_trailing_chars = 0
|
136
|
+
|
137
|
+
unless node.parent&.block_type?
|
138
|
+
map_range = node.children.first.source_range
|
139
|
+
node_range = node.source_range
|
140
|
+
strip_trailing_chars = node_range.end_pos - map_range.end_pos
|
141
|
+
end
|
142
|
+
|
136
143
|
new(match, node.children.first, 0, strip_trailing_chars)
|
137
144
|
end
|
138
145
|
|
@@ -161,7 +168,7 @@ module RuboCop
|
|
161
168
|
|
162
169
|
def set_new_body_expression(transforming_body_expr, corrector)
|
163
170
|
corrector.replace(
|
164
|
-
block_node.body
|
171
|
+
block_node.body,
|
165
172
|
transforming_body_expr.loc.expression.source
|
166
173
|
)
|
167
174
|
end
|
@@ -18,7 +18,7 @@ module RuboCop
|
|
18
18
|
|
19
19
|
return false unless comment
|
20
20
|
|
21
|
-
comment.text.match(CommentConfig::COMMENT_DIRECTIVE_REGEXP)
|
21
|
+
comment.text.match?(CommentConfig::COMMENT_DIRECTIVE_REGEXP)
|
22
22
|
end
|
23
23
|
|
24
24
|
def allow_uri?
|
@@ -63,7 +63,8 @@ module RuboCop
|
|
63
63
|
end
|
64
64
|
|
65
65
|
def tab_indentation_width
|
66
|
-
config.for_cop('Layout/
|
66
|
+
config.for_cop('Layout/IndentationStyle')['IndentationWidth'] ||
|
67
|
+
config.for_cop('Layout/IndentationWidth')['Width']
|
67
68
|
end
|
68
69
|
|
69
70
|
def uri_regexp
|
@@ -5,15 +5,20 @@ module RuboCop
|
|
5
5
|
# This module handles measurement and reporting of complexity in methods.
|
6
6
|
module MethodComplexity
|
7
7
|
include ConfigurableMax
|
8
|
+
include IgnoredMethods
|
8
9
|
extend NodePattern::Macros
|
9
10
|
|
10
11
|
def on_def(node)
|
12
|
+
return if ignored_method?(node.method_name)
|
13
|
+
|
11
14
|
check_complexity(node, node.method_name)
|
12
15
|
end
|
13
16
|
alias on_defs on_def
|
14
17
|
|
15
18
|
def on_block(node)
|
16
19
|
define_method?(node) do |name|
|
20
|
+
return if ignored_method?(name)
|
21
|
+
|
17
22
|
check_complexity(node, name)
|
18
23
|
end
|
19
24
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RuboCop
|
4
|
+
module Cop
|
5
|
+
# Common functionality for handling Regexp literals.
|
6
|
+
module RegexpLiteralHelp
|
7
|
+
private
|
8
|
+
|
9
|
+
def freespace_mode_regexp?(node)
|
10
|
+
regopt = node.children.find(&:regopt_type?)
|
11
|
+
|
12
|
+
regopt.children.include?(:x)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -4,6 +4,8 @@ module RuboCop
|
|
4
4
|
module Cop
|
5
5
|
# Common functionality for modifier cops.
|
6
6
|
module StatementModifier
|
7
|
+
include LineLengthHelp
|
8
|
+
|
7
9
|
private
|
8
10
|
|
9
11
|
def single_line_as_modifier?(node)
|
@@ -34,21 +36,14 @@ module RuboCop
|
|
34
36
|
def modifier_fits_on_single_line?(node)
|
35
37
|
return true unless max_line_length
|
36
38
|
|
37
|
-
|
38
|
-
node.body.source_length)
|
39
|
-
|
40
|
-
modifier_length <= max_line_length
|
39
|
+
length_in_modifier_form(node, node.condition) <= max_line_length
|
41
40
|
end
|
42
41
|
|
43
|
-
def length_in_modifier_form(node, cond
|
42
|
+
def length_in_modifier_form(node, cond)
|
44
43
|
keyword = node.loc.keyword
|
45
|
-
|
46
|
-
indentation
|
47
|
-
|
48
|
-
cond_length = cond.source_range.size
|
49
|
-
space = 1
|
50
|
-
|
51
|
-
indentation + body_length + space + kw_length + space + cond_length
|
44
|
+
indentation = keyword.source_line[/^\s*/]
|
45
|
+
line_length("#{indentation}#{node.body.source} #{keyword.source} " \
|
46
|
+
"#{cond.source}")
|
52
47
|
end
|
53
48
|
|
54
49
|
def max_line_length
|
@@ -56,16 +51,6 @@ module RuboCop
|
|
56
51
|
|
57
52
|
config.for_cop('Layout/LineLength')['Max']
|
58
53
|
end
|
59
|
-
|
60
|
-
def indentation_multiplier
|
61
|
-
return 1 if config.for_cop('Layout/Tab')['Enabled']
|
62
|
-
|
63
|
-
default_configuration = RuboCop::ConfigLoader.default_configuration
|
64
|
-
config.for_cop('Layout/Tab')['IndentationWidth'] ||
|
65
|
-
config.for_cop('Layout/IndentationWidth')['Width'] ||
|
66
|
-
default_configuration.for_cop('Layout/Tab')['IndentationWidth'] ||
|
67
|
-
default_configuration.for_cop('Layout/IndentationWidth')['Width']
|
68
|
-
end
|
69
54
|
end
|
70
55
|
end
|
71
56
|
end
|
@@ -4,12 +4,16 @@ module RuboCop
|
|
4
4
|
module Cop
|
5
5
|
# Common functionality for checking target ruby version.
|
6
6
|
module TargetRubyVersion
|
7
|
+
def required_minimum_ruby_version
|
8
|
+
@minimum_target_ruby_version
|
9
|
+
end
|
10
|
+
|
7
11
|
def minimum_target_ruby_version(version)
|
8
12
|
@minimum_target_ruby_version = version
|
9
13
|
end
|
10
14
|
|
11
15
|
def support_target_ruby_version?(version)
|
12
|
-
|
16
|
+
required_minimum_ruby_version <= version
|
13
17
|
end
|
14
18
|
end
|
15
19
|
end
|
@@ -135,7 +135,7 @@ module RuboCop
|
|
135
135
|
|
136
136
|
def avoid_comma(kind, comma_begin_pos, extra_info)
|
137
137
|
range = range_between(comma_begin_pos, comma_begin_pos + 1)
|
138
|
-
article =
|
138
|
+
article = /array/.match?(kind) ? 'an' : 'a'
|
139
139
|
msg = format(
|
140
140
|
MSG,
|
141
141
|
command: 'Avoid',
|
@@ -184,9 +184,7 @@ module RuboCop
|
|
184
184
|
# ...
|
185
185
|
# SOURCE
|
186
186
|
# })
|
187
|
-
if node.pair_type? || node.hash_type?
|
188
|
-
return heredoc?(node.children.last)
|
189
|
-
end
|
187
|
+
return heredoc?(node.children.last) if node.pair_type? || node.hash_type?
|
190
188
|
|
191
189
|
false
|
192
190
|
end
|
@@ -18,7 +18,7 @@ module RuboCop
|
|
18
18
|
full_name = arg.children.first.to_s
|
19
19
|
next if full_name == '_'
|
20
20
|
|
21
|
-
name = full_name.gsub(/\A(
|
21
|
+
name = full_name.gsub(/\A(_+)/, '')
|
22
22
|
next if (arg.restarg_type? || arg.kwrestarg_type?) && name.empty?
|
23
23
|
next if allowed_names.include?(name)
|
24
24
|
|
@@ -6,6 +6,12 @@ module RuboCop
|
|
6
6
|
# This cop checks for class and module names with
|
7
7
|
# an underscore in them.
|
8
8
|
#
|
9
|
+
# `AllowedNames` config takes an array of permitted names.
|
10
|
+
# Its default value is `['module_parent']`.
|
11
|
+
# These names can be full class/module names or part of the name.
|
12
|
+
# eg. Adding `my_class` to the `AllowedNames` config will allow names like
|
13
|
+
# `my_class`, `my_class::User`, `App::my_class`, `App::my_class::User`, etc.
|
14
|
+
#
|
9
15
|
# @example
|
10
16
|
# # bad
|
11
17
|
# class My_Class
|
@@ -18,11 +24,15 @@ module RuboCop
|
|
18
24
|
# end
|
19
25
|
# module MyModule
|
20
26
|
# end
|
27
|
+
# class module_parent::MyModule
|
28
|
+
# end
|
21
29
|
class ClassAndModuleCamelCase < Cop
|
22
30
|
MSG = 'Use CamelCase for classes and modules.'
|
23
31
|
|
24
32
|
def on_class(node)
|
25
|
-
|
33
|
+
allowed = /#{cop_config['AllowedNames'].join('|')}/
|
34
|
+
name = node.loc.name.source.gsub(allowed, '')
|
35
|
+
return unless /_/.match?(name)
|
26
36
|
|
27
37
|
add_offense(node, location: :name)
|
28
38
|
end
|
@@ -45,8 +45,9 @@ module RuboCop
|
|
45
45
|
# SomeClass = Class.new(...)
|
46
46
|
# SomeClass = Struct.new(...)
|
47
47
|
return if allowed_assignment?(value)
|
48
|
+
return if SNAKE_CASE.match?(const_name)
|
48
49
|
|
49
|
-
add_offense(node, location: :name)
|
50
|
+
add_offense(node, location: :name)
|
50
51
|
end
|
51
52
|
|
52
53
|
private
|
@@ -49,25 +49,36 @@ module RuboCop
|
|
49
49
|
|
50
50
|
def for_bad_filename(file_path)
|
51
51
|
basename = File.basename(file_path)
|
52
|
-
msg = if filename_good?(basename)
|
53
|
-
return if matching_definition?(file_path)
|
54
52
|
|
55
|
-
|
56
|
-
|
57
|
-
|
53
|
+
if filename_good?(basename)
|
54
|
+
msg = perform_class_and_module_naming_checks(file_path, basename)
|
55
|
+
else
|
56
|
+
msg = other_message(basename) unless bad_filename_allowed?
|
57
|
+
end
|
58
58
|
|
59
|
-
|
60
|
-
|
59
|
+
yield source_range(processed_source.buffer, 1, 0), msg if msg
|
60
|
+
end
|
61
61
|
|
62
|
-
|
62
|
+
def perform_class_and_module_naming_checks(file_path, basename)
|
63
|
+
return unless expect_matching_definition?
|
64
|
+
|
65
|
+
if check_definition_path_hierarchy? &&
|
66
|
+
!matching_definition?(file_path)
|
67
|
+
msg = no_definition_message(basename, file_path)
|
68
|
+
elsif !matching_class?(basename)
|
69
|
+
msg = no_definition_message(basename, basename)
|
70
|
+
end
|
71
|
+
msg
|
63
72
|
end
|
64
73
|
|
65
74
|
def matching_definition?(file_path)
|
66
|
-
return true unless expect_matching_definition?
|
67
|
-
|
68
75
|
find_class_or_module(processed_source.ast, to_namespace(file_path))
|
69
76
|
end
|
70
77
|
|
78
|
+
def matching_class?(file_name)
|
79
|
+
find_class_or_module(processed_source.ast, to_namespace(file_name))
|
80
|
+
end
|
81
|
+
|
71
82
|
def bad_filename_allowed?
|
72
83
|
ignore_executable_scripts? && processed_source.start_with?('#!')
|
73
84
|
end
|
@@ -94,6 +105,10 @@ module RuboCop
|
|
94
105
|
cop_config['ExpectMatchingDefinition']
|
95
106
|
end
|
96
107
|
|
108
|
+
def check_definition_path_hierarchy?
|
109
|
+
cop_config['CheckDefinitionPathHierarchy']
|
110
|
+
end
|
111
|
+
|
97
112
|
def regex
|
98
113
|
cop_config['Regex']
|
99
114
|
end
|
@@ -104,7 +119,7 @@ module RuboCop
|
|
104
119
|
|
105
120
|
def filename_good?(basename)
|
106
121
|
basename = basename.sub(/^\./, '')
|
107
|
-
basename = basename.sub(/\.[
|
122
|
+
basename = basename.sub(/\.[^.]+$/, '')
|
108
123
|
# special handling for Action Pack Variants file names like
|
109
124
|
# some_file.xlsx+mobile.axlsx
|
110
125
|
basename = basename.sub('+', '_')
|
@@ -153,9 +168,7 @@ module RuboCop
|
|
153
168
|
|
154
169
|
namespace, name = *namespace
|
155
170
|
|
156
|
-
if name == expected.last || match_acronym?(expected.last, name)
|
157
|
-
expected.pop
|
158
|
-
end
|
171
|
+
expected.pop if name == expected.last || match_acronym?(expected.last, name)
|
159
172
|
end
|
160
173
|
|
161
174
|
false
|