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
@@ -14,12 +14,9 @@ module RuboCop
|
|
14
14
|
# # good
|
15
15
|
# [1, 2]
|
16
16
|
# { foo:bar, }
|
17
|
-
class SpaceAfterComma <
|
17
|
+
class SpaceAfterComma < Base
|
18
18
|
include SpaceAfterPunctuation
|
19
|
-
|
20
|
-
def autocorrect(comma)
|
21
|
-
PunctuationCorrector.add_space(comma)
|
22
|
-
end
|
19
|
+
extend AutoCorrector
|
23
20
|
|
24
21
|
def space_style_before_rcurly
|
25
22
|
cfg = config.for_cop('Layout/SpaceInsideHashLiteralBraces')
|
@@ -14,8 +14,9 @@ module RuboCop
|
|
14
14
|
# # good
|
15
15
|
# def func(x) end
|
16
16
|
# def method=(y) end
|
17
|
-
class SpaceAfterMethodName <
|
17
|
+
class SpaceAfterMethodName < Base
|
18
18
|
include RangeHelp
|
19
|
+
extend AutoCorrector
|
19
20
|
|
20
21
|
MSG = 'Do not put a space between a method name and the opening ' \
|
21
22
|
'parenthesis.'
|
@@ -29,13 +30,11 @@ module RuboCop
|
|
29
30
|
expr.begin_pos)
|
30
31
|
return unless pos_before_left_paren.source.start_with?(' ')
|
31
32
|
|
32
|
-
add_offense(pos_before_left_paren
|
33
|
+
add_offense(pos_before_left_paren) do |corrector|
|
34
|
+
corrector.remove(pos_before_left_paren)
|
35
|
+
end
|
33
36
|
end
|
34
37
|
alias on_defs on_def
|
35
|
-
|
36
|
-
def autocorrect(pos_before_left_paren)
|
37
|
-
->(corrector) { corrector.remove(pos_before_left_paren) }
|
38
|
-
end
|
39
38
|
end
|
40
39
|
end
|
41
40
|
end
|
@@ -11,29 +11,27 @@ module RuboCop
|
|
11
11
|
#
|
12
12
|
# # good
|
13
13
|
# !something
|
14
|
-
class SpaceAfterNot <
|
14
|
+
class SpaceAfterNot < Base
|
15
15
|
include RangeHelp
|
16
|
+
extend AutoCorrector
|
16
17
|
|
17
18
|
MSG = 'Do not leave space between `!` and its argument.'
|
18
19
|
|
19
20
|
def on_send(node)
|
20
21
|
return unless node.prefix_bang? && whitespace_after_operator?(node)
|
21
22
|
|
22
|
-
add_offense(node)
|
23
|
+
add_offense(node) do |corrector|
|
24
|
+
corrector.remove(
|
25
|
+
range_between(node.loc.selector.end_pos, node.receiver.source_range.begin_pos)
|
26
|
+
)
|
27
|
+
end
|
23
28
|
end
|
24
29
|
|
30
|
+
private
|
31
|
+
|
25
32
|
def whitespace_after_operator?(node)
|
26
33
|
node.receiver.loc.column - node.loc.column > 1
|
27
34
|
end
|
28
|
-
|
29
|
-
def autocorrect(node)
|
30
|
-
lambda do |corrector|
|
31
|
-
corrector.remove(
|
32
|
-
range_between(node.loc.selector.end_pos,
|
33
|
-
node.receiver.source_range.begin_pos)
|
34
|
-
)
|
35
|
-
end
|
36
|
-
end
|
37
35
|
end
|
38
36
|
end
|
39
37
|
end
|
@@ -11,12 +11,9 @@ module RuboCop
|
|
11
11
|
#
|
12
12
|
# # good
|
13
13
|
# x = 1; y = 2
|
14
|
-
class SpaceAfterSemicolon <
|
14
|
+
class SpaceAfterSemicolon < Base
|
15
15
|
include SpaceAfterPunctuation
|
16
|
-
|
17
|
-
def autocorrect(semicolon)
|
18
|
-
PunctuationCorrector.add_space(semicolon)
|
19
|
-
end
|
16
|
+
extend AutoCorrector
|
20
17
|
|
21
18
|
def space_style_before_rcurly
|
22
19
|
cfg = config.for_cop('Layout/SpaceInsideBlockBraces')
|
@@ -27,26 +27,20 @@ module RuboCop
|
|
27
27
|
# def some_method(arg1=:default, arg2=nil, arg3=[])
|
28
28
|
# # do something...
|
29
29
|
# end
|
30
|
-
class SpaceAroundEqualsInParameterDefault <
|
30
|
+
class SpaceAroundEqualsInParameterDefault < Base
|
31
31
|
include SurroundingSpace
|
32
32
|
include ConfigurableEnforcedStyle
|
33
33
|
include RangeHelp
|
34
|
+
extend AutoCorrector
|
34
35
|
|
35
36
|
MSG = 'Surrounding space %<type>s in default value assignment.'
|
36
37
|
|
37
38
|
def on_optarg(node)
|
38
|
-
|
39
|
-
arg, equals, value =
|
39
|
+
tokens = processed_source.tokens_within(node)
|
40
|
+
arg, equals, value = tokens.take(3)
|
40
41
|
check_optarg(arg, equals, value)
|
41
42
|
end
|
42
43
|
|
43
|
-
def autocorrect(range)
|
44
|
-
m = range.source.match(/=\s*(\S+)/)
|
45
|
-
rest = m ? m.captures[0] : ''
|
46
|
-
replacement = style == :space ? ' = ' : '='
|
47
|
-
->(corrector) { corrector.replace(range, replacement + rest) }
|
48
|
-
end
|
49
|
-
|
50
44
|
private
|
51
45
|
|
52
46
|
def check_optarg(arg, equals, value)
|
@@ -57,24 +51,26 @@ module RuboCop
|
|
57
51
|
style == :no_space && no_surrounding_space
|
58
52
|
correct_style_detected
|
59
53
|
else
|
60
|
-
incorrect_style_detected(arg, value
|
61
|
-
no_surrounding_space)
|
54
|
+
incorrect_style_detected(arg, value)
|
62
55
|
end
|
63
56
|
end
|
64
57
|
|
65
|
-
def incorrect_style_detected(arg, value
|
66
|
-
no_surrounding_space)
|
58
|
+
def incorrect_style_detected(arg, value)
|
67
59
|
range = range_between(arg.end_pos, value.begin_pos)
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
opposite_style_detected
|
72
|
-
else
|
73
|
-
unrecognized_style_detected
|
74
|
-
end
|
60
|
+
|
61
|
+
add_offense(range) do |corrector|
|
62
|
+
autocorrect(corrector, range)
|
75
63
|
end
|
76
64
|
end
|
77
65
|
|
66
|
+
def autocorrect(corrector, range)
|
67
|
+
m = range.source.match(/=\s*(\S+)/)
|
68
|
+
rest = m ? m.captures[0] : ''
|
69
|
+
replacement = style == :space ? ' = ' : '='
|
70
|
+
|
71
|
+
corrector.replace(range, replacement + rest)
|
72
|
+
end
|
73
|
+
|
78
74
|
def space_on_both_sides?(arg, equals)
|
79
75
|
arg.space_after? && equals.space_after?
|
80
76
|
end
|
@@ -24,7 +24,9 @@ module RuboCop
|
|
24
24
|
# end
|
25
25
|
#
|
26
26
|
# something = 123 if test
|
27
|
-
class SpaceAroundKeyword <
|
27
|
+
class SpaceAroundKeyword < Base
|
28
|
+
extend AutoCorrector
|
29
|
+
|
28
30
|
MSG_BEFORE = 'Space before keyword `%<range>s` is missing.'
|
29
31
|
MSG_AFTER = 'Space after keyword `%<range>s` is missing.'
|
30
32
|
|
@@ -129,14 +131,6 @@ module RuboCop
|
|
129
131
|
check(node, [:keyword].freeze)
|
130
132
|
end
|
131
133
|
|
132
|
-
def autocorrect(range)
|
133
|
-
if space_before_missing?(range)
|
134
|
-
->(corrector) { corrector.insert_before(range, ' ') }
|
135
|
-
else
|
136
|
-
->(corrector) { corrector.insert_after(range, ' ') }
|
137
|
-
end
|
138
|
-
end
|
139
|
-
|
140
134
|
private
|
141
135
|
|
142
136
|
def check(node, locations, begin_keyword = DO)
|
@@ -162,8 +156,11 @@ module RuboCop
|
|
162
156
|
|
163
157
|
def check_end(node, range, begin_keyword)
|
164
158
|
return if begin_keyword == DO && !do?(node)
|
159
|
+
return unless space_before_missing?(range)
|
165
160
|
|
166
|
-
|
161
|
+
add_offense(range, message: format(MSG_BEFORE, range: range.source)) do |corrector|
|
162
|
+
corrector.insert_before(range, ' ')
|
163
|
+
end
|
167
164
|
end
|
168
165
|
|
169
166
|
def do?(node)
|
@@ -171,15 +168,17 @@ module RuboCop
|
|
171
168
|
end
|
172
169
|
|
173
170
|
def check_keyword(node, range)
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
171
|
+
if space_before_missing?(range) && !preceded_by_operator?(node, range)
|
172
|
+
add_offense(range, message: format(MSG_BEFORE, range: range.source)) do |corrector|
|
173
|
+
corrector.insert_before(range, ' ')
|
174
|
+
end
|
175
|
+
end
|
178
176
|
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
177
|
+
return unless space_after_missing?(range)
|
178
|
+
|
179
|
+
add_offense(range, message: format(MSG_AFTER, range: range.source)) do |corrector|
|
180
|
+
corrector.insert_after(range, ' ')
|
181
|
+
end
|
183
182
|
end
|
184
183
|
|
185
184
|
def space_before_missing?(range)
|
@@ -48,10 +48,11 @@ module RuboCop
|
|
48
48
|
#
|
49
49
|
# # good
|
50
50
|
# a ** b
|
51
|
-
class SpaceAroundOperators <
|
51
|
+
class SpaceAroundOperators < Base
|
52
52
|
include PrecedingFollowingAlignment
|
53
53
|
include RangeHelp
|
54
54
|
include RationalLiteral
|
55
|
+
extend AutoCorrector
|
55
56
|
|
56
57
|
IRREGULAR_METHODS = %i[[] ! []=].freeze
|
57
58
|
EXCESSIVE_SPACE = ' '
|
@@ -132,18 +133,6 @@ module RuboCop
|
|
132
133
|
alias on_and_asgn on_assignment
|
133
134
|
alias on_op_asgn on_special_asgn
|
134
135
|
|
135
|
-
def autocorrect(range)
|
136
|
-
lambda do |corrector|
|
137
|
-
if /\*\*/.match?(range.source) && !space_around_exponent_operator?
|
138
|
-
corrector.replace(range, '**')
|
139
|
-
elsif range.source.end_with?("\n")
|
140
|
-
corrector.replace(range, " #{range.source.strip}\n")
|
141
|
-
else
|
142
|
-
enclose_operator_with_space(corrector, range)
|
143
|
-
end
|
144
|
-
end
|
145
|
-
end
|
146
|
-
|
147
136
|
private
|
148
137
|
|
149
138
|
def regular_operator?(send_node)
|
@@ -161,7 +150,9 @@ module RuboCop
|
|
161
150
|
return if with_space.source.start_with?("\n")
|
162
151
|
|
163
152
|
offense(type, operator, with_space, right_operand) do |msg|
|
164
|
-
add_offense(
|
153
|
+
add_offense(operator, message: msg) do |corrector|
|
154
|
+
autocorrect(corrector, with_space)
|
155
|
+
end
|
165
156
|
end
|
166
157
|
end
|
167
158
|
|
@@ -170,14 +161,24 @@ module RuboCop
|
|
170
161
|
yield msg if msg
|
171
162
|
end
|
172
163
|
|
164
|
+
def autocorrect(corrector, range)
|
165
|
+
if /\*\*/.match?(range.source) && !space_around_exponent_operator?
|
166
|
+
corrector.replace(range, '**')
|
167
|
+
elsif range.source.end_with?("\n")
|
168
|
+
corrector.replace(range, " #{range.source.strip}\n")
|
169
|
+
else
|
170
|
+
enclose_operator_with_space(corrector, range)
|
171
|
+
end
|
172
|
+
end
|
173
|
+
|
173
174
|
def enclose_operator_with_space(corrector, range)
|
174
175
|
operator = range.source
|
175
176
|
|
176
177
|
# If `ForceEqualSignAlignment` is true, `Layout/ExtraSpacing` cop
|
177
178
|
# inserts spaces before operator. If `Layout/SpaceAroundOperators` cop
|
178
179
|
# inserts a space, it collides and raises the infinite loop error.
|
179
|
-
if force_equal_sign_alignment?
|
180
|
-
corrector.insert_after(range, ' ')
|
180
|
+
if force_equal_sign_alignment? && !operator.end_with?(' ')
|
181
|
+
corrector.insert_after(range, ' ')
|
181
182
|
else
|
182
183
|
corrector.replace(range, " #{operator.strip} ")
|
183
184
|
end
|
@@ -41,9 +41,10 @@ module RuboCop
|
|
41
41
|
#
|
42
42
|
# # good
|
43
43
|
# 7.times{}
|
44
|
-
class SpaceBeforeBlockBraces <
|
44
|
+
class SpaceBeforeBlockBraces < Base
|
45
45
|
include ConfigurableEnforcedStyle
|
46
46
|
include RangeHelp
|
47
|
+
extend AutoCorrector
|
47
48
|
|
48
49
|
MISSING_MSG = 'Space missing to the left of {.'
|
49
50
|
DETECTED_MSG = 'Space detected to the left of {.'
|
@@ -75,29 +76,22 @@ module RuboCop
|
|
75
76
|
end
|
76
77
|
end
|
77
78
|
|
78
|
-
def autocorrect(range)
|
79
|
-
lambda do |corrector|
|
80
|
-
case range.source
|
81
|
-
when /\s/ then corrector.remove(range)
|
82
|
-
else corrector.insert_before(range, ' ')
|
83
|
-
end
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
79
|
private
|
88
80
|
|
89
81
|
def check_empty(left_brace, space_plus_brace, used_style)
|
90
82
|
return if style_for_empty_braces == used_style
|
91
83
|
|
92
|
-
config_to_allow_offenses['EnforcedStyleForEmptyBraces'] =
|
93
|
-
used_style.to_s
|
84
|
+
config_to_allow_offenses['EnforcedStyleForEmptyBraces'] = used_style.to_s
|
94
85
|
|
95
86
|
if style_for_empty_braces == :space
|
96
|
-
add_offense(left_brace,
|
87
|
+
add_offense(left_brace, message: MISSING_MSG) do |corrector|
|
88
|
+
autocorrect(corrector, left_brace)
|
89
|
+
end
|
97
90
|
else
|
98
|
-
space = range_between(space_plus_brace.begin_pos,
|
99
|
-
|
100
|
-
|
91
|
+
space = range_between(space_plus_brace.begin_pos, left_brace.begin_pos)
|
92
|
+
add_offense(space, message: DETECTED_MSG) do |corrector|
|
93
|
+
autocorrect(corrector, space)
|
94
|
+
end
|
101
95
|
end
|
102
96
|
end
|
103
97
|
|
@@ -110,16 +104,23 @@ module RuboCop
|
|
110
104
|
end
|
111
105
|
|
112
106
|
def space_missing(left_brace)
|
113
|
-
add_offense(left_brace,
|
114
|
-
|
107
|
+
add_offense(left_brace, message: MISSING_MSG) do |corrector|
|
108
|
+
autocorrect(corrector, left_brace)
|
115
109
|
end
|
116
110
|
end
|
117
111
|
|
118
112
|
def space_detected(left_brace, space_plus_brace)
|
119
|
-
space = range_between(space_plus_brace.begin_pos,
|
120
|
-
|
121
|
-
add_offense(space,
|
122
|
-
|
113
|
+
space = range_between(space_plus_brace.begin_pos, left_brace.begin_pos)
|
114
|
+
|
115
|
+
add_offense(space, message: DETECTED_MSG) do |corrector|
|
116
|
+
autocorrect(corrector, space)
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
def autocorrect(corrector, range)
|
121
|
+
case range.source
|
122
|
+
when /\s/ then corrector.remove(range)
|
123
|
+
else corrector.insert_before(range, ' ')
|
123
124
|
end
|
124
125
|
end
|
125
126
|
|
@@ -15,12 +15,10 @@ module RuboCop
|
|
15
15
|
# [1, 2, 3]
|
16
16
|
# a(1, 2)
|
17
17
|
# each { |a, b| }
|
18
|
-
|
18
|
+
#
|
19
|
+
class SpaceBeforeComma < Base
|
19
20
|
include SpaceBeforePunctuation
|
20
|
-
|
21
|
-
def autocorrect(space)
|
22
|
-
PunctuationCorrector.remove_space(space)
|
23
|
-
end
|
21
|
+
extend AutoCorrector
|
24
22
|
|
25
23
|
def kind(token)
|
26
24
|
'comma' if token.comma?
|
@@ -12,20 +12,23 @@ module RuboCop
|
|
12
12
|
#
|
13
13
|
# # good
|
14
14
|
# 1 + 1 # this operation does ...
|
15
|
-
class SpaceBeforeComment <
|
15
|
+
class SpaceBeforeComment < Base
|
16
|
+
extend AutoCorrector
|
17
|
+
|
16
18
|
MSG = 'Put a space before an end-of-line comment.'
|
17
19
|
|
18
|
-
def
|
20
|
+
def on_new_investigation
|
19
21
|
processed_source.tokens.each_cons(2) do |token1, token2|
|
20
22
|
next unless token2.comment?
|
21
23
|
next unless token1.line == token2.line
|
24
|
+
next unless token1.pos.end == token2.pos.begin
|
22
25
|
|
23
|
-
|
24
|
-
end
|
25
|
-
end
|
26
|
+
range = token2.pos
|
26
27
|
|
27
|
-
|
28
|
-
|
28
|
+
add_offense(range) do |corrector|
|
29
|
+
corrector.insert_before(range, ' ')
|
30
|
+
end
|
31
|
+
end
|
29
32
|
end
|
30
33
|
end
|
31
34
|
end
|
@@ -21,31 +21,31 @@ module RuboCop
|
|
21
21
|
# something y, z
|
22
22
|
# something 'hello'
|
23
23
|
#
|
24
|
-
class SpaceBeforeFirstArg <
|
24
|
+
class SpaceBeforeFirstArg < Base
|
25
25
|
include PrecedingFollowingAlignment
|
26
26
|
include RangeHelp
|
27
|
+
extend AutoCorrector
|
27
28
|
|
28
29
|
MSG = 'Put one space between the method name and ' \
|
29
30
|
'the first argument.'
|
30
31
|
|
31
32
|
def on_send(node)
|
32
33
|
return unless regular_method_call_with_arguments?(node)
|
33
|
-
return unless expect_params_after_method_name?(node)
|
34
34
|
|
35
35
|
first_arg = node.first_argument.source_range
|
36
36
|
first_arg_with_space = range_with_surrounding_space(range: first_arg,
|
37
37
|
side: :left)
|
38
38
|
space = range_between(first_arg_with_space.begin_pos,
|
39
39
|
first_arg.begin_pos)
|
40
|
+
return if space.length == 1
|
41
|
+
return unless expect_params_after_method_name?(node)
|
40
42
|
|
41
|
-
add_offense(space
|
43
|
+
add_offense(space) do |corrector|
|
44
|
+
corrector.replace(space, ' ')
|
45
|
+
end
|
42
46
|
end
|
43
47
|
alias on_csend on_send
|
44
48
|
|
45
|
-
def autocorrect(range)
|
46
|
-
->(corrector) { corrector.replace(range, ' ') }
|
47
|
-
end
|
48
|
-
|
49
49
|
private
|
50
50
|
|
51
51
|
def regular_method_call_with_arguments?(node)
|