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
@@ -105,7 +105,10 @@ module RuboCop
|
|
105
105
|
end
|
106
106
|
|
107
107
|
def incorrect_style(when_node)
|
108
|
-
|
108
|
+
depth = indent_one_step? ? 'one step more than' : 'as deep as'
|
109
|
+
message = format(MSG, depth: depth, base: style)
|
110
|
+
|
111
|
+
add_offense(when_node.loc.keyword, message: message) do |corrector|
|
109
112
|
detect_incorrect_style(when_node)
|
110
113
|
|
111
114
|
whitespace = whitespace_range(when_node)
|
@@ -125,12 +128,6 @@ module RuboCop
|
|
125
128
|
end
|
126
129
|
end
|
127
130
|
|
128
|
-
def find_message(*)
|
129
|
-
depth = indent_one_step? ? 'one step more than' : 'as deep as'
|
130
|
-
|
131
|
-
format(MSG, depth: depth, base: style)
|
132
|
-
end
|
133
|
-
|
134
131
|
def base_column(case_node, base)
|
135
132
|
case base
|
136
133
|
when :case then case_node.location.keyword.column
|
@@ -133,8 +133,9 @@ module RuboCop
|
|
133
133
|
# end
|
134
134
|
#
|
135
135
|
# @see https://rubystyle.guide#consistent-classes
|
136
|
-
class ClassStructure <
|
136
|
+
class ClassStructure < Base
|
137
137
|
include VisibilityHelp
|
138
|
+
extend AutoCorrector
|
138
139
|
|
139
140
|
HUMANIZED_NODE_TYPE = {
|
140
141
|
casgn: :constants,
|
@@ -155,16 +156,20 @@ module RuboCop
|
|
155
156
|
if index < previous
|
156
157
|
message = format(MSG, category: category,
|
157
158
|
previous: expected_order[previous])
|
158
|
-
add_offense(node, message: message)
|
159
|
+
add_offense(node, message: message) do |corrector|
|
160
|
+
autocorrect(corrector, node)
|
161
|
+
end
|
159
162
|
end
|
160
163
|
previous = index
|
161
164
|
end
|
162
165
|
end
|
163
166
|
|
167
|
+
private
|
168
|
+
|
164
169
|
# Autocorrect by swapping between two nodes autocorrecting them
|
165
|
-
def autocorrect(node)
|
170
|
+
def autocorrect(corrector, node)
|
166
171
|
node_classification = classify(node)
|
167
|
-
previous =
|
172
|
+
previous = node.left_siblings.find do |sibling|
|
168
173
|
classification = classify(sibling)
|
169
174
|
!ignore?(classification) && node_classification != classification
|
170
175
|
end
|
@@ -172,14 +177,10 @@ module RuboCop
|
|
172
177
|
current_range = source_range_with_comment(node)
|
173
178
|
previous_range = source_range_with_comment(previous)
|
174
179
|
|
175
|
-
|
176
|
-
|
177
|
-
corrector.remove(current_range)
|
178
|
-
end
|
180
|
+
corrector.insert_before(previous_range, current_range.source)
|
181
|
+
corrector.remove(current_range)
|
179
182
|
end
|
180
183
|
|
181
|
-
private
|
182
|
-
|
183
184
|
# Classifies a node to match with something in the {expected_order}
|
184
185
|
# @param node to be analysed
|
185
186
|
# @return String when the node type is a `:block` then
|
@@ -46,8 +46,9 @@ module RuboCop
|
|
46
46
|
# Hi
|
47
47
|
# EOS
|
48
48
|
#
|
49
|
-
class ClosingHeredocIndentation <
|
49
|
+
class ClosingHeredocIndentation < Base
|
50
50
|
include Heredoc
|
51
|
+
extend AutoCorrector
|
51
52
|
|
52
53
|
SIMPLE_HEREDOC = '<<'
|
53
54
|
MSG = '`%<closing>s` is not aligned with `%<opening>s`.'
|
@@ -59,11 +60,8 @@ module RuboCop
|
|
59
60
|
opening_indentation(node) == closing_indentation(node) ||
|
60
61
|
argument_indentation_correct?(node)
|
61
62
|
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
def autocorrect(node)
|
66
|
-
lambda do |corrector|
|
63
|
+
message = message(node)
|
64
|
+
add_offense(node.loc.heredoc_end, message: message) do |corrector|
|
67
65
|
corrector.replace(node.loc.heredoc_end, indented_end(node))
|
68
66
|
end
|
69
67
|
end
|
@@ -22,8 +22,9 @@ module RuboCop
|
|
22
22
|
# if some_condition
|
23
23
|
# do_something
|
24
24
|
# end
|
25
|
-
class ConditionPosition <
|
25
|
+
class ConditionPosition < Base
|
26
26
|
include RangeHelp
|
27
|
+
extend AutoCorrector
|
27
28
|
|
28
29
|
MSG = 'Place the condition on the same line as `%<keyword>s`.'
|
29
30
|
|
@@ -38,27 +39,24 @@ module RuboCop
|
|
38
39
|
end
|
39
40
|
alias on_until on_while
|
40
41
|
|
41
|
-
def autocorrect(node)
|
42
|
-
lambda do |corrector|
|
43
|
-
range = range_by_whole_lines(
|
44
|
-
node.source_range, include_final_newline: true
|
45
|
-
)
|
46
|
-
|
47
|
-
corrector.insert_after(node.parent.loc.keyword, " #{node.source}")
|
48
|
-
corrector.remove(range)
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
42
|
private
|
53
43
|
|
54
44
|
def check(node)
|
55
45
|
return if node.modifier_form? || node.single_line_condition?
|
56
46
|
|
57
|
-
|
47
|
+
condition = node.condition
|
48
|
+
message = message(condition)
|
49
|
+
|
50
|
+
add_offense(condition, message: message) do |corrector|
|
51
|
+
range = range_by_whole_lines(condition.source_range, include_final_newline: true)
|
52
|
+
|
53
|
+
corrector.insert_after(condition.parent.loc.keyword, " #{condition.source}")
|
54
|
+
corrector.remove(range)
|
55
|
+
end
|
58
56
|
end
|
59
57
|
|
60
|
-
def message(
|
61
|
-
format(MSG, keyword:
|
58
|
+
def message(condition)
|
59
|
+
format(MSG, keyword: condition.parent.keyword)
|
62
60
|
end
|
63
61
|
end
|
64
62
|
end
|
@@ -33,9 +33,10 @@ module RuboCop
|
|
33
33
|
#
|
34
34
|
# private def foo
|
35
35
|
# end
|
36
|
-
class DefEndAlignment <
|
36
|
+
class DefEndAlignment < Base
|
37
37
|
include EndKeywordAlignment
|
38
38
|
include RangeHelp
|
39
|
+
extend AutoCorrector
|
39
40
|
|
40
41
|
MSG = '`end` at %d, %d is not aligned with `%s` at %d, %d.'
|
41
42
|
|
@@ -45,7 +46,7 @@ module RuboCop
|
|
45
46
|
alias on_defs on_def
|
46
47
|
|
47
48
|
def on_send(node)
|
48
|
-
return
|
49
|
+
return if !node.def_modifier? || node.method?(:using)
|
49
50
|
|
50
51
|
method_def = node.each_descendant(:def, :defs).first
|
51
52
|
expr = node.source_range
|
@@ -61,11 +62,13 @@ module RuboCop
|
|
61
62
|
ignore_node(method_def) # Don't check the same `end` again.
|
62
63
|
end
|
63
64
|
|
64
|
-
|
65
|
+
private
|
66
|
+
|
67
|
+
def autocorrect(corrector, node)
|
65
68
|
if style == :start_of_line && node.parent && node.parent.send_type?
|
66
|
-
AlignmentCorrector.align_end(processed_source, node, node.parent)
|
69
|
+
AlignmentCorrector.align_end(corrector, processed_source, node, node.parent)
|
67
70
|
else
|
68
|
-
AlignmentCorrector.align_end(processed_source, node, node)
|
71
|
+
AlignmentCorrector.align_end(corrector, processed_source, node, node)
|
69
72
|
end
|
70
73
|
end
|
71
74
|
end
|
@@ -22,38 +22,39 @@ module RuboCop
|
|
22
22
|
# # good
|
23
23
|
# something.
|
24
24
|
# method
|
25
|
-
class DotPosition <
|
25
|
+
class DotPosition < Base
|
26
26
|
include ConfigurableEnforcedStyle
|
27
|
+
extend AutoCorrector
|
27
28
|
|
28
29
|
def on_send(node)
|
29
30
|
return unless node.dot? || ampersand_dot?(node)
|
30
31
|
|
31
|
-
if proper_dot_position?(node)
|
32
|
-
|
33
|
-
|
34
|
-
|
32
|
+
return correct_style_detected if proper_dot_position?(node)
|
33
|
+
|
34
|
+
opposite_style_detected
|
35
|
+
dot = node.loc.dot
|
36
|
+
message = message(dot)
|
37
|
+
|
38
|
+
add_offense(dot, message: message) do |corrector|
|
39
|
+
autocorrect(corrector, dot, node)
|
35
40
|
end
|
36
41
|
end
|
37
42
|
alias on_csend on_send
|
38
43
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
end
|
44
|
+
private
|
45
|
+
|
46
|
+
def autocorrect(corrector, dot, node)
|
47
|
+
corrector.remove(dot)
|
48
|
+
case style
|
49
|
+
when :leading
|
50
|
+
corrector.insert_before(selector_range(node), dot.source)
|
51
|
+
when :trailing
|
52
|
+
corrector.insert_after(node.receiver, dot.source)
|
49
53
|
end
|
50
54
|
end
|
51
55
|
|
52
|
-
|
53
|
-
|
54
|
-
def message(node)
|
55
|
-
dot = node.loc.dot.source
|
56
|
-
"Place the #{dot} on the " +
|
56
|
+
def message(dot)
|
57
|
+
"Place the #{dot.source} on the " +
|
57
58
|
case style
|
58
59
|
when :leading
|
59
60
|
'next line, together with the method name.'
|
@@ -60,47 +60,54 @@ module RuboCop
|
|
60
60
|
# class Foo
|
61
61
|
# end
|
62
62
|
#
|
63
|
-
class EmptyComment <
|
63
|
+
class EmptyComment < Base
|
64
64
|
include RangeHelp
|
65
|
+
extend AutoCorrector
|
65
66
|
|
66
67
|
MSG = 'Source code comment is empty.'
|
67
68
|
|
68
|
-
def
|
69
|
+
def on_new_investigation
|
69
70
|
if allow_margin_comment?
|
70
71
|
comments = concat_consecutive_comments(processed_source.comments)
|
71
72
|
|
72
|
-
comments
|
73
|
-
next unless empty_comment_only?(comment[0])
|
74
|
-
|
75
|
-
comment[1].each do |offense_comment|
|
76
|
-
add_offense(offense_comment)
|
77
|
-
end
|
78
|
-
end
|
73
|
+
investigate(comments)
|
79
74
|
else
|
80
75
|
processed_source.comments.each do |comment|
|
81
76
|
next unless empty_comment_only?(comment_text(comment))
|
82
77
|
|
83
|
-
add_offense(comment)
|
78
|
+
add_offense(comment) do |corrector|
|
79
|
+
autocorrect(corrector, comment)
|
80
|
+
end
|
84
81
|
end
|
85
82
|
end
|
86
83
|
end
|
87
84
|
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
corrector.remove(range)
|
85
|
+
private
|
86
|
+
|
87
|
+
def investigate(comments)
|
88
|
+
comments.each do |comment|
|
89
|
+
next unless empty_comment_only?(comment[0])
|
90
|
+
|
91
|
+
comment[1].each do |offense_comment|
|
92
|
+
add_offense(offense_comment) do |corrector|
|
93
|
+
autocorrect(corrector, offense_comment)
|
94
|
+
end
|
95
|
+
end
|
100
96
|
end
|
101
97
|
end
|
102
98
|
|
103
|
-
|
99
|
+
def autocorrect(corrector, node)
|
100
|
+
previous_token = previous_token(node)
|
101
|
+
range = if previous_token && node.loc.line == previous_token.line
|
102
|
+
range_with_surrounding_space(range: node.loc.expression,
|
103
|
+
newlines: false)
|
104
|
+
else
|
105
|
+
range_by_whole_lines(node.loc.expression,
|
106
|
+
include_final_newline: true)
|
107
|
+
end
|
108
|
+
|
109
|
+
corrector.remove(range)
|
110
|
+
end
|
104
111
|
|
105
112
|
def concat_consecutive_comments(comments)
|
106
113
|
consecutive_comments =
|
@@ -35,8 +35,9 @@ module RuboCop
|
|
35
35
|
# return if need_return?
|
36
36
|
# end
|
37
37
|
# end
|
38
|
-
class EmptyLineAfterGuardClause <
|
38
|
+
class EmptyLineAfterGuardClause < Base
|
39
39
|
include RangeHelp
|
40
|
+
extend AutoCorrector
|
40
41
|
|
41
42
|
MSG = 'Add empty line after guard clause.'
|
42
43
|
END_OF_HEREDOC_LINE = 1
|
@@ -49,27 +50,29 @@ module RuboCop
|
|
49
50
|
|
50
51
|
return if next_line_empty?(heredoc_line(node, heredoc_node))
|
51
52
|
|
52
|
-
add_offense(heredoc_node
|
53
|
+
add_offense(heredoc_node.loc.heredoc_end) do |corrector|
|
54
|
+
autocorrect(corrector, heredoc_node)
|
55
|
+
end
|
53
56
|
else
|
54
57
|
return if next_line_empty?(node.last_line)
|
55
58
|
|
56
|
-
add_offense(
|
59
|
+
add_offense(offense_location(node)) do |corrector|
|
60
|
+
autocorrect(corrector, node)
|
61
|
+
end
|
57
62
|
end
|
58
63
|
end
|
59
64
|
|
60
|
-
|
61
|
-
lambda do |corrector|
|
62
|
-
node_range = if node.respond_to?(:heredoc?) && node.heredoc?
|
63
|
-
range_by_whole_lines(node.loc.heredoc_body)
|
64
|
-
else
|
65
|
-
range_by_whole_lines(node.source_range)
|
66
|
-
end
|
65
|
+
private
|
67
66
|
|
68
|
-
|
69
|
-
|
70
|
-
|
67
|
+
def autocorrect(corrector, node)
|
68
|
+
node_range = if node.respond_to?(:heredoc?) && node.heredoc?
|
69
|
+
range_by_whole_lines(node.loc.heredoc_body)
|
70
|
+
else
|
71
|
+
range_by_whole_lines(node.source_range)
|
72
|
+
end
|
71
73
|
|
72
|
-
|
74
|
+
corrector.insert_after(node_range, "\n")
|
75
|
+
end
|
73
76
|
|
74
77
|
def correct_style?(node)
|
75
78
|
!contains_guard_clause?(node) ||
|
@@ -92,7 +95,7 @@ module RuboCop
|
|
92
95
|
end
|
93
96
|
|
94
97
|
def next_sibling_parent_empty_or_else?(node)
|
95
|
-
next_sibling = node.
|
98
|
+
next_sibling = node.right_sibling
|
96
99
|
return true if next_sibling.nil?
|
97
100
|
|
98
101
|
parent = next_sibling.parent
|
@@ -101,7 +104,7 @@ module RuboCop
|
|
101
104
|
end
|
102
105
|
|
103
106
|
def next_sibling_empty_or_guard_clause?(node)
|
104
|
-
next_sibling = node.
|
107
|
+
next_sibling = node.right_sibling
|
105
108
|
return true if next_sibling.nil?
|
106
109
|
|
107
110
|
next_sibling.if_type? && contains_guard_clause?(next_sibling)
|
@@ -146,9 +149,9 @@ module RuboCop
|
|
146
149
|
|
147
150
|
def offense_location(node)
|
148
151
|
if node.loc.respond_to?(:end) && node.loc.end
|
149
|
-
|
152
|
+
node.loc.end
|
150
153
|
else
|
151
|
-
|
154
|
+
node
|
152
155
|
end
|
153
156
|
end
|
154
157
|
end
|
@@ -20,30 +20,30 @@ module RuboCop
|
|
20
20
|
# class Person
|
21
21
|
# # Some code
|
22
22
|
# end
|
23
|
-
class EmptyLineAfterMagicComment <
|
23
|
+
class EmptyLineAfterMagicComment < Base
|
24
24
|
include RangeHelp
|
25
|
+
extend AutoCorrector
|
25
26
|
|
26
27
|
MSG = 'Add an empty line after magic comments.'
|
27
28
|
|
28
|
-
def
|
29
|
-
return unless
|
30
|
-
(last_magic_comment = last_magic_comment(
|
31
|
-
return if
|
29
|
+
def on_new_investigation
|
30
|
+
return unless processed_source.ast &&
|
31
|
+
(last_magic_comment = last_magic_comment(processed_source))
|
32
|
+
return if processed_source[last_magic_comment.loc.line].strip.empty?
|
32
33
|
|
33
|
-
offending_range =
|
34
|
-
source_range(source.buffer, last_magic_comment.loc.line + 1, 0)
|
34
|
+
offending_range = offending_range(last_magic_comment)
|
35
35
|
|
36
|
-
add_offense(offending_range
|
37
|
-
|
38
|
-
|
39
|
-
def autocorrect(token)
|
40
|
-
lambda do |corrector|
|
41
|
-
corrector.insert_before(token, "\n")
|
36
|
+
add_offense(offending_range) do |corrector|
|
37
|
+
corrector.insert_before(offending_range, "\n")
|
42
38
|
end
|
43
39
|
end
|
44
40
|
|
45
41
|
private
|
46
42
|
|
43
|
+
def offending_range(last_magic_comment)
|
44
|
+
source_range(processed_source.buffer, last_magic_comment.loc.line + 1, 0)
|
45
|
+
end
|
46
|
+
|
47
47
|
# Find the last magic comment in the source file.
|
48
48
|
#
|
49
49
|
# Take all comments that precede the first line of code, select the
|