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
@@ -18,10 +18,6 @@ module RuboCop
|
|
18
18
|
# 'foo'.unpack1('h*')
|
19
19
|
#
|
20
20
|
class UnpackFirst < Cop
|
21
|
-
extend TargetRubyVersion
|
22
|
-
|
23
|
-
minimum_target_ruby_version 2.4
|
24
|
-
|
25
21
|
MSG = 'Use `%<receiver>s.unpack1(%<format>s)` instead of '\
|
26
22
|
'`%<receiver>s.unpack(%<format>s)%<method>s`.'
|
27
23
|
|
data/lib/rubocop/cop/team.rb
CHANGED
@@ -2,7 +2,13 @@
|
|
2
2
|
|
3
3
|
module RuboCop
|
4
4
|
module Cop
|
5
|
-
#
|
5
|
+
# A group of cops, ready to be called on duty to inspect files.
|
6
|
+
# Team is responsible for selecting only relevant cops to be sent on duty,
|
7
|
+
# as well as insuring that the needed forces are sent along with them.
|
8
|
+
#
|
9
|
+
# For performance reasons, Team will first dispatch cops & forces in two groups,
|
10
|
+
# first the ones needed for autocorrection (if any), then the rest
|
11
|
+
# (unless autocorrections happened).
|
6
12
|
class Team
|
7
13
|
DEFAULT_OPTIONS = {
|
8
14
|
auto_correct: false,
|
@@ -11,12 +17,12 @@ module RuboCop
|
|
11
17
|
|
12
18
|
Investigation = Struct.new(:offenses, :errors)
|
13
19
|
|
14
|
-
attr_reader :errors, :warnings, :updated_source_file
|
20
|
+
attr_reader :errors, :warnings, :updated_source_file, :cops
|
15
21
|
|
16
22
|
alias updated_source_file? updated_source_file
|
17
23
|
|
18
|
-
def initialize(
|
19
|
-
@
|
24
|
+
def initialize(cops, config = nil, options = nil)
|
25
|
+
@cops = cops
|
20
26
|
@config = config
|
21
27
|
@options = options || DEFAULT_OPTIONS
|
22
28
|
@errors = []
|
@@ -25,6 +31,23 @@ module RuboCop
|
|
25
31
|
validate_config
|
26
32
|
end
|
27
33
|
|
34
|
+
# @return [Team] with cops assembled from the given `cop_classes`
|
35
|
+
def self.mobilize(cop_classes, config, options = nil)
|
36
|
+
options ||= DEFAULT_OPTIONS
|
37
|
+
cops = mobilize_cops(cop_classes, config, options)
|
38
|
+
new(cops, config, options)
|
39
|
+
end
|
40
|
+
|
41
|
+
# @return [Array<Cop::Cop>]
|
42
|
+
def self.mobilize_cops(cop_classes, config, options = nil)
|
43
|
+
options ||= DEFAULT_OPTIONS
|
44
|
+
only = options.fetch(:only, [])
|
45
|
+
safe = options.fetch(:safe, false)
|
46
|
+
cop_classes.enabled(config, only, safe).map do |cop_class|
|
47
|
+
cop_class.new(config, options)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
28
51
|
def autocorrect?
|
29
52
|
@options[:auto_correct]
|
30
53
|
end
|
@@ -44,14 +67,6 @@ module RuboCop
|
|
44
67
|
offenses(processed_source)
|
45
68
|
end
|
46
69
|
|
47
|
-
def cops
|
48
|
-
only = @options.fetch(:only, [])
|
49
|
-
safe = @options.fetch(:safe, false)
|
50
|
-
@cops ||= @cop_classes.enabled(@config, only, safe).map do |cop_class|
|
51
|
-
cop_class.new(@config, @options)
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
70
|
def forces
|
56
71
|
@forces ||= forces_for(cops)
|
57
72
|
end
|
@@ -93,21 +108,23 @@ module RuboCop
|
|
93
108
|
|
94
109
|
private
|
95
110
|
|
96
|
-
def offenses(processed_source)
|
111
|
+
def offenses(processed_source) # rubocop:disable Metrics/AbcSize
|
97
112
|
# The autocorrection process may have to be repeated multiple times
|
98
113
|
# until there are no corrections left to perform
|
99
114
|
# To speed things up, run auto-correcting cops by themselves, and only
|
100
115
|
# run the other cops when no corrections are left
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
116
|
+
on_duty = roundup_relevant_cops(processed_source.file_path)
|
117
|
+
|
118
|
+
autocorrect_cops, other_cops = on_duty.partition(&:autocorrect?)
|
119
|
+
|
120
|
+
autocorrect = investigate(autocorrect_cops, processed_source)
|
121
|
+
|
122
|
+
if autocorrect(processed_source.buffer, autocorrect_cops)
|
123
|
+
# We corrected some errors. Another round of inspection will be
|
124
|
+
# done, and any other offenses will be caught then, so we don't
|
125
|
+
# need to continue.
|
126
|
+
return autocorrect.offenses
|
127
|
+
end
|
111
128
|
|
112
129
|
other = investigate(other_cops, processed_source)
|
113
130
|
|
@@ -120,13 +137,32 @@ module RuboCop
|
|
120
137
|
def investigate(cops, processed_source)
|
121
138
|
return Investigation.new([], {}) if cops.empty?
|
122
139
|
|
123
|
-
commissioner = Commissioner.new(cops, forces_for(cops))
|
140
|
+
commissioner = Commissioner.new(cops, forces_for(cops), @options)
|
124
141
|
offenses = commissioner.investigate(processed_source)
|
125
|
-
yield offenses if block_given?
|
126
142
|
|
127
143
|
Investigation.new(offenses, commissioner.errors)
|
128
144
|
end
|
129
145
|
|
146
|
+
def roundup_relevant_cops(filename)
|
147
|
+
cops.reject do |cop|
|
148
|
+
cop.excluded_file?(filename) ||
|
149
|
+
!support_target_ruby_version?(cop) ||
|
150
|
+
!support_target_rails_version?(cop)
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
def support_target_ruby_version?(cop)
|
155
|
+
return true unless cop.class.respond_to?(:support_target_ruby_version?)
|
156
|
+
|
157
|
+
cop.class.support_target_ruby_version?(cop.target_ruby_version)
|
158
|
+
end
|
159
|
+
|
160
|
+
def support_target_rails_version?(cop)
|
161
|
+
return true unless cop.class.respond_to?(:support_target_rails_version?)
|
162
|
+
|
163
|
+
cop.class.support_target_rails_version?(cop.target_rails_version)
|
164
|
+
end
|
165
|
+
|
130
166
|
def autocorrect_all_cops(buffer, cops)
|
131
167
|
corrector = Corrector.new(buffer)
|
132
168
|
|
data/lib/rubocop/cop/util.rb
CHANGED
@@ -17,6 +17,10 @@ module RuboCop
|
|
17
17
|
line_source =~ /^\s*#/
|
18
18
|
end
|
19
19
|
|
20
|
+
def comment_lines?(node)
|
21
|
+
processed_source[line_range(node)].any? { |line| comment_line?(line) }
|
22
|
+
end
|
23
|
+
|
20
24
|
def line_range(node)
|
21
25
|
node.first_line..node.last_line
|
22
26
|
end
|
@@ -26,6 +30,26 @@ module RuboCop
|
|
26
30
|
node.loc.end.is?(')')
|
27
31
|
end
|
28
32
|
|
33
|
+
def add_parentheses(node, corrector)
|
34
|
+
if node.arguments.empty?
|
35
|
+
corrector.insert_after(node, '()')
|
36
|
+
else
|
37
|
+
corrector.replace(args_begin(node), '(')
|
38
|
+
corrector.insert_after(args_end(node), ')')
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def args_begin(node)
|
43
|
+
loc = node.loc
|
44
|
+
selector =
|
45
|
+
node.super_type? || node.yield_type? ? loc.keyword : loc.selector
|
46
|
+
selector.end.resize(1)
|
47
|
+
end
|
48
|
+
|
49
|
+
def args_end(node)
|
50
|
+
node.loc.expression.end
|
51
|
+
end
|
52
|
+
|
29
53
|
def on_node(syms, sexp, excludes = [], &block)
|
30
54
|
return to_enum(:on_node, syms, sexp, excludes) unless block_given?
|
31
55
|
|
@@ -84,7 +108,7 @@ module RuboCop
|
|
84
108
|
end
|
85
109
|
|
86
110
|
def trim_string_interporation_escape_character(str)
|
87
|
-
str.gsub(
|
111
|
+
str.gsub(/\\\#\{(.*?)\}/) { "\#{#{Regexp.last_match(1)}}" }
|
88
112
|
end
|
89
113
|
|
90
114
|
def interpret_string_escapes(string)
|
@@ -152,9 +152,7 @@ module RuboCop
|
|
152
152
|
def process_variable_assignment(node)
|
153
153
|
name = node.children.first
|
154
154
|
|
155
|
-
unless variable_table.variable_exist?(name)
|
156
|
-
variable_table.declare_variable(name, node)
|
157
|
-
end
|
155
|
+
variable_table.declare_variable(name, node) unless variable_table.variable_exist?(name)
|
158
156
|
|
159
157
|
# Need to scan rhs before assignment so that we can mark previous
|
160
158
|
# assignments as referenced if rhs has referencing to the variable
|
@@ -211,9 +209,7 @@ module RuboCop
|
|
211
209
|
|
212
210
|
name = asgn_node.children.first
|
213
211
|
|
214
|
-
unless variable_table.variable_exist?(name)
|
215
|
-
variable_table.declare_variable(name, asgn_node)
|
216
|
-
end
|
212
|
+
variable_table.declare_variable(name, asgn_node) unless variable_table.variable_exist?(name)
|
217
213
|
|
218
214
|
# The following statements:
|
219
215
|
#
|
@@ -369,9 +365,7 @@ module RuboCop
|
|
369
365
|
AssignmentReference.new(node)
|
370
366
|
when *OPERATOR_ASSIGNMENT_TYPES
|
371
367
|
asgn_node = node.children.first
|
372
|
-
if asgn_node.lvasgn_type?
|
373
|
-
VariableReference.new(asgn_node.children.first)
|
374
|
-
end
|
368
|
+
VariableReference.new(asgn_node.children.first) if asgn_node.lvasgn_type?
|
375
369
|
end
|
376
370
|
end
|
377
371
|
|
@@ -81,9 +81,7 @@ module RuboCop
|
|
81
81
|
end
|
82
82
|
|
83
83
|
def each_ancestor(include_self: false, &block)
|
84
|
-
unless block_given?
|
85
|
-
return to_enum(__method__, include_self: include_self)
|
86
|
-
end
|
84
|
+
return to_enum(__method__, include_self: include_self) unless block_given?
|
87
85
|
|
88
86
|
yield self if include_self
|
89
87
|
scan_ancestors(&block)
|
@@ -11,6 +11,7 @@ module RuboCop
|
|
11
11
|
|
12
12
|
attr_reader :name, :declaration_node, :scope,
|
13
13
|
:assignments, :references, :captured_by_block
|
14
|
+
|
14
15
|
alias captured_by_block? captured_by_block
|
15
16
|
|
16
17
|
def initialize(name, declaration_node, scope)
|
@@ -46,9 +47,7 @@ module RuboCop
|
|
46
47
|
@assignments.reverse_each do |assignment|
|
47
48
|
next if consumed_branches.include?(assignment.branch)
|
48
49
|
|
49
|
-
unless assignment.run_exclusively_with?(reference)
|
50
|
-
assignment.reference!(node)
|
51
|
-
end
|
50
|
+
assignment.reference!(node) unless assignment.run_exclusively_with?(reference)
|
52
51
|
|
53
52
|
# Modifier if/unless conditions are special. Assignments made in
|
54
53
|
# them do not put the assigned variable in scope to the left of the
|
@@ -59,9 +58,7 @@ module RuboCop
|
|
59
58
|
|
60
59
|
break if !assignment.branch || assignment.branch == reference.branch
|
61
60
|
|
62
|
-
unless assignment.branch.may_run_incompletely?
|
63
|
-
consumed_branches << assignment.branch
|
64
|
-
end
|
61
|
+
consumed_branches << assignment.branch unless assignment.branch.may_run_incompletely?
|
65
62
|
end
|
66
63
|
end
|
67
64
|
# rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RuboCop
|
4
|
+
module Ext
|
5
|
+
# Extensions to AST::ProcessedSource for our cached comment_config
|
6
|
+
module ProcessedSource
|
7
|
+
def comment_config
|
8
|
+
@comment_config ||= CommentConfig.new(self)
|
9
|
+
end
|
10
|
+
|
11
|
+
def disabled_line_ranges
|
12
|
+
comment_config.cop_disabled_line_ranges
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
RuboCop::ProcessedSource.include RuboCop::Ext::ProcessedSource
|
@@ -1,7 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# rubocop:disable Layout/LineLength
|
4
|
-
|
5
3
|
module RuboCop
|
6
4
|
module Formatter
|
7
5
|
# Abstract base class for formatter, implements all public API methods.
|
@@ -41,8 +39,6 @@ module RuboCop
|
|
41
39
|
# * `#finished`
|
42
40
|
#
|
43
41
|
class BaseFormatter
|
44
|
-
# rubocop:enable Layout/LineLength
|
45
|
-
|
46
42
|
# @api public
|
47
43
|
#
|
48
44
|
# @!attribute [r] output
|
@@ -29,7 +29,7 @@ module RuboCop
|
|
29
29
|
|
30
30
|
report_line(offense.location)
|
31
31
|
report_highlighted_area(offense.highlighted_area)
|
32
|
-
rescue IndexError
|
32
|
+
rescue IndexError
|
33
33
|
# range is not on a valid line; perhaps the source file is empty
|
34
34
|
end
|
35
35
|
end
|
@@ -59,9 +59,7 @@ module RuboCop
|
|
59
59
|
def command
|
60
60
|
command = 'rubocop --auto-gen-config'
|
61
61
|
|
62
|
-
if @options[:auto_gen_only_exclude]
|
63
|
-
command += ' --auto-gen-only-exclude'
|
64
|
-
end
|
62
|
+
command += ' --auto-gen-only-exclude' if @options[:auto_gen_only_exclude]
|
65
63
|
|
66
64
|
if @exclude_limit_option
|
67
65
|
command +=
|
@@ -70,9 +68,7 @@ module RuboCop
|
|
70
68
|
end
|
71
69
|
command += ' --no-offense-counts' if @options[:no_offense_counts]
|
72
70
|
|
73
|
-
if @options[:no_auto_gen_timestamp]
|
74
|
-
command += ' --no-auto-gen-timestamp'
|
75
|
-
end
|
71
|
+
command += ' --no-auto-gen-timestamp' if @options[:no_auto_gen_timestamp]
|
76
72
|
|
77
73
|
command
|
78
74
|
end
|
@@ -116,14 +112,10 @@ module RuboCop
|
|
116
112
|
end
|
117
113
|
|
118
114
|
def output_cop_comments(output_buffer, cfg, cop_name, offense_count)
|
119
|
-
if @show_offense_counts
|
120
|
-
output_buffer.puts "# Offense count: #{offense_count}"
|
121
|
-
end
|
115
|
+
output_buffer.puts "# Offense count: #{offense_count}" if @show_offense_counts
|
122
116
|
|
123
117
|
cop_class = Cop::Cop.registry.find_by_cop_name(cop_name)
|
124
|
-
if cop_class&.new&.support_autocorrect?
|
125
|
-
output_buffer.puts '# Cop supports --auto-correct.'
|
126
|
-
end
|
118
|
+
output_buffer.puts '# Cop supports --auto-correct.' if cop_class&.new&.support_autocorrect?
|
127
119
|
|
128
120
|
default_cfg = default_config(cop_name)
|
129
121
|
return unless default_cfg
|
@@ -11,7 +11,6 @@ module RuboCop
|
|
11
11
|
BUILTIN_FORMATTERS_FOR_KEYS = {
|
12
12
|
'[a]utogenconf' => AutoGenConfigFormatter,
|
13
13
|
'[c]lang' => ClangStyleFormatter,
|
14
|
-
'[d]isabled' => DisabledLinesFormatter,
|
15
14
|
'[e]macs' => EmacsStyleFormatter,
|
16
15
|
'[fi]les' => FileListFormatter,
|
17
16
|
'[fu]ubar' => FuubarStyleFormatter,
|
@@ -88,9 +87,7 @@ module RuboCop
|
|
88
87
|
|
89
88
|
raise %(No formatter for "#{specified_key}") if matching_keys.empty?
|
90
89
|
|
91
|
-
if matching_keys.size > 1
|
92
|
-
raise %(Cannot determine formatter for "#{specified_key}")
|
93
|
-
end
|
90
|
+
raise %(Cannot determine formatter for "#{specified_key}") if matching_keys.size > 1
|
94
91
|
|
95
92
|
BUILTIN_FORMATTERS_FOR_KEYS[matching_keys.first]
|
96
93
|
end
|