rubocop 0.89.1 → 0.93.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 +2 -2
- data/config/default.yml +160 -14
- data/lib/rubocop.rb +33 -5
- data/lib/rubocop/cached_data.rb +3 -1
- data/lib/rubocop/cli/command.rb +1 -0
- data/lib/rubocop/cli/command/auto_genenerate_config.rb +1 -0
- data/lib/rubocop/cli/command/base.rb +1 -0
- data/lib/rubocop/cli/command/execute_runner.rb +9 -0
- data/lib/rubocop/cli/command/init_dotfile.rb +1 -0
- data/lib/rubocop/cli/command/show_cops.rb +1 -0
- data/lib/rubocop/cli/command/version.rb +1 -0
- data/lib/rubocop/cli/environment.rb +1 -0
- data/lib/rubocop/comment_config.rb +14 -5
- data/lib/rubocop/config_loader.rb +20 -9
- data/lib/rubocop/config_loader_resolver.rb +1 -0
- data/lib/rubocop/config_obsoletion.rb +1 -0
- data/lib/rubocop/config_regeneration.rb +33 -0
- data/lib/rubocop/config_store.rb +3 -3
- data/lib/rubocop/config_validator.rb +3 -0
- data/lib/rubocop/cop/base.rb +23 -0
- data/lib/rubocop/cop/bundler/duplicated_gem.rb +5 -1
- data/lib/rubocop/cop/bundler/gem_comment.rb +8 -3
- data/lib/rubocop/cop/bundler/insecure_protocol_source.rb +2 -0
- data/lib/rubocop/cop/commissioner.rb +47 -7
- data/lib/rubocop/cop/correctors/alignment_corrector.rb +4 -4
- data/lib/rubocop/cop/correctors/condition_corrector.rb +3 -5
- data/lib/rubocop/cop/correctors/empty_line_corrector.rb +9 -10
- data/lib/rubocop/cop/correctors/line_break_corrector.rb +4 -4
- data/lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb +8 -3
- data/lib/rubocop/cop/correctors/parentheses_corrector.rb +5 -8
- data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +4 -9
- data/lib/rubocop/cop/correctors/punctuation_corrector.rb +8 -10
- data/lib/rubocop/cop/documentation.rb +22 -0
- data/lib/rubocop/cop/gemspec/required_ruby_version.rb +10 -10
- data/lib/rubocop/cop/generator.rb +2 -1
- data/lib/rubocop/cop/internal_affairs/method_name_equal.rb +1 -0
- data/lib/rubocop/cop/internal_affairs/node_type_predicate.rb +1 -0
- data/lib/rubocop/cop/internal_affairs/offense_location_keyword.rb +1 -0
- data/lib/rubocop/cop/internal_affairs/redundant_location_argument.rb +1 -0
- data/lib/rubocop/cop/internal_affairs/redundant_message_argument.rb +1 -0
- data/lib/rubocop/cop/layout/array_alignment.rb +1 -0
- data/lib/rubocop/cop/layout/begin_end_alignment.rb +77 -0
- data/lib/rubocop/cop/layout/block_alignment.rb +23 -19
- data/lib/rubocop/cop/layout/case_indentation.rb +4 -7
- data/lib/rubocop/cop/layout/class_structure.rb +11 -10
- data/lib/rubocop/cop/layout/closing_heredoc_indentation.rb +4 -6
- data/lib/rubocop/cop/layout/condition_position.rb +13 -15
- data/lib/rubocop/cop/layout/def_end_alignment.rb +8 -5
- data/lib/rubocop/cop/layout/dot_position.rb +21 -20
- data/lib/rubocop/cop/layout/empty_comment.rb +30 -23
- data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +21 -18
- data/lib/rubocop/cop/layout/empty_line_after_magic_comment.rb +13 -13
- data/lib/rubocop/cop/layout/empty_line_after_multiline_condition.rb +136 -0
- data/lib/rubocop/cop/layout/empty_line_between_defs.rb +21 -23
- data/lib/rubocop/cop/layout/empty_lines.rb +6 -7
- data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +17 -14
- data/lib/rubocop/cop/layout/empty_lines_around_arguments.rb +7 -8
- data/lib/rubocop/cop/layout/empty_lines_around_attribute_accessor.rb +5 -8
- data/lib/rubocop/cop/layout/empty_lines_around_begin_body.rb +2 -5
- data/lib/rubocop/cop/layout/empty_lines_around_block_body.rb +2 -5
- data/lib/rubocop/cop/layout/empty_lines_around_class_body.rb +2 -5
- data/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +3 -7
- data/lib/rubocop/cop/layout/empty_lines_around_method_body.rb +2 -5
- data/lib/rubocop/cop/layout/empty_lines_around_module_body.rb +2 -5
- data/lib/rubocop/cop/layout/end_alignment.rb +11 -17
- data/lib/rubocop/cop/layout/first_array_element_line_break.rb +2 -5
- data/lib/rubocop/cop/layout/first_hash_element_line_break.rb +2 -5
- data/lib/rubocop/cop/layout/first_method_argument_line_break.rb +4 -8
- data/lib/rubocop/cop/layout/first_method_parameter_line_break.rb +2 -5
- data/lib/rubocop/cop/layout/hash_alignment.rb +17 -20
- data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +15 -14
- data/lib/rubocop/cop/layout/heredoc_indentation.rb +14 -11
- data/lib/rubocop/cop/layout/initial_indentation.rb +6 -7
- data/lib/rubocop/cop/layout/leading_comment_space.rb +11 -9
- data/lib/rubocop/cop/layout/leading_empty_lines.rb +6 -11
- data/lib/rubocop/cop/layout/multiline_array_brace_layout.rb +2 -5
- data/lib/rubocop/cop/layout/multiline_array_line_breaks.rb +2 -5
- data/lib/rubocop/cop/layout/multiline_assignment_layout.rb +10 -14
- data/lib/rubocop/cop/layout/multiline_block_layout.rb +21 -19
- data/lib/rubocop/cop/layout/multiline_hash_brace_layout.rb +2 -5
- data/lib/rubocop/cop/layout/multiline_hash_key_line_breaks.rb +2 -5
- data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +5 -9
- data/lib/rubocop/cop/layout/multiline_method_call_brace_layout.rb +2 -5
- data/lib/rubocop/cop/layout/multiline_method_definition_brace_layout.rb +2 -5
- data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +41 -22
- data/lib/rubocop/cop/layout/space_after_colon.rb +11 -7
- data/lib/rubocop/cop/layout/space_after_comma.rb +2 -5
- data/lib/rubocop/cop/layout/space_after_method_name.rb +5 -6
- data/lib/rubocop/cop/layout/space_after_not.rb +9 -11
- data/lib/rubocop/cop/layout/space_after_semicolon.rb +2 -5
- data/lib/rubocop/cop/layout/space_around_equals_in_parameter_default.rb +17 -21
- data/lib/rubocop/cop/layout/space_around_keyword.rb +17 -18
- data/lib/rubocop/cop/layout/space_around_operators.rb +17 -16
- data/lib/rubocop/cop/layout/space_before_block_braces.rb +23 -22
- data/lib/rubocop/cop/layout/space_before_comma.rb +3 -5
- data/lib/rubocop/cop/layout/space_before_comment.rb +10 -7
- data/lib/rubocop/cop/layout/space_before_first_arg.rb +7 -7
- data/lib/rubocop/cop/layout/space_before_semicolon.rb +2 -5
- data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +9 -17
- data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +20 -23
- data/lib/rubocop/cop/layout/space_inside_array_percent_literal.rb +3 -8
- data/lib/rubocop/cop/layout/space_inside_block_braces.rb +13 -16
- data/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +19 -37
- data/lib/rubocop/cop/layout/space_inside_parens.rb +9 -14
- data/lib/rubocop/cop/layout/space_inside_percent_literal_delimiters.rb +5 -10
- data/lib/rubocop/cop/layout/space_inside_range_literal.rb +8 -17
- data/lib/rubocop/cop/layout/space_inside_reference_brackets.rb +16 -24
- data/lib/rubocop/cop/layout/space_inside_string_interpolation.rb +12 -13
- data/lib/rubocop/cop/layout/trailing_empty_lines.rb +10 -15
- data/lib/rubocop/cop/layout/trailing_whitespace.rb +11 -11
- data/lib/rubocop/cop/lint/ambiguous_block_association.rb +2 -0
- data/lib/rubocop/cop/lint/ambiguous_operator.rb +2 -0
- data/lib/rubocop/cop/lint/ambiguous_regexp_literal.rb +15 -1
- data/lib/rubocop/cop/lint/big_decimal_new.rb +1 -2
- data/lib/rubocop/cop/lint/binary_operator_with_identical_operands.rb +1 -1
- data/lib/rubocop/cop/lint/boolean_symbol.rb +3 -0
- data/lib/rubocop/cop/lint/constant_definition_in_block.rb +74 -0
- data/lib/rubocop/cop/lint/constant_resolution.rb +1 -1
- data/lib/rubocop/cop/lint/debugger.rb +2 -3
- data/lib/rubocop/cop/lint/deprecated_class_methods.rb +1 -3
- data/lib/rubocop/cop/lint/duplicate_methods.rb +2 -4
- data/lib/rubocop/cop/lint/duplicate_require.rb +46 -0
- data/lib/rubocop/cop/lint/duplicate_rescue_exception.rb +2 -15
- data/lib/rubocop/cop/lint/each_with_object_argument.rb +1 -0
- data/lib/rubocop/cop/lint/empty_file.rb +50 -0
- data/lib/rubocop/cop/lint/erb_new_arguments.rb +2 -0
- data/lib/rubocop/cop/lint/float_comparison.rb +2 -2
- data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +2 -2
- data/lib/rubocop/cop/lint/hash_compare_by_identity.rb +37 -0
- data/lib/rubocop/cop/lint/identity_comparison.rb +51 -0
- data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +2 -5
- data/lib/rubocop/cop/lint/inherit_exception.rb +2 -2
- data/lib/rubocop/cop/lint/missing_super.rb +2 -2
- data/lib/rubocop/cop/lint/mixed_regexp_capture_types.rb +3 -35
- data/lib/rubocop/cop/lint/multiple_comparison.rb +3 -1
- data/lib/rubocop/cop/lint/number_conversion.rb +1 -0
- data/lib/rubocop/cop/lint/out_of_range_regexp_ref.rb +9 -20
- data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +1 -1
- data/lib/rubocop/cop/lint/percent_string_array.rb +8 -12
- data/lib/rubocop/cop/lint/raise_exception.rb +1 -0
- data/lib/rubocop/cop/lint/rand_one.rb +2 -1
- data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +22 -12
- data/lib/rubocop/cop/lint/redundant_cop_enable_directive.rb +14 -4
- data/lib/rubocop/cop/lint/redundant_require_statement.rb +1 -0
- data/lib/rubocop/cop/lint/redundant_safe_navigation.rb +45 -0
- data/lib/rubocop/cop/lint/rescue_type.rb +0 -1
- data/lib/rubocop/cop/lint/send_with_mixin_argument.rb +3 -1
- data/lib/rubocop/cop/lint/shadowed_exception.rb +6 -6
- data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +4 -4
- data/lib/rubocop/cop/lint/struct_new_override.rb +1 -0
- data/lib/rubocop/cop/lint/to_json.rb +16 -5
- data/lib/rubocop/cop/lint/top_level_return_with_argument.rb +1 -1
- data/lib/rubocop/cop/lint/trailing_comma_in_attribute_declaration.rb +57 -0
- data/lib/rubocop/cop/lint/unreachable_loop.rb +3 -6
- data/lib/rubocop/cop/lint/uri_escape_unescape.rb +3 -1
- data/lib/rubocop/cop/lint/uri_regexp.rb +2 -1
- data/lib/rubocop/cop/lint/useless_access_modifier.rb +3 -9
- data/lib/rubocop/cop/lint/useless_method_definition.rb +70 -0
- data/lib/rubocop/cop/lint/useless_times.rb +106 -0
- data/lib/rubocop/cop/metrics/block_length.rb +3 -1
- data/lib/rubocop/cop/metrics/class_length.rb +8 -6
- data/lib/rubocop/cop/metrics/utils/abc_size_calculator.rb +27 -16
- data/lib/rubocop/cop/metrics/utils/code_length_calculator.rb +1 -0
- data/lib/rubocop/cop/mixin/alignment.rb +3 -0
- data/lib/rubocop/cop/mixin/allowed_methods.rb +2 -0
- data/lib/rubocop/cop/mixin/annotation_comment.rb +5 -0
- data/lib/rubocop/cop/mixin/check_line_breakable.rb +16 -7
- data/lib/rubocop/cop/mixin/comments_help.rb +48 -0
- data/lib/rubocop/cop/mixin/configurable_naming.rb +2 -2
- data/lib/rubocop/cop/mixin/configurable_numbering.rb +3 -3
- data/lib/rubocop/cop/mixin/empty_lines_around_body.rb +8 -7
- data/lib/rubocop/cop/mixin/empty_parameter.rb +3 -1
- data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +12 -1
- data/lib/rubocop/cop/mixin/first_element_line_break.rb +3 -1
- data/lib/rubocop/cop/mixin/hash_transform_method.rb +27 -2
- data/lib/rubocop/cop/mixin/multiline_element_line_breaks.rb +3 -1
- data/lib/rubocop/cop/mixin/multiline_literal_brace_layout.rb +12 -10
- data/lib/rubocop/cop/mixin/negative_conditional.rb +2 -2
- data/lib/rubocop/cop/mixin/percent_array.rb +14 -3
- data/lib/rubocop/cop/mixin/rescue_node.rb +11 -1
- data/lib/rubocop/cop/mixin/space_after_punctuation.rb +4 -3
- data/lib/rubocop/cop/mixin/space_before_punctuation.rb +4 -3
- data/lib/rubocop/cop/mixin/statement_modifier.rb +9 -3
- data/lib/rubocop/cop/mixin/surrounding_space.rb +8 -4
- data/lib/rubocop/cop/mixin/trailing_comma.rb +7 -7
- data/lib/rubocop/cop/mixin/visibility_help.rb +4 -16
- data/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +1 -1
- data/lib/rubocop/cop/naming/file_name.rb +1 -1
- data/lib/rubocop/cop/offense.rb +16 -2
- data/lib/rubocop/cop/security/eval.rb +1 -0
- data/lib/rubocop/cop/security/json_load.rb +1 -0
- data/lib/rubocop/cop/security/marshal_load.rb +1 -0
- data/lib/rubocop/cop/security/open.rb +1 -0
- data/lib/rubocop/cop/security/yaml_load.rb +1 -0
- data/lib/rubocop/cop/severity.rb +0 -8
- data/lib/rubocop/cop/style/access_modifier_declarations.rb +7 -11
- data/lib/rubocop/cop/style/accessor_grouping.rb +3 -0
- data/lib/rubocop/cop/style/alias.rb +2 -0
- data/lib/rubocop/cop/style/array_coercion.rb +4 -0
- data/lib/rubocop/cop/style/array_join.rb +1 -0
- data/lib/rubocop/cop/style/attr.rb +1 -0
- data/lib/rubocop/cop/style/auto_resource_cleanup.rb +2 -0
- data/lib/rubocop/cop/style/case_equality.rb +11 -3
- data/lib/rubocop/cop/style/case_like_if.rb +40 -8
- data/lib/rubocop/cop/style/class_and_module_children.rb +2 -0
- data/lib/rubocop/cop/style/class_check.rb +6 -9
- data/lib/rubocop/cop/style/class_equality_comparison.rb +49 -0
- data/lib/rubocop/cop/style/class_methods_definitions.rb +157 -0
- data/lib/rubocop/cop/style/class_vars.rb +1 -2
- data/lib/rubocop/cop/style/combinable_loops.rb +91 -0
- data/lib/rubocop/cop/style/comment_annotation.rb +6 -0
- data/lib/rubocop/cop/style/commented_keyword.rb +7 -8
- data/lib/rubocop/cop/style/conditional_assignment.rb +49 -60
- data/lib/rubocop/cop/style/date_time.rb +12 -1
- data/lib/rubocop/cop/style/dir.rb +1 -0
- data/lib/rubocop/cop/style/double_negation.rb +1 -0
- data/lib/rubocop/cop/style/empty_block_parameter.rb +9 -10
- data/lib/rubocop/cop/style/empty_lambda_parameter.rb +9 -10
- data/lib/rubocop/cop/style/empty_literal.rb +3 -1
- data/lib/rubocop/cop/style/eval_with_location.rb +1 -3
- data/lib/rubocop/cop/style/even_odd.rb +1 -0
- data/lib/rubocop/cop/style/expand_path_arguments.rb +2 -2
- data/lib/rubocop/cop/style/explicit_block_argument.rb +7 -3
- data/lib/rubocop/cop/style/float_division.rb +2 -0
- data/lib/rubocop/cop/style/for.rb +0 -4
- data/lib/rubocop/cop/style/format_string.rb +1 -4
- data/lib/rubocop/cop/style/format_string_token.rb +1 -1
- data/lib/rubocop/cop/style/guard_clause.rb +1 -0
- data/lib/rubocop/cop/style/hash_as_last_array_item.rb +24 -5
- data/lib/rubocop/cop/style/hash_syntax.rb +6 -5
- data/lib/rubocop/cop/style/hash_transform_keys.rb +16 -9
- data/lib/rubocop/cop/style/hash_transform_values.rb +16 -9
- data/lib/rubocop/cop/style/if_unless_modifier.rb +2 -6
- data/lib/rubocop/cop/style/implicit_runtime_error.rb +1 -0
- data/lib/rubocop/cop/style/keyword_parameters_order.rb +53 -0
- data/lib/rubocop/cop/style/lambda_call.rb +3 -1
- data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +10 -1
- data/lib/rubocop/cop/style/method_def_parentheses.rb +0 -4
- data/lib/rubocop/cop/style/mixin_usage.rb +8 -27
- data/lib/rubocop/cop/style/multiline_block_chain.rb +2 -2
- data/lib/rubocop/cop/style/multiline_ternary_operator.rb +14 -1
- data/lib/rubocop/cop/style/multiline_when_then.rb +3 -2
- data/lib/rubocop/cop/style/negated_if.rb +6 -6
- data/lib/rubocop/cop/style/negated_unless.rb +6 -6
- data/lib/rubocop/cop/style/negated_while.rb +7 -15
- data/lib/rubocop/cop/style/nested_modifier.rb +10 -13
- data/lib/rubocop/cop/style/nested_parenthesized_calls.rb +11 -11
- data/lib/rubocop/cop/style/nested_ternary_operator.rb +16 -16
- data/lib/rubocop/cop/style/next.rb +10 -14
- data/lib/rubocop/cop/style/nil_comparison.rb +13 -11
- data/lib/rubocop/cop/style/non_nil_check.rb +34 -26
- data/lib/rubocop/cop/style/not.rb +20 -26
- data/lib/rubocop/cop/style/numeric_literal_prefix.rb +4 -9
- data/lib/rubocop/cop/style/numeric_predicate.rb +5 -14
- data/lib/rubocop/cop/style/one_line_conditional.rb +73 -23
- data/lib/rubocop/cop/style/option_hash.rb +1 -1
- data/lib/rubocop/cop/style/optional_arguments.rb +1 -1
- data/lib/rubocop/cop/style/optional_boolean_parameter.rb +12 -1
- data/lib/rubocop/cop/style/or_assignment.rb +13 -10
- data/lib/rubocop/cop/style/parallel_assignment.rb +14 -14
- data/lib/rubocop/cop/style/parentheses_around_condition.rb +6 -6
- data/lib/rubocop/cop/style/percent_literal_delimiters.rb +13 -19
- data/lib/rubocop/cop/style/percent_q_literals.rb +8 -10
- data/lib/rubocop/cop/style/perl_backrefs.rb +8 -10
- data/lib/rubocop/cop/style/preferred_hash_methods.rb +11 -14
- data/lib/rubocop/cop/style/proc.rb +6 -6
- data/lib/rubocop/cop/style/raise_args.rb +12 -24
- data/lib/rubocop/cop/style/random_with_offset.rb +19 -19
- data/lib/rubocop/cop/style/redundant_assignment.rb +8 -18
- data/lib/rubocop/cop/style/redundant_begin.rb +28 -12
- data/lib/rubocop/cop/style/redundant_capital_w.rb +6 -9
- data/lib/rubocop/cop/style/redundant_condition.rb +10 -7
- data/lib/rubocop/cop/style/redundant_conditional.rb +4 -5
- data/lib/rubocop/cop/style/redundant_exception.rb +1 -3
- data/lib/rubocop/cop/style/redundant_fetch_block.rb +3 -12
- data/lib/rubocop/cop/style/redundant_file_extension_in_require.rb +9 -8
- data/lib/rubocop/cop/style/redundant_freeze.rb +5 -7
- data/lib/rubocop/cop/style/redundant_interpolation.rb +31 -25
- data/lib/rubocop/cop/style/redundant_parentheses.rb +21 -15
- data/lib/rubocop/cop/style/redundant_percent_q.rb +9 -11
- data/lib/rubocop/cop/style/redundant_regexp_character_class.rb +44 -36
- data/lib/rubocop/cop/style/redundant_regexp_escape.rb +13 -29
- data/lib/rubocop/cop/style/redundant_return.rb +17 -17
- data/lib/rubocop/cop/style/redundant_self.rb +9 -11
- data/lib/rubocop/cop/style/redundant_self_assignment.rb +116 -0
- data/lib/rubocop/cop/style/redundant_sort.rb +12 -29
- data/lib/rubocop/cop/style/redundant_sort_by.rb +5 -9
- data/lib/rubocop/cop/style/regexp_literal.rb +10 -21
- data/lib/rubocop/cop/style/rescue_modifier.rb +29 -9
- data/lib/rubocop/cop/style/rescue_standard_error.rb +20 -16
- data/lib/rubocop/cop/style/return_nil.rb +5 -5
- data/lib/rubocop/cop/style/safe_navigation.rb +18 -12
- data/lib/rubocop/cop/style/sample.rb +12 -14
- data/lib/rubocop/cop/style/self_assignment.rb +26 -22
- data/lib/rubocop/cop/style/semicolon.rb +6 -9
- data/lib/rubocop/cop/style/send.rb +4 -5
- data/lib/rubocop/cop/style/signal_exception.rb +23 -19
- data/lib/rubocop/cop/style/single_argument_dig.rb +1 -0
- data/lib/rubocop/cop/style/single_line_block_params.rb +4 -2
- data/lib/rubocop/cop/style/single_line_methods.rb +17 -16
- data/lib/rubocop/cop/style/slicing_with_range.rb +6 -8
- data/lib/rubocop/cop/style/sole_nested_conditional.rb +66 -0
- data/lib/rubocop/cop/style/special_global_vars.rb +10 -15
- data/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +17 -21
- data/lib/rubocop/cop/style/stderr_puts.rb +5 -6
- data/lib/rubocop/cop/style/string_concatenation.rb +17 -3
- data/lib/rubocop/cop/style/string_hash_keys.rb +6 -7
- data/lib/rubocop/cop/style/string_methods.rb +7 -17
- data/lib/rubocop/cop/style/strip.rb +9 -14
- data/lib/rubocop/cop/style/struct_inheritance.rb +3 -6
- data/lib/rubocop/cop/style/symbol_array.rb +5 -16
- data/lib/rubocop/cop/style/symbol_literal.rb +4 -6
- data/lib/rubocop/cop/style/symbol_proc.rb +14 -18
- data/lib/rubocop/cop/style/ternary_parentheses.rb +22 -22
- data/lib/rubocop/cop/style/trailing_body_on_class.rb +3 -6
- data/lib/rubocop/cop/style/trailing_body_on_method_definition.rb +4 -7
- data/lib/rubocop/cop/style/trailing_body_on_module.rb +3 -6
- data/lib/rubocop/cop/style/trailing_comma_in_arguments.rb +2 -5
- data/lib/rubocop/cop/style/trailing_comma_in_array_literal.rb +2 -5
- data/lib/rubocop/cop/style/trailing_comma_in_block_args.rb +11 -9
- data/lib/rubocop/cop/style/trailing_comma_in_hash_literal.rb +2 -5
- data/lib/rubocop/cop/style/trailing_underscore_variable.rb +8 -17
- data/lib/rubocop/cop/style/trivial_accessors.rb +26 -30
- data/lib/rubocop/cop/style/unless_else.rb +5 -8
- data/lib/rubocop/cop/style/unpack_first.rb +5 -8
- data/lib/rubocop/cop/style/variable_interpolation.rb +7 -10
- data/lib/rubocop/cop/style/when_then.rb +4 -6
- data/lib/rubocop/cop/style/while_until_do.rb +6 -16
- data/lib/rubocop/cop/style/while_until_modifier.rb +6 -20
- data/lib/rubocop/cop/style/word_array.rb +5 -23
- data/lib/rubocop/cop/style/yoda_condition.rb +4 -15
- data/lib/rubocop/cop/style/zero_length_predicate.rb +12 -18
- data/lib/rubocop/cop/team.rb +1 -0
- data/lib/rubocop/cop/util.rb +1 -2
- data/lib/rubocop/cop/utils/format_string.rb +3 -5
- data/lib/rubocop/cop/variable_force.rb +2 -0
- data/lib/rubocop/cop/variable_force/branch.rb +0 -4
- data/lib/rubocop/cops_documentation_generator.rb +4 -2
- data/lib/rubocop/core_ext/string.rb +2 -2
- data/lib/rubocop/directive_comment.rb +32 -0
- data/lib/rubocop/ext/regexp_node.rb +62 -0
- data/lib/rubocop/file_finder.rb +1 -0
- data/lib/rubocop/formatter/auto_gen_config_formatter.rb +2 -1
- data/lib/rubocop/formatter/disabled_config_formatter.rb +12 -5
- data/lib/rubocop/formatter/html_formatter.rb +2 -0
- data/lib/rubocop/formatter/progress_formatter.rb +2 -1
- data/lib/rubocop/formatter/quiet_formatter.rb +1 -1
- data/lib/rubocop/formatter/simple_text_formatter.rb +36 -6
- data/lib/rubocop/name_similarity.rb +1 -0
- data/lib/rubocop/options.rb +40 -17
- data/lib/rubocop/remote_config.rb +1 -0
- data/lib/rubocop/result_cache.rb +39 -15
- data/lib/rubocop/rspec/cop_helper.rb +5 -2
- data/lib/rubocop/rspec/expect_offense.rb +14 -9
- data/lib/rubocop/rspec/shared_contexts.rb +12 -0
- data/lib/rubocop/runner.rb +38 -18
- data/lib/rubocop/string_interpreter.rb +3 -0
- data/lib/rubocop/target_finder.rb +28 -26
- data/lib/rubocop/target_ruby.rb +7 -1
- data/lib/rubocop/version.rb +7 -1
- data/lib/rubocop/yaml_duplication_checker.rb +1 -0
- metadata +31 -17
- data/lib/rubocop/cop/mixin/regexp_literal_help.rb +0 -43
- data/lib/rubocop/cop/tokens_util.rb +0 -84
@@ -11,12 +11,9 @@ module RuboCop
|
|
11
11
|
#
|
12
12
|
# # good
|
13
13
|
# x = 1; y = 2
|
14
|
-
class SpaceBeforeSemicolon <
|
14
|
+
class SpaceBeforeSemicolon < Base
|
15
15
|
include SpaceBeforePunctuation
|
16
|
-
|
17
|
-
def autocorrect(space)
|
18
|
-
PunctuationCorrector.remove_space(space)
|
19
|
-
end
|
16
|
+
extend AutoCorrector
|
20
17
|
|
21
18
|
def kind(token)
|
22
19
|
'semicolon' if token.semicolon?
|
@@ -19,9 +19,10 @@ module RuboCop
|
|
19
19
|
#
|
20
20
|
# # good
|
21
21
|
# a = -> (x, y) { x + y }
|
22
|
-
class SpaceInLambdaLiteral <
|
22
|
+
class SpaceInLambdaLiteral < Base
|
23
23
|
include ConfigurableEnforcedStyle
|
24
24
|
include RangeHelp
|
25
|
+
extend AutoCorrector
|
25
26
|
|
26
27
|
MSG_REQUIRE_SPACE = 'Use a space between `->` and ' \
|
27
28
|
'`(` in lambda literals.'
|
@@ -31,24 +32,15 @@ module RuboCop
|
|
31
32
|
def on_send(node)
|
32
33
|
return unless arrow_lambda_with_args?(node)
|
33
34
|
|
35
|
+
lambda_node = range_of_offense(node)
|
36
|
+
|
34
37
|
if style == :require_space && !space_after_arrow?(node)
|
35
|
-
add_offense(
|
36
|
-
|
37
|
-
|
38
|
+
add_offense(lambda_node, message: MSG_REQUIRE_SPACE) do |corrector|
|
39
|
+
corrector.insert_before(node.parent.children[1], ' ')
|
40
|
+
end
|
38
41
|
elsif style == :require_no_space && space_after_arrow?(node)
|
39
|
-
add_offense(
|
40
|
-
|
41
|
-
message: MSG_REQUIRE_NO_SPACE)
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
def autocorrect(lambda_node)
|
46
|
-
children = lambda_node.parent.children
|
47
|
-
lambda do |corrector|
|
48
|
-
if style == :require_space
|
49
|
-
corrector.insert_before(children[1], ' ')
|
50
|
-
else
|
51
|
-
corrector.remove(space_after_arrow(lambda_node))
|
42
|
+
add_offense(lambda_node, message: MSG_REQUIRE_NO_SPACE) do |corrector|
|
43
|
+
corrector.remove(space_after_arrow(node))
|
52
44
|
end
|
53
45
|
end
|
54
46
|
end
|
@@ -67,9 +67,10 @@ module RuboCop
|
|
67
67
|
# foo = [ ]
|
68
68
|
# bar = [ ]
|
69
69
|
#
|
70
|
-
class SpaceInsideArrayLiteralBrackets <
|
70
|
+
class SpaceInsideArrayLiteralBrackets < Base
|
71
71
|
include SurroundingSpace
|
72
72
|
include ConfigurableEnforcedStyle
|
73
|
+
extend AutoCorrector
|
73
74
|
|
74
75
|
MSG = '%<command>s space inside array brackets.'
|
75
76
|
EMPTY_MSG = '%<command>s space inside empty array brackets.'
|
@@ -86,36 +87,32 @@ module RuboCop
|
|
86
87
|
issue_offenses(node, left, right, start_ok, end_ok)
|
87
88
|
end
|
88
89
|
|
89
|
-
|
90
|
+
private
|
91
|
+
|
92
|
+
def autocorrect(corrector, node)
|
90
93
|
left, right = array_brackets(node)
|
91
94
|
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
SpaceCorrector.add_space(processed_source, corrector, left, right)
|
101
|
-
else
|
102
|
-
compact_corrections(corrector, node, left, right)
|
103
|
-
end
|
95
|
+
if empty_brackets?(left, right)
|
96
|
+
SpaceCorrector.empty_corrections(processed_source, corrector, empty_config, left, right)
|
97
|
+
elsif style == :no_space
|
98
|
+
SpaceCorrector.remove_space(processed_source, corrector, left, right)
|
99
|
+
elsif style == :space
|
100
|
+
SpaceCorrector.add_space(processed_source, corrector, left, right)
|
101
|
+
else
|
102
|
+
compact_corrections(corrector, node, left, right)
|
104
103
|
end
|
105
104
|
end
|
106
105
|
|
107
|
-
private
|
108
|
-
|
109
106
|
def array_brackets(node)
|
110
107
|
[left_array_bracket(node), right_array_bracket(node)]
|
111
108
|
end
|
112
109
|
|
113
110
|
def left_array_bracket(node)
|
114
|
-
|
111
|
+
processed_source.tokens_within(node).find(&:left_array_bracket?)
|
115
112
|
end
|
116
113
|
|
117
114
|
def right_array_bracket(node)
|
118
|
-
|
115
|
+
processed_source.tokens_within(node).reverse.find(&:right_bracket?)
|
119
116
|
end
|
120
117
|
|
121
118
|
def empty_config
|
@@ -123,7 +120,7 @@ module RuboCop
|
|
123
120
|
end
|
124
121
|
|
125
122
|
def next_to_newline?(node, token)
|
126
|
-
|
123
|
+
processed_source.tokens_within(node)[index_for(node, token) + 1].line != token.line
|
127
124
|
end
|
128
125
|
|
129
126
|
def end_has_own_line?(token)
|
@@ -134,7 +131,7 @@ module RuboCop
|
|
134
131
|
end
|
135
132
|
|
136
133
|
def index_for(node, token)
|
137
|
-
|
134
|
+
processed_source.tokens_within(node).index(token)
|
138
135
|
end
|
139
136
|
|
140
137
|
def line_and_column_for(token)
|
@@ -156,7 +153,7 @@ module RuboCop
|
|
156
153
|
end
|
157
154
|
|
158
155
|
def next_to_comment?(node, token)
|
159
|
-
|
156
|
+
processed_source.tokens_within(node)[index_for(node, token) + 1].comment?
|
160
157
|
end
|
161
158
|
|
162
159
|
def compact_offenses(node, left, right, start_ok, end_ok)
|
@@ -187,9 +184,9 @@ module RuboCop
|
|
187
184
|
def multi_dimensional_array?(node, token, side: :right)
|
188
185
|
i = index_for(node, token)
|
189
186
|
if side == :right
|
190
|
-
|
187
|
+
processed_source.tokens_within(node)[i - 1].right_bracket?
|
191
188
|
else
|
192
|
-
|
189
|
+
processed_source.tokens_within(node)[i + 1].left_array_bracket?
|
193
190
|
end
|
194
191
|
end
|
195
192
|
|
@@ -12,9 +12,10 @@ module RuboCop
|
|
12
12
|
# %w(foo bar baz)
|
13
13
|
# # good
|
14
14
|
# %i(foo bar baz)
|
15
|
-
class SpaceInsideArrayPercentLiteral <
|
15
|
+
class SpaceInsideArrayPercentLiteral < Base
|
16
16
|
include MatchRange
|
17
17
|
include PercentLiteral
|
18
|
+
extend AutoCorrector
|
18
19
|
|
19
20
|
MSG = 'Use only a single space inside array percent literal.'
|
20
21
|
MULTIPLE_SPACES_BETWEEN_ITEMS_REGEX =
|
@@ -26,13 +27,7 @@ module RuboCop
|
|
26
27
|
|
27
28
|
def on_percent_literal(node)
|
28
29
|
each_unnecessary_space_match(node) do |range|
|
29
|
-
add_offense(
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
def autocorrect(node)
|
34
|
-
lambda do |corrector|
|
35
|
-
each_unnecessary_space_match(node) do |range|
|
30
|
+
add_offense(range) do |corrector|
|
36
31
|
corrector.replace(range, ' ')
|
37
32
|
end
|
38
33
|
end
|
@@ -76,10 +76,11 @@ module RuboCop
|
|
76
76
|
# # good
|
77
77
|
# [1, 2, 3].each {|n| n * 2 }
|
78
78
|
#
|
79
|
-
class SpaceInsideBlockBraces <
|
79
|
+
class SpaceInsideBlockBraces < Base
|
80
80
|
include ConfigurableEnforcedStyle
|
81
81
|
include SurroundingSpace
|
82
82
|
include RangeHelp
|
83
|
+
extend AutoCorrector
|
83
84
|
|
84
85
|
def on_block(node)
|
85
86
|
return if node.keywords?
|
@@ -97,17 +98,6 @@ module RuboCop
|
|
97
98
|
check_inside(node, left_brace, right_brace)
|
98
99
|
end
|
99
100
|
|
100
|
-
def autocorrect(range)
|
101
|
-
lambda do |corrector|
|
102
|
-
case range.source
|
103
|
-
when /\s/ then corrector.remove(range)
|
104
|
-
when '{}' then corrector.replace(range, '{ }')
|
105
|
-
when '{|' then corrector.replace(range, '{ |')
|
106
|
-
else corrector.insert_before(range, ' ')
|
107
|
-
end
|
108
|
-
end
|
109
|
-
end
|
110
|
-
|
111
101
|
private
|
112
102
|
|
113
103
|
def check_inside(node, left_brace, right_brace)
|
@@ -216,7 +206,7 @@ module RuboCop
|
|
216
206
|
|
217
207
|
def no_space(begin_pos, end_pos, msg)
|
218
208
|
if style == :space
|
219
|
-
offense(begin_pos, end_pos, msg)
|
209
|
+
offense(begin_pos, end_pos, msg)
|
220
210
|
else
|
221
211
|
correct_style_detected
|
222
212
|
end
|
@@ -224,15 +214,22 @@ module RuboCop
|
|
224
214
|
|
225
215
|
def space(begin_pos, end_pos, msg)
|
226
216
|
if style == :no_space
|
227
|
-
offense(begin_pos, end_pos, msg)
|
217
|
+
offense(begin_pos, end_pos, msg)
|
228
218
|
else
|
229
219
|
correct_style_detected
|
230
220
|
end
|
231
221
|
end
|
232
222
|
|
233
|
-
def offense(begin_pos, end_pos, msg
|
223
|
+
def offense(begin_pos, end_pos, msg)
|
234
224
|
range = range_between(begin_pos, end_pos)
|
235
|
-
add_offense(range,
|
225
|
+
add_offense(range, message: msg) do |corrector|
|
226
|
+
case range.source
|
227
|
+
when /\s/ then corrector.remove(range)
|
228
|
+
when '{}' then corrector.replace(range, '{ }')
|
229
|
+
when '{|' then corrector.replace(range, '{ |')
|
230
|
+
else corrector.insert_before(range, ' ')
|
231
|
+
end
|
232
|
+
end
|
236
233
|
end
|
237
234
|
|
238
235
|
def style_for_empty_braces
|
@@ -63,47 +63,24 @@ module RuboCop
|
|
63
63
|
# foo = { }
|
64
64
|
# foo = { }
|
65
65
|
#
|
66
|
-
class SpaceInsideHashLiteralBraces <
|
66
|
+
class SpaceInsideHashLiteralBraces < Base
|
67
67
|
include SurroundingSpace
|
68
68
|
include ConfigurableEnforcedStyle
|
69
69
|
include RangeHelp
|
70
|
+
extend AutoCorrector
|
70
71
|
|
71
72
|
MSG = 'Space inside %<problem>s.'
|
72
73
|
|
73
74
|
def on_hash(node)
|
74
|
-
tokens = processed_source.
|
75
|
+
tokens = processed_source.tokens_within(node)
|
76
|
+
return unless tokens.first.left_brace? && tokens.last.right_curly_brace?
|
75
77
|
|
76
|
-
|
77
|
-
|
78
|
-
return if begin_index == end_index - 1
|
79
|
-
|
80
|
-
check(tokens[end_index - 1], tokens[end_index])
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
def autocorrect(range)
|
85
|
-
lambda do |corrector|
|
86
|
-
case range.source
|
87
|
-
when /\s/ then corrector.remove(range)
|
88
|
-
when '{' then corrector.insert_after(range, ' ')
|
89
|
-
else corrector.insert_before(range, ' ')
|
90
|
-
end
|
91
|
-
end
|
78
|
+
check(tokens[0], tokens[1])
|
79
|
+
check(tokens[-2], tokens[-1]) if tokens.size > 2
|
92
80
|
end
|
93
81
|
|
94
82
|
private
|
95
83
|
|
96
|
-
def hash_literal_with_braces(node)
|
97
|
-
tokens = processed_source.tokens
|
98
|
-
begin_index = index_of_first_token(node)
|
99
|
-
return unless tokens[begin_index].left_brace?
|
100
|
-
|
101
|
-
end_index = index_of_last_token(node)
|
102
|
-
return unless tokens[end_index].right_curly_brace?
|
103
|
-
|
104
|
-
yield begin_index, end_index
|
105
|
-
end
|
106
|
-
|
107
84
|
def check(token1, token2)
|
108
85
|
# No offense if line break inside.
|
109
86
|
return if token1.line < token2.line
|
@@ -135,16 +112,21 @@ module RuboCop
|
|
135
112
|
|
136
113
|
def incorrect_style_detected(token1, token2,
|
137
114
|
expect_space, is_empty_braces)
|
115
|
+
return unless ambiguous_or_unexpected_style_detected(style, token1.text == token2.text)
|
116
|
+
|
138
117
|
brace = (token1.text == '{' ? token1 : token2).pos
|
139
118
|
range = expect_space ? brace : space_range(brace)
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
119
|
+
|
120
|
+
add_offense(range, message: message(brace, is_empty_braces, expect_space)) do |corrector|
|
121
|
+
autocorrect(corrector, range)
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
def autocorrect(corrector, range)
|
126
|
+
case range.source
|
127
|
+
when /\s/ then corrector.remove(range)
|
128
|
+
when '{' then corrector.insert_after(range, ' ')
|
129
|
+
else corrector.insert_before(range, ' ')
|
148
130
|
end
|
149
131
|
end
|
150
132
|
|
@@ -31,34 +31,29 @@ module RuboCop
|
|
31
31
|
# g = ( a + 3 )
|
32
32
|
# y()
|
33
33
|
#
|
34
|
-
class SpaceInsideParens <
|
34
|
+
class SpaceInsideParens < Base
|
35
35
|
include SurroundingSpace
|
36
36
|
include RangeHelp
|
37
37
|
include ConfigurableEnforcedStyle
|
38
|
+
extend AutoCorrector
|
38
39
|
|
39
40
|
MSG = 'Space inside parentheses detected.'
|
40
41
|
MSG_SPACE = 'No space inside parentheses detected.'
|
41
42
|
|
42
|
-
def
|
43
|
+
def on_new_investigation
|
43
44
|
@processed_source = processed_source
|
44
45
|
|
45
46
|
if style == :space
|
46
47
|
each_missing_space(processed_source.tokens) do |range|
|
47
|
-
add_offense(range,
|
48
|
+
add_offense(range, message: MSG_SPACE) do |corrector|
|
49
|
+
corrector.insert_before(range, ' ')
|
50
|
+
end
|
48
51
|
end
|
49
52
|
else
|
50
53
|
each_extraneous_space(processed_source.tokens) do |range|
|
51
|
-
add_offense(range
|
52
|
-
|
53
|
-
|
54
|
-
end
|
55
|
-
|
56
|
-
def autocorrect(range)
|
57
|
-
lambda do |corrector|
|
58
|
-
if style == :space
|
59
|
-
corrector.insert_before(range, ' ')
|
60
|
-
else
|
61
|
-
corrector.remove(range)
|
54
|
+
add_offense(range) do |corrector|
|
55
|
+
corrector.remove(range)
|
56
|
+
end
|
62
57
|
end
|
63
58
|
end
|
64
59
|
end
|
@@ -16,9 +16,10 @@ module RuboCop
|
|
16
16
|
#
|
17
17
|
# # bad
|
18
18
|
# %x( ls -l )
|
19
|
-
class SpaceInsidePercentLiteralDelimiters <
|
19
|
+
class SpaceInsidePercentLiteralDelimiters < Base
|
20
20
|
include MatchRange
|
21
21
|
include PercentLiteral
|
22
|
+
extend AutoCorrector
|
22
23
|
|
23
24
|
MSG = 'Do not use spaces inside percent literal delimiters.'
|
24
25
|
BEGIN_REGEX = /\A( +)/.freeze
|
@@ -36,21 +37,15 @@ module RuboCop
|
|
36
37
|
add_offenses_for_unnecessary_spaces(node)
|
37
38
|
end
|
38
39
|
|
39
|
-
def autocorrect(node)
|
40
|
-
lambda do |corrector|
|
41
|
-
regex_matches(node) do |match_range|
|
42
|
-
corrector.remove(match_range)
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
40
|
private
|
48
41
|
|
49
42
|
def add_offenses_for_unnecessary_spaces(node)
|
50
43
|
return unless node.single_line?
|
51
44
|
|
52
45
|
regex_matches(node) do |match_range|
|
53
|
-
add_offense(
|
46
|
+
add_offense(match_range) do |corrector|
|
47
|
+
corrector.remove(match_range)
|
48
|
+
end
|
54
49
|
end
|
55
50
|
end
|
56
51
|
|
@@ -17,7 +17,9 @@ module RuboCop
|
|
17
17
|
#
|
18
18
|
# # good
|
19
19
|
# 'a'..'z'
|
20
|
-
class SpaceInsideRangeLiteral <
|
20
|
+
class SpaceInsideRangeLiteral < Base
|
21
|
+
extend AutoCorrector
|
22
|
+
|
21
23
|
MSG = 'Space inside range literal.'
|
22
24
|
|
23
25
|
def on_irange(node)
|
@@ -28,21 +30,6 @@ module RuboCop
|
|
28
30
|
check(node)
|
29
31
|
end
|
30
32
|
|
31
|
-
def autocorrect(node)
|
32
|
-
expression = node.source
|
33
|
-
operator = node.loc.operator.source
|
34
|
-
operator_escaped = operator.gsub(/\./, '\.')
|
35
|
-
|
36
|
-
lambda do |corrector|
|
37
|
-
corrector.replace(
|
38
|
-
node,
|
39
|
-
expression
|
40
|
-
.sub(/\s+#{operator_escaped}/, operator)
|
41
|
-
.sub(/#{operator_escaped}\s+/, operator)
|
42
|
-
)
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
33
|
private
|
47
34
|
|
48
35
|
def check(node)
|
@@ -55,7 +42,11 @@ module RuboCop
|
|
55
42
|
|
56
43
|
return unless /(\s#{escaped_op})|(#{escaped_op}\s)/.match?(expression)
|
57
44
|
|
58
|
-
add_offense(node)
|
45
|
+
add_offense(node) do |corrector|
|
46
|
+
corrector.replace(
|
47
|
+
node, expression.sub(/\s+#{escaped_op}/, op).sub(/#{escaped_op}\s+/, op)
|
48
|
+
)
|
49
|
+
end
|
59
50
|
end
|
60
51
|
end
|
61
52
|
end
|