rubocop 0.51.0 → 0.52.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 +1 -2
- data/config/default.yml +86 -10
- data/config/disabled.yml +9 -4
- data/config/enabled.yml +1105 -1006
- data/lib/rubocop.rb +30 -3
- data/lib/rubocop/ast/builder.rb +2 -0
- data/lib/rubocop/ast/node.rb +24 -2
- data/lib/rubocop/ast/node/args_node.rb +17 -0
- data/lib/rubocop/ast/node/array_node.rb +1 -1
- data/lib/rubocop/ast/node/mixin/basic_literal_node.rb +16 -0
- data/lib/rubocop/ast/node/send_node.rb +20 -0
- data/lib/rubocop/ast/node/str_node.rb +14 -0
- data/lib/rubocop/ast/node/symbol_node.rb +20 -0
- data/lib/rubocop/ast/traversal.rb +4 -4
- data/lib/rubocop/cli.rb +45 -4
- data/lib/rubocop/comment_config.rb +2 -5
- data/lib/rubocop/config.rb +42 -8
- data/lib/rubocop/config_loader.rb +39 -100
- data/lib/rubocop/config_loader_resolver.rb +99 -2
- data/lib/rubocop/cop/autocorrect_logic.rb +1 -1
- data/lib/rubocop/cop/bundler/duplicated_gem.rb +7 -7
- data/lib/rubocop/cop/bundler/insecure_protocol_source.rb +4 -3
- data/lib/rubocop/cop/bundler/ordered_gems.rb +2 -2
- data/lib/rubocop/cop/cop.rb +16 -46
- data/lib/rubocop/cop/gemspec/duplicated_assignment.rb +102 -0
- data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +3 -2
- data/lib/rubocop/cop/gemspec/required_ruby_version.rb +87 -0
- data/lib/rubocop/cop/generator.rb +23 -4
- data/lib/rubocop/cop/internal_affairs.rb +1 -1
- data/lib/rubocop/cop/internal_affairs/node_destructuring.rb +46 -0
- data/lib/rubocop/cop/internal_affairs/node_type_predicate.rb +2 -2
- data/lib/rubocop/cop/internal_affairs/offense_location_keyword.rb +9 -8
- data/lib/rubocop/cop/internal_affairs/redundant_location_argument.rb +1 -1
- data/lib/rubocop/cop/internal_affairs/redundant_message_argument.rb +1 -1
- data/lib/rubocop/cop/layout/access_modifier_indentation.rb +4 -7
- data/lib/rubocop/cop/layout/align_hash.rb +16 -16
- data/lib/rubocop/cop/layout/align_parameters.rb +6 -12
- data/lib/rubocop/cop/layout/block_end_newline.rb +19 -5
- data/lib/rubocop/cop/layout/case_indentation.rb +14 -17
- data/lib/rubocop/cop/layout/class_structure.rb +306 -0
- data/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +1 -0
- data/lib/rubocop/cop/layout/comment_indentation.rb +39 -2
- data/lib/rubocop/cop/layout/dot_position.rb +22 -13
- data/lib/rubocop/cop/layout/else_alignment.rb +6 -6
- data/lib/rubocop/cop/layout/empty_line_between_defs.rb +17 -17
- data/lib/rubocop/cop/layout/empty_lines.rb +15 -1
- data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +3 -2
- data/lib/rubocop/cop/layout/empty_lines_around_arguments.rb +89 -0
- data/lib/rubocop/cop/layout/empty_lines_around_begin_body.rb +2 -2
- data/lib/rubocop/cop/layout/empty_lines_around_block_body.rb +4 -8
- data/lib/rubocop/cop/layout/empty_lines_around_class_body.rb +30 -5
- data/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +7 -3
- data/lib/rubocop/cop/layout/empty_lines_around_method_body.rb +2 -2
- data/lib/rubocop/cop/layout/empty_lines_around_module_body.rb +22 -7
- data/lib/rubocop/cop/layout/end_of_line.rb +1 -1
- data/lib/rubocop/cop/layout/extra_spacing.rb +21 -24
- data/lib/rubocop/cop/layout/first_parameter_indentation.rb +4 -1
- data/lib/rubocop/cop/layout/indent_array.rb +67 -20
- data/lib/rubocop/cop/layout/indent_hash.rb +70 -25
- data/lib/rubocop/cop/layout/indent_heredoc.rb +51 -11
- data/lib/rubocop/cop/layout/indentation_width.rb +24 -17
- data/lib/rubocop/cop/layout/initial_indentation.rb +7 -5
- data/lib/rubocop/cop/layout/leading_comment_space.rb +2 -2
- data/lib/rubocop/cop/layout/multiline_array_brace_layout.rb +47 -14
- data/lib/rubocop/cop/layout/multiline_assignment_layout.rb +10 -9
- data/lib/rubocop/cop/layout/multiline_block_layout.rb +19 -16
- data/lib/rubocop/cop/layout/multiline_hash_brace_layout.rb +46 -13
- data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +9 -10
- data/lib/rubocop/cop/layout/multiline_method_definition_brace_layout.rb +4 -0
- data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +9 -3
- data/lib/rubocop/cop/layout/space_after_colon.rb +4 -4
- data/lib/rubocop/cop/layout/space_after_comma.rb +3 -3
- data/lib/rubocop/cop/layout/space_after_method_name.rb +4 -4
- data/lib/rubocop/cop/layout/space_after_semicolon.rb +8 -1
- data/lib/rubocop/cop/layout/space_around_block_parameters.rb +16 -19
- data/lib/rubocop/cop/layout/space_around_equals_in_parameter_default.rb +27 -16
- data/lib/rubocop/cop/layout/space_around_keyword.rb +13 -11
- data/lib/rubocop/cop/layout/space_around_operators.rb +26 -13
- data/lib/rubocop/cop/layout/space_before_block_braces.rb +10 -10
- data/lib/rubocop/cop/layout/space_before_comma.rb +12 -1
- data/lib/rubocop/cop/layout/space_before_comment.rb +2 -4
- data/lib/rubocop/cop/layout/space_before_first_arg.rb +4 -3
- data/lib/rubocop/cop/layout/space_before_semicolon.rb +1 -1
- data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +6 -12
- data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +235 -0
- data/lib/rubocop/cop/layout/space_inside_array_percent_literal.rb +3 -3
- data/lib/rubocop/cop/layout/space_inside_block_braces.rb +87 -16
- data/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +57 -34
- data/lib/rubocop/cop/layout/space_inside_parens.rb +31 -3
- data/lib/rubocop/cop/layout/space_inside_range_literal.rb +15 -15
- data/lib/rubocop/cop/layout/space_inside_reference_brackets.rb +81 -0
- data/lib/rubocop/cop/layout/space_inside_string_interpolation.rb +24 -13
- data/lib/rubocop/cop/layout/tab.rb +2 -2
- data/lib/rubocop/cop/layout/trailing_blank_lines.rb +7 -7
- data/lib/rubocop/cop/lint/ambiguous_block_association.rb +11 -20
- data/lib/rubocop/cop/lint/block_alignment.rb +26 -23
- data/lib/rubocop/cop/lint/boolean_symbol.rb +1 -1
- data/lib/rubocop/cop/lint/def_end_alignment.rb +5 -10
- data/lib/rubocop/cop/lint/else_layout.rb +2 -2
- data/lib/rubocop/cop/lint/end_alignment.rb +13 -14
- data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +3 -4
- data/lib/rubocop/cop/lint/inherit_exception.rb +10 -14
- data/lib/rubocop/cop/lint/missing_cop_enable_directive.rb +81 -0
- data/lib/rubocop/cop/lint/nested_percent_literal.rb +58 -0
- data/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +2 -2
- data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +1 -1
- data/lib/rubocop/cop/lint/percent_string_array.rb +14 -14
- data/lib/rubocop/cop/lint/percent_symbol_array.rb +11 -11
- data/lib/rubocop/cop/lint/redundant_with_index.rb +6 -3
- data/lib/rubocop/cop/lint/redundant_with_object.rb +1 -1
- data/lib/rubocop/cop/lint/require_parentheses.rb +3 -1
- data/lib/rubocop/cop/lint/rescue_type.rb +3 -3
- data/lib/rubocop/cop/lint/script_permission.rb +1 -0
- data/lib/rubocop/cop/lint/shadowed_argument.rb +146 -0
- data/lib/rubocop/cop/lint/string_conversion_in_interpolation.rb +6 -6
- data/lib/rubocop/cop/lint/unneeded_disable.rb +29 -11
- data/lib/rubocop/cop/lint/unneeded_require_statement.rb +2 -1
- data/lib/rubocop/cop/lint/unneeded_splat_expansion.rb +43 -17
- data/lib/rubocop/cop/message_annotator.rb +4 -2
- data/lib/rubocop/cop/metrics/abc_size.rb +2 -2
- data/lib/rubocop/cop/metrics/class_length.rb +3 -1
- data/lib/rubocop/cop/metrics/cyclomatic_complexity.rb +2 -1
- data/lib/rubocop/cop/metrics/line_length.rb +2 -2
- data/lib/rubocop/cop/metrics/module_length.rb +3 -1
- data/lib/rubocop/cop/metrics/parameter_lists.rb +9 -2
- data/lib/rubocop/cop/metrics/perceived_complexity.rb +2 -1
- data/lib/rubocop/cop/mixin/documentation_comment.rb +1 -1
- data/lib/rubocop/cop/mixin/empty_lines_around_body.rb +7 -5
- data/lib/rubocop/cop/mixin/empty_parameter.rb +23 -0
- data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +7 -3
- data/lib/rubocop/cop/mixin/heredoc.rb +19 -19
- data/lib/rubocop/cop/mixin/method_complexity.rb +32 -8
- data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +7 -3
- data/lib/rubocop/cop/mixin/multiline_literal_brace_layout.rb +6 -4
- data/lib/rubocop/cop/mixin/negative_conditional.rb +3 -0
- data/lib/rubocop/cop/mixin/ordered_gem_node.rb +16 -12
- data/lib/rubocop/cop/mixin/parentheses.rb +12 -0
- data/lib/rubocop/cop/mixin/space_after_punctuation.rb +8 -8
- data/lib/rubocop/cop/mixin/space_before_punctuation.rb +10 -10
- data/lib/rubocop/cop/mixin/statement_modifier.rb +7 -17
- data/lib/rubocop/cop/mixin/surrounding_space.rb +95 -8
- data/lib/rubocop/cop/mixin/too_many_lines.rb +2 -2
- data/lib/rubocop/cop/mixin/trailing_comma.rb +22 -14
- data/lib/rubocop/cop/mixin/unused_argument.rb +3 -40
- data/lib/rubocop/cop/naming/accessor_method_name.rb +20 -10
- data/lib/rubocop/cop/naming/ascii_identifiers.rb +33 -0
- data/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +5 -4
- data/lib/rubocop/cop/naming/class_and_module_camel_case.rb +16 -12
- data/lib/rubocop/cop/naming/constant_name.rb +32 -3
- data/lib/rubocop/cop/naming/file_name.rb +19 -8
- data/lib/rubocop/cop/naming/heredoc_delimiter_case.rb +10 -16
- data/lib/rubocop/cop/naming/method_name.rb +20 -14
- data/lib/rubocop/cop/naming/predicate_name.rb +7 -3
- data/lib/rubocop/cop/naming/variable_name.rb +17 -2
- data/lib/rubocop/cop/naming/variable_number.rb +10 -27
- data/lib/rubocop/cop/offense.rb +6 -1
- data/lib/rubocop/cop/performance/case_when_splat.rb +2 -6
- data/lib/rubocop/cop/performance/casecmp.rb +5 -4
- data/lib/rubocop/cop/performance/compare_with_block.rb +13 -7
- data/lib/rubocop/cop/performance/count.rb +5 -4
- data/lib/rubocop/cop/performance/detect.rb +7 -4
- data/lib/rubocop/cop/performance/double_start_end_with.rb +2 -7
- data/lib/rubocop/cop/performance/end_with.rb +2 -2
- data/lib/rubocop/cop/performance/flat_map.rb +3 -2
- data/lib/rubocop/cop/performance/hash_each_methods.rb +41 -40
- data/lib/rubocop/cop/performance/lstrip_rstrip.rb +5 -4
- data/lib/rubocop/cop/performance/redundant_block_call.rb +22 -22
- data/lib/rubocop/cop/performance/redundant_match.rb +2 -2
- data/lib/rubocop/cop/performance/redundant_merge.rb +6 -4
- data/lib/rubocop/cop/performance/redundant_sort_by.rb +4 -4
- data/lib/rubocop/cop/performance/regexp_match.rb +3 -2
- data/lib/rubocop/cop/performance/size.rb +2 -2
- data/lib/rubocop/cop/performance/start_with.rb +2 -2
- data/lib/rubocop/cop/performance/string_replacement.rb +4 -4
- data/lib/rubocop/cop/performance/times_map.rb +14 -15
- data/lib/rubocop/cop/performance/uri_default_parser.rb +3 -3
- data/lib/rubocop/cop/rails/action_filter.rb +22 -0
- data/lib/rubocop/cop/rails/active_support_aliases.rb +2 -2
- data/lib/rubocop/cop/rails/application_job.rb +4 -2
- data/lib/rubocop/cop/rails/application_record.rb +4 -2
- data/lib/rubocop/cop/rails/create_table_with_timestamps.rb +82 -0
- data/lib/rubocop/cop/rails/delegate.rb +20 -25
- data/lib/rubocop/cop/rails/delegate_allow_blank.rb +2 -2
- data/lib/rubocop/cop/rails/environment_comparison.rb +66 -0
- data/lib/rubocop/cop/rails/exit.rb +7 -0
- data/lib/rubocop/cop/rails/has_and_belongs_to_many.rb +7 -0
- data/lib/rubocop/cop/rails/has_many_or_has_one_dependent.rb +6 -2
- data/lib/rubocop/cop/rails/http_positional_arguments.rb +36 -41
- data/lib/rubocop/cop/rails/inverse_of.rb +96 -0
- data/lib/rubocop/cop/rails/lexically_scoped_action_filter.rb +112 -0
- data/lib/rubocop/cop/rails/output.rb +9 -0
- data/lib/rubocop/cop/rails/output_safety.rb +14 -20
- data/lib/rubocop/cop/rails/pluralization_grammar.rb +8 -8
- data/lib/rubocop/cop/rails/presence.rb +105 -0
- data/lib/rubocop/cop/rails/read_write_attribute.rb +10 -10
- data/lib/rubocop/cop/rails/redundant_receiver_in_with_options.rb +91 -0
- data/lib/rubocop/cop/rails/relative_date_constant.rb +9 -9
- data/lib/rubocop/cop/rails/reversible_migration.rb +3 -4
- data/lib/rubocop/cop/rails/safe_navigation.rb +5 -6
- data/lib/rubocop/cop/rails/save_bang.rb +2 -2
- data/lib/rubocop/cop/rails/uniq_before_pluck.rb +1 -1
- data/lib/rubocop/cop/rails/validation.rb +7 -7
- data/lib/rubocop/cop/security/json_load.rb +4 -2
- data/lib/rubocop/cop/security/marshal_load.rb +4 -2
- data/lib/rubocop/cop/style/alias.rb +24 -26
- data/lib/rubocop/cop/style/and_or.rb +34 -28
- data/lib/rubocop/cop/style/array_join.rb +9 -0
- data/lib/rubocop/cop/style/ascii_comments.rb +24 -4
- data/lib/rubocop/cop/style/attr.rb +14 -4
- data/lib/rubocop/cop/style/auto_resource_cleanup.rb +5 -3
- data/lib/rubocop/cop/style/bare_percent_literals.rb +31 -10
- data/lib/rubocop/cop/style/block_comments.rb +14 -2
- data/lib/rubocop/cop/style/block_delimiters.rb +80 -15
- data/lib/rubocop/cop/style/braces_around_hash_parameters.rb +81 -48
- data/lib/rubocop/cop/style/case_equality.rb +12 -0
- data/lib/rubocop/cop/style/character_literal.rb +10 -0
- data/lib/rubocop/cop/style/class_and_module_children.rb +6 -2
- data/lib/rubocop/cop/style/class_check.rb +28 -9
- data/lib/rubocop/cop/style/class_methods.rb +8 -8
- data/lib/rubocop/cop/style/class_vars.rb +4 -3
- data/lib/rubocop/cop/style/collection_methods.rb +4 -2
- data/lib/rubocop/cop/style/colon_method_call.rb +16 -0
- data/lib/rubocop/cop/style/colon_method_definition.rb +36 -0
- data/lib/rubocop/cop/style/command_literal.rb +70 -21
- data/lib/rubocop/cop/style/comment_annotation.rb +35 -10
- data/lib/rubocop/cop/style/commented_keyword.rb +12 -9
- data/lib/rubocop/cop/style/conditional_assignment.rb +10 -12
- data/lib/rubocop/cop/style/copyright.rb +19 -20
- data/lib/rubocop/cop/style/date_time.rb +2 -2
- data/lib/rubocop/cop/style/def_with_parentheses.rb +27 -2
- data/lib/rubocop/cop/style/dir.rb +2 -2
- data/lib/rubocop/cop/style/documentation.rb +17 -2
- data/lib/rubocop/cop/style/each_for_simple_loop.rb +7 -7
- data/lib/rubocop/cop/style/each_with_object.rb +5 -5
- data/lib/rubocop/cop/style/empty_block_parameter.rb +47 -0
- data/lib/rubocop/cop/style/empty_case_condition.rb +2 -2
- data/lib/rubocop/cop/style/empty_else.rb +52 -22
- data/lib/rubocop/cop/style/empty_lambda_parameter.rb +43 -0
- data/lib/rubocop/cop/style/empty_literal.rb +17 -5
- data/lib/rubocop/cop/style/empty_method.rb +4 -10
- data/lib/rubocop/cop/style/encoding.rb +2 -1
- data/lib/rubocop/cop/style/eval_with_location.rb +146 -0
- data/lib/rubocop/cop/style/even_odd.rb +4 -2
- data/lib/rubocop/cop/style/extend_self.rb +92 -0
- data/lib/rubocop/cop/style/flip_flop.rb +11 -0
- data/lib/rubocop/cop/style/format_string.rb +29 -2
- data/lib/rubocop/cop/style/format_string_token.rb +15 -14
- data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +4 -3
- data/lib/rubocop/cop/style/global_vars.rb +11 -1
- data/lib/rubocop/cop/style/hash_syntax.rb +44 -43
- data/lib/rubocop/cop/style/identical_conditional_branches.rb +8 -8
- data/lib/rubocop/cop/style/if_inside_else.rb +10 -10
- data/lib/rubocop/cop/style/if_unless_modifier.rb +7 -7
- data/lib/rubocop/cop/style/if_unless_modifier_of_if_unless.rb +2 -2
- data/lib/rubocop/cop/style/if_with_semicolon.rb +9 -0
- data/lib/rubocop/cop/style/implicit_runtime_error.rb +5 -5
- data/lib/rubocop/cop/style/infinite_loop.rb +2 -2
- data/lib/rubocop/cop/style/lambda.rb +23 -31
- data/lib/rubocop/cop/style/lambda_call.rb +15 -9
- data/lib/rubocop/cop/style/line_end_concatenation.rb +4 -4
- data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +2 -2
- data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +2 -2
- data/lib/rubocop/cop/style/method_def_parentheses.rb +4 -3
- data/lib/rubocop/cop/style/method_missing.rb +8 -8
- data/lib/rubocop/cop/style/min_max.rb +12 -12
- data/lib/rubocop/cop/style/missing_else.rb +5 -4
- data/lib/rubocop/cop/style/mixin_grouping.rb +29 -19
- data/lib/rubocop/cop/style/mixin_usage.rb +8 -10
- data/lib/rubocop/cop/style/module_function.rb +17 -5
- data/lib/rubocop/cop/style/multiline_if_modifier.rb +4 -4
- data/lib/rubocop/cop/style/multiline_if_then.rb +14 -13
- data/lib/rubocop/cop/style/multiline_memoization.rb +8 -14
- data/lib/rubocop/cop/style/mutable_constant.rb +12 -12
- data/lib/rubocop/cop/style/negated_if.rb +22 -30
- data/lib/rubocop/cop/style/negated_while.rb +1 -5
- data/lib/rubocop/cop/style/nested_parenthesized_calls.rb +18 -17
- data/lib/rubocop/cop/style/next.rb +39 -11
- data/lib/rubocop/cop/style/nil_comparison.rb +6 -6
- data/lib/rubocop/cop/style/non_nil_check.rb +25 -22
- data/lib/rubocop/cop/style/not.rb +14 -4
- data/lib/rubocop/cop/style/numeric_literal_prefix.rb +6 -6
- data/lib/rubocop/cop/style/numeric_literals.rb +7 -7
- data/lib/rubocop/cop/style/numeric_predicate.rb +14 -18
- data/lib/rubocop/cop/style/one_line_conditional.rb +4 -4
- data/lib/rubocop/cop/style/option_hash.rb +11 -14
- data/lib/rubocop/cop/style/or_assignment.rb +2 -2
- data/lib/rubocop/cop/style/parallel_assignment.rb +13 -13
- data/lib/rubocop/cop/style/parentheses_around_condition.rb +19 -3
- data/lib/rubocop/cop/style/percent_literal_delimiters.rb +24 -3
- data/lib/rubocop/cop/style/percent_q_literals.rb +27 -6
- data/lib/rubocop/cop/style/perl_backrefs.rb +7 -0
- data/lib/rubocop/cop/style/preferred_hash_methods.rb +6 -10
- data/lib/rubocop/cop/style/proc.rb +8 -0
- data/lib/rubocop/cop/style/raise_args.rb +8 -14
- data/lib/rubocop/cop/style/random_with_offset.rb +160 -0
- data/lib/rubocop/cop/style/redundant_begin.rb +14 -4
- data/lib/rubocop/cop/style/redundant_conditional.rb +9 -8
- data/lib/rubocop/cop/style/redundant_return.rb +5 -4
- data/lib/rubocop/cop/style/redundant_self.rb +25 -26
- data/lib/rubocop/cop/style/regexp_literal.rb +74 -21
- data/lib/rubocop/cop/style/rescue_modifier.rb +11 -0
- data/lib/rubocop/cop/style/rescue_standard_error.rb +122 -0
- data/lib/rubocop/cop/style/return_nil.rb +4 -8
- data/lib/rubocop/cop/style/safe_navigation.rb +20 -2
- data/lib/rubocop/cop/style/self_assignment.rb +13 -13
- data/lib/rubocop/cop/style/semicolon.rb +18 -8
- data/lib/rubocop/cop/style/send.rb +9 -0
- data/lib/rubocop/cop/style/signal_exception.rb +100 -0
- data/lib/rubocop/cop/style/single_line_block_params.rb +2 -2
- data/lib/rubocop/cop/style/single_line_methods.rb +20 -8
- data/lib/rubocop/cop/style/special_global_vars.rb +16 -11
- data/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +7 -12
- data/lib/rubocop/cop/style/stderr_puts.rb +5 -3
- data/lib/rubocop/cop/style/string_hash_keys.rb +36 -0
- data/lib/rubocop/cop/style/string_literals.rb +22 -0
- data/lib/rubocop/cop/style/string_literals_in_interpolation.rb +2 -8
- data/lib/rubocop/cop/style/string_methods.rb +18 -7
- data/lib/rubocop/cop/style/symbol_array.rb +5 -9
- data/lib/rubocop/cop/style/symbol_proc.rb +5 -4
- data/lib/rubocop/cop/style/ternary_parentheses.rb +31 -40
- data/lib/rubocop/cop/style/trailing_body_on_method_definition.rb +101 -0
- data/lib/rubocop/cop/style/trailing_comma_in_arguments.rb +20 -6
- data/lib/rubocop/cop/style/trailing_comma_in_literal.rb +22 -7
- data/lib/rubocop/cop/style/trailing_method_end_statement.rb +95 -0
- data/lib/rubocop/cop/style/trailing_underscore_variable.rb +8 -4
- data/lib/rubocop/cop/style/trivial_accessors.rb +32 -10
- data/lib/rubocop/cop/style/unless_else.rb +15 -0
- data/lib/rubocop/cop/style/unneeded_capital_w.rb +17 -7
- data/lib/rubocop/cop/style/unneeded_interpolation.rb +14 -18
- data/lib/rubocop/cop/style/unneeded_percent_q.rb +13 -12
- data/lib/rubocop/cop/style/variable_interpolation.rb +20 -9
- data/lib/rubocop/cop/style/when_then.rb +13 -0
- data/lib/rubocop/cop/style/while_until_do.rb +26 -4
- data/lib/rubocop/cop/style/while_until_modifier.rb +25 -6
- data/lib/rubocop/cop/style/word_array.rb +4 -8
- data/lib/rubocop/cop/style/yoda_condition.rb +10 -16
- data/lib/rubocop/cop/style/zero_length_predicate.rb +23 -15
- data/lib/rubocop/cop/util.rb +42 -33
- data/lib/rubocop/cop/variable_force.rb +1 -1
- data/lib/rubocop/cop/variable_force/assignment.rb +4 -2
- data/lib/rubocop/cop/variable_force/scope.rb +1 -5
- data/lib/rubocop/cop/variable_force/variable.rb +1 -1
- data/lib/rubocop/formatter/disabled_config_formatter.rb +2 -3
- data/lib/rubocop/formatter/formatter_set.rb +2 -1
- data/lib/rubocop/formatter/json_formatter.rb +9 -3
- data/lib/rubocop/formatter/quiet_formatter.rb +13 -0
- data/lib/rubocop/node_pattern.rb +2 -3
- data/lib/rubocop/options.rb +8 -8
- data/lib/rubocop/path_util.rb +15 -3
- data/lib/rubocop/processed_source.rb +5 -2
- data/lib/rubocop/rspec/shared_contexts.rb +4 -0
- data/lib/rubocop/runner.rb +1 -1
- data/lib/rubocop/token.rb +74 -0
- data/lib/rubocop/version.rb +1 -1
- metadata +37 -10
- data/lib/rubocop/cop/internal_affairs/deprecated_positional_arguments.rb +0 -81
- data/lib/rubocop/cop/layout/space_inside_brackets.rb +0 -20
- data/lib/rubocop/cop/lint/rescue_without_error_class.rb +0 -41
- data/lib/rubocop/cop/mixin/space_inside.rb +0 -76
@@ -6,34 +6,34 @@ module RuboCop
|
|
6
6
|
# This cop checks the indentation of the method name part in method calls
|
7
7
|
# that span more than one line.
|
8
8
|
#
|
9
|
-
# @example
|
9
|
+
# @example EnforcedStyle: aligned
|
10
10
|
# # bad
|
11
11
|
# while myvariable
|
12
12
|
# .b
|
13
13
|
# # do something
|
14
14
|
# end
|
15
15
|
#
|
16
|
-
# # good
|
16
|
+
# # good
|
17
17
|
# while myvariable
|
18
18
|
# .b
|
19
19
|
# # do something
|
20
20
|
# end
|
21
21
|
#
|
22
|
-
# # good
|
22
|
+
# # good
|
23
23
|
# Thing.a
|
24
24
|
# .b
|
25
25
|
# .c
|
26
26
|
#
|
27
|
-
#
|
28
|
-
#
|
27
|
+
# @example EnforcedStyle: indented
|
28
|
+
# # good
|
29
29
|
# while myvariable
|
30
30
|
# .b
|
31
31
|
#
|
32
32
|
# # do something
|
33
33
|
# end
|
34
34
|
#
|
35
|
-
#
|
36
|
-
#
|
35
|
+
# @example EnforcedStyle: indented_relative_to_receiver
|
36
|
+
# # good
|
37
37
|
# while myvariable
|
38
38
|
# .a
|
39
39
|
# .b
|
@@ -41,8 +41,7 @@ module RuboCop
|
|
41
41
|
# # do something
|
42
42
|
# end
|
43
43
|
#
|
44
|
-
# # good
|
45
|
-
# IndentationWidth: 2
|
44
|
+
# # good
|
46
45
|
# myvariable = Thing
|
47
46
|
# .a
|
48
47
|
# .b
|
@@ -167,7 +166,7 @@ module RuboCop
|
|
167
166
|
return unless rhs.source.start_with?('.')
|
168
167
|
|
169
168
|
node = semantic_alignment_node(node)
|
170
|
-
return unless node
|
169
|
+
return unless node && node.loc.selector
|
171
170
|
|
172
171
|
node.loc.dot.join(node.loc.selector)
|
173
172
|
end
|
@@ -34,6 +34,7 @@ module RuboCop
|
|
34
34
|
# def foo(a,
|
35
35
|
# b
|
36
36
|
# )
|
37
|
+
# end
|
37
38
|
#
|
38
39
|
# # symmetrical: bad
|
39
40
|
# # new_line: bad
|
@@ -41,12 +42,14 @@ module RuboCop
|
|
41
42
|
# def foo(
|
42
43
|
# a,
|
43
44
|
# b)
|
45
|
+
# end
|
44
46
|
#
|
45
47
|
# # symmetrical: good
|
46
48
|
# # new_line: bad
|
47
49
|
# # same_line: good
|
48
50
|
# def foo(a,
|
49
51
|
# b)
|
52
|
+
# end
|
50
53
|
#
|
51
54
|
# # symmetrical: good
|
52
55
|
# # new_line: good
|
@@ -55,6 +58,7 @@ module RuboCop
|
|
55
58
|
# a,
|
56
59
|
# b
|
57
60
|
# )
|
61
|
+
# end
|
58
62
|
class MultilineMethodDefinitionBraceLayout < Cop
|
59
63
|
include MultilineLiteralBraceLayout
|
60
64
|
|
@@ -22,7 +22,9 @@ module RuboCop
|
|
22
22
|
# puts 'error'
|
23
23
|
# end
|
24
24
|
class RescueEnsureAlignment < Cop
|
25
|
-
MSG = '
|
25
|
+
MSG = '`%<kw_loc>s` at %<kw_loc_line>d, %<kw_loc_column>d is not ' \
|
26
|
+
'aligned with `end` at %<end_loc_line>d, %<end_loc_column>d.'
|
27
|
+
.freeze
|
26
28
|
|
27
29
|
def on_resbody(node)
|
28
30
|
check(node) unless modifier?(node)
|
@@ -63,8 +65,12 @@ module RuboCop
|
|
63
65
|
end
|
64
66
|
|
65
67
|
def format_message(kw_loc, end_loc)
|
66
|
-
format(MSG,
|
67
|
-
|
68
|
+
format(MSG,
|
69
|
+
kw_loc: kw_loc.source,
|
70
|
+
kw_loc_line: kw_loc.line,
|
71
|
+
kw_loc_column: kw_loc.column,
|
72
|
+
end_loc_line: end_loc.line,
|
73
|
+
end_loc_column: end_loc.column)
|
68
74
|
end
|
69
75
|
|
70
76
|
def modifier?(node)
|
@@ -32,15 +32,15 @@ module RuboCop
|
|
32
32
|
add_offense(colon, location: colon) unless followed_by_space?(colon)
|
33
33
|
end
|
34
34
|
|
35
|
+
def autocorrect(range)
|
36
|
+
->(corrector) { corrector.insert_after(range, ' ') }
|
37
|
+
end
|
38
|
+
|
35
39
|
private
|
36
40
|
|
37
41
|
def followed_by_space?(colon)
|
38
42
|
colon.source_buffer.source[colon.end_pos] =~ /\s/
|
39
43
|
end
|
40
|
-
|
41
|
-
def autocorrect(range)
|
42
|
-
->(corrector) { corrector.insert_after(range, ' ') }
|
43
|
-
end
|
44
44
|
end
|
45
45
|
end
|
46
46
|
end
|
@@ -8,11 +8,11 @@ module RuboCop
|
|
8
8
|
# @example
|
9
9
|
#
|
10
10
|
# # bad
|
11
|
-
# 1,2
|
11
|
+
# [1,2]
|
12
12
|
# { foo:bar,}
|
13
13
|
#
|
14
14
|
# # good
|
15
|
-
# 1, 2
|
15
|
+
# [1, 2]
|
16
16
|
# { foo:bar, }
|
17
17
|
class SpaceAfterComma < Cop
|
18
18
|
include SpaceAfterPunctuation
|
@@ -23,7 +23,7 @@ module RuboCop
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def kind(token)
|
26
|
-
'comma' if token.
|
26
|
+
'comma' if token.comma?
|
27
27
|
end
|
28
28
|
end
|
29
29
|
end
|
@@ -8,10 +8,12 @@ module RuboCop
|
|
8
8
|
# @example
|
9
9
|
#
|
10
10
|
# # bad
|
11
|
-
# def func (x)
|
11
|
+
# def func (x) end
|
12
|
+
# def method= (y) end
|
12
13
|
#
|
13
14
|
# # good
|
14
|
-
# def func(x)
|
15
|
+
# def func(x) end
|
16
|
+
# def method=(y) end
|
15
17
|
class SpaceAfterMethodName < Cop
|
16
18
|
MSG = 'Do not put a space between a method name and the opening ' \
|
17
19
|
'parenthesis.'.freeze
|
@@ -28,8 +30,6 @@ module RuboCop
|
|
28
30
|
end
|
29
31
|
alias on_defs on_def
|
30
32
|
|
31
|
-
private
|
32
|
-
|
33
33
|
def autocorrect(pos_before_left_paren)
|
34
34
|
->(corrector) { corrector.remove(pos_before_left_paren) }
|
35
35
|
end
|
@@ -4,6 +4,13 @@ module RuboCop
|
|
4
4
|
module Cop
|
5
5
|
module Layout
|
6
6
|
# Checks for semicolon (;) not followed by some kind of space.
|
7
|
+
#
|
8
|
+
# @example
|
9
|
+
# # bad
|
10
|
+
# x = 1;y = 2
|
11
|
+
#
|
12
|
+
# # good
|
13
|
+
# x = 1; y = 2
|
7
14
|
class SpaceAfterSemicolon < Cop
|
8
15
|
include SpaceAfterPunctuation
|
9
16
|
|
@@ -13,7 +20,7 @@ module RuboCop
|
|
13
20
|
end
|
14
21
|
|
15
22
|
def kind(token)
|
16
|
-
'semicolon' if token.
|
23
|
+
'semicolon' if token.semicolon?
|
17
24
|
end
|
18
25
|
end
|
19
26
|
end
|
@@ -5,10 +5,7 @@ module RuboCop
|
|
5
5
|
module Layout
|
6
6
|
# Checks the spacing inside and after block parameters pipes.
|
7
7
|
#
|
8
|
-
# @example
|
9
|
-
#
|
10
|
-
# # EnforcedStyleInsidePipes: no_space (default)
|
11
|
-
#
|
8
|
+
# @example EnforcedStyleInsidePipes: no_space (default)
|
12
9
|
# # bad
|
13
10
|
# {}.each { | x, y |puts x }
|
14
11
|
# ->( x, y ) { puts x }
|
@@ -17,10 +14,7 @@ module RuboCop
|
|
17
14
|
# {}.each { |x, y| puts x }
|
18
15
|
# ->(x, y) { puts x }
|
19
16
|
#
|
20
|
-
# @example
|
21
|
-
#
|
22
|
-
# # EnforcedStyleInsidePipes: space
|
23
|
-
#
|
17
|
+
# @example EnforcedStyleInsidePipes: space
|
24
18
|
# # bad
|
25
19
|
# {}.each { |x, y| puts x }
|
26
20
|
# ->(x, y) { puts x }
|
@@ -50,6 +44,15 @@ module RuboCop
|
|
50
44
|
check_each_arg(args)
|
51
45
|
end
|
52
46
|
|
47
|
+
def autocorrect(range)
|
48
|
+
lambda do |corrector|
|
49
|
+
case range.source
|
50
|
+
when /^\s+$/ then corrector.remove(range)
|
51
|
+
else corrector.insert_after(range, ' ')
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
53
56
|
private
|
54
57
|
|
55
58
|
def style_parameter_name
|
@@ -105,8 +108,11 @@ module RuboCop
|
|
105
108
|
def check_each_arg(args)
|
106
109
|
args.children.butfirst.each do |arg|
|
107
110
|
expr = arg.source_range
|
108
|
-
check_no_space(
|
109
|
-
|
111
|
+
check_no_space(
|
112
|
+
range_with_surrounding_space(range: expr, side: :left).begin_pos,
|
113
|
+
expr.begin_pos - 1,
|
114
|
+
'Extra space before'
|
115
|
+
)
|
110
116
|
end
|
111
117
|
end
|
112
118
|
|
@@ -123,15 +129,6 @@ module RuboCop
|
|
123
129
|
add_offense(range, location: range,
|
124
130
|
message: "#{msg} block parameter detected.")
|
125
131
|
end
|
126
|
-
|
127
|
-
def autocorrect(range)
|
128
|
-
lambda do |corrector|
|
129
|
-
case range.source
|
130
|
-
when /^\s+$/ then corrector.remove(range)
|
131
|
-
else corrector.insert_after(range, ' ')
|
132
|
-
end
|
133
|
-
end
|
134
|
-
end
|
135
132
|
end
|
136
133
|
end
|
137
134
|
end
|
@@ -5,21 +5,40 @@ module RuboCop
|
|
5
5
|
module Layout
|
6
6
|
# Checks that the equals signs in parameter default assignments
|
7
7
|
# have or don't have surrounding space depending on configuration.
|
8
|
+
# @example
|
9
|
+
# # bad
|
10
|
+
# def some_method(arg1=:default, arg2=nil, arg3=[])
|
11
|
+
# # do something...
|
12
|
+
# end
|
13
|
+
#
|
14
|
+
# # good
|
15
|
+
# def some_method(arg1 = :default, arg2 = nil, arg3 = [])
|
16
|
+
# # do something...
|
17
|
+
# end
|
8
18
|
class SpaceAroundEqualsInParameterDefault < Cop
|
9
19
|
include SurroundingSpace
|
10
20
|
include ConfigurableEnforcedStyle
|
11
21
|
|
22
|
+
MSG = 'Surrounding space %<type>s in default value assignment.'.freeze
|
23
|
+
|
12
24
|
def on_optarg(node)
|
13
25
|
index = index_of_first_token(node)
|
14
26
|
arg, equals, value = processed_source.tokens[index, 3]
|
15
27
|
check_optarg(arg, equals, value)
|
16
28
|
end
|
17
29
|
|
30
|
+
def autocorrect(range)
|
31
|
+
m = range.source.match(/=\s*(\S+)/)
|
32
|
+
rest = m ? m.captures[0] : ''
|
33
|
+
replacement = style == :space ? ' = ' : '='
|
34
|
+
->(corrector) { corrector.replace(range, replacement + rest) }
|
35
|
+
end
|
36
|
+
|
18
37
|
private
|
19
38
|
|
20
39
|
def check_optarg(arg, equals, value)
|
21
|
-
space_on_both_sides = space_on_both_sides?(arg, equals
|
22
|
-
no_surrounding_space = no_surrounding_space?(arg, equals
|
40
|
+
space_on_both_sides = space_on_both_sides?(arg, equals)
|
41
|
+
no_surrounding_space = no_surrounding_space?(arg, equals)
|
23
42
|
|
24
43
|
if style == :space && space_on_both_sides ||
|
25
44
|
style == :no_space && no_surrounding_space
|
@@ -32,7 +51,7 @@ module RuboCop
|
|
32
51
|
|
33
52
|
def incorrect_style_detected(arg, value, space_on_both_sides,
|
34
53
|
no_surrounding_space)
|
35
|
-
range = range_between(arg.
|
54
|
+
range = range_between(arg.end_pos, value.begin_pos)
|
36
55
|
add_offense(range, location: range) do
|
37
56
|
if style == :space && no_surrounding_space ||
|
38
57
|
style == :no_space && space_on_both_sides
|
@@ -43,24 +62,16 @@ module RuboCop
|
|
43
62
|
end
|
44
63
|
end
|
45
64
|
|
46
|
-
def space_on_both_sides?(arg, equals
|
47
|
-
|
65
|
+
def space_on_both_sides?(arg, equals)
|
66
|
+
arg.space_after? && equals.space_after?
|
48
67
|
end
|
49
68
|
|
50
|
-
def no_surrounding_space?(arg, equals
|
51
|
-
!
|
69
|
+
def no_surrounding_space?(arg, equals)
|
70
|
+
!arg.space_after? && !equals.space_after?
|
52
71
|
end
|
53
72
|
|
54
73
|
def message(_)
|
55
|
-
format(
|
56
|
-
style == :space ? 'missing' : 'detected')
|
57
|
-
end
|
58
|
-
|
59
|
-
def autocorrect(range)
|
60
|
-
m = range.source.match(/=\s*(\S+)/)
|
61
|
-
rest = m ? m.captures[0] : ''
|
62
|
-
replacement = style == :space ? ' = ' : '='
|
63
|
-
->(corrector) { corrector.replace(range, replacement + rest) }
|
74
|
+
format(MSG, type: style == :space ? 'missing' : 'detected')
|
64
75
|
end
|
65
76
|
end
|
66
77
|
end
|
@@ -25,8 +25,8 @@ module RuboCop
|
|
25
25
|
#
|
26
26
|
# something = 123 if test
|
27
27
|
class SpaceAroundKeyword < Cop
|
28
|
-
MSG_BEFORE = 'Space before keyword
|
29
|
-
MSG_AFTER = 'Space after keyword
|
28
|
+
MSG_BEFORE = 'Space before keyword `%<range>s` is missing.'.freeze
|
29
|
+
MSG_AFTER = 'Space after keyword `%<range>s` is missing.'.freeze
|
30
30
|
|
31
31
|
DO = 'do'.freeze
|
32
32
|
SAFE_NAVIGATION = '&.'.freeze
|
@@ -127,6 +127,14 @@ module RuboCop
|
|
127
127
|
check(node, [:keyword].freeze)
|
128
128
|
end
|
129
129
|
|
130
|
+
def autocorrect(range)
|
131
|
+
if space_before_missing?(range)
|
132
|
+
->(corrector) { corrector.insert_before(range, ' '.freeze) }
|
133
|
+
else
|
134
|
+
->(corrector) { corrector.insert_after(range, ' '.freeze) }
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
130
138
|
private
|
131
139
|
|
132
140
|
def check(node, locations, begin_keyword = DO)
|
@@ -166,7 +174,9 @@ module RuboCop
|
|
166
174
|
end
|
167
175
|
|
168
176
|
def offense(range, msg)
|
169
|
-
add_offense(range,
|
177
|
+
add_offense(range,
|
178
|
+
location: range,
|
179
|
+
message: format(msg, range: range.source))
|
170
180
|
end
|
171
181
|
|
172
182
|
def space_before_missing?(range)
|
@@ -214,14 +224,6 @@ module RuboCop
|
|
214
224
|
end
|
215
225
|
false
|
216
226
|
end
|
217
|
-
|
218
|
-
def autocorrect(range)
|
219
|
-
if space_before_missing?(range)
|
220
|
-
->(corrector) { corrector.insert_before(range, ' '.freeze) }
|
221
|
-
else
|
222
|
-
->(corrector) { corrector.insert_after(range, ' '.freeze) }
|
223
|
-
end
|
224
|
-
end
|
225
227
|
end
|
226
228
|
end
|
227
229
|
end
|
@@ -5,6 +5,19 @@ module RuboCop
|
|
5
5
|
module Layout
|
6
6
|
# Checks that operators have space around them, except for **
|
7
7
|
# which should not have surrounding space.
|
8
|
+
#
|
9
|
+
# @example
|
10
|
+
# # bad
|
11
|
+
# total = 3*4
|
12
|
+
# "apple"+"juice"
|
13
|
+
# my_number = 38/4
|
14
|
+
# a ** b
|
15
|
+
#
|
16
|
+
# # good
|
17
|
+
# total = 3 * 4
|
18
|
+
# "apple" + "juice"
|
19
|
+
# my_number = 38 / 4
|
20
|
+
# a**b
|
8
21
|
class SpaceAroundOperators < Cop
|
9
22
|
include PrecedingFollowingAlignment
|
10
23
|
|
@@ -73,6 +86,18 @@ module RuboCop
|
|
73
86
|
alias on_and_asgn on_binary
|
74
87
|
alias on_op_asgn on_special_asgn
|
75
88
|
|
89
|
+
def autocorrect(range)
|
90
|
+
lambda do |corrector|
|
91
|
+
if range.source =~ /\*\*/
|
92
|
+
corrector.replace(range, '**')
|
93
|
+
elsif range.source.end_with?("\n")
|
94
|
+
corrector.replace(range, " #{range.source.strip}\n")
|
95
|
+
else
|
96
|
+
corrector.replace(range, " #{range.source.strip} ")
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
76
101
|
private
|
77
102
|
|
78
103
|
def regular_operator?(send_node)
|
@@ -86,7 +111,7 @@ module RuboCop
|
|
86
111
|
end
|
87
112
|
|
88
113
|
def check_operator(op, right_operand)
|
89
|
-
with_space = range_with_surrounding_space(op)
|
114
|
+
with_space = range_with_surrounding_space(range: op)
|
90
115
|
return if with_space.source.start_with?("\n")
|
91
116
|
|
92
117
|
offense(op, with_space, right_operand) do |msg|
|
@@ -120,18 +145,6 @@ module RuboCop
|
|
120
145
|
(!allow_for_alignment? || !aligned_with_something?(right_operand))
|
121
146
|
end
|
122
147
|
|
123
|
-
def autocorrect(range)
|
124
|
-
lambda do |corrector|
|
125
|
-
if range.source =~ /\*\*/
|
126
|
-
corrector.replace(range, '**')
|
127
|
-
elsif range.source.end_with?("\n")
|
128
|
-
corrector.replace(range, " #{range.source.strip}\n")
|
129
|
-
else
|
130
|
-
corrector.replace(range, " #{range.source.strip} ")
|
131
|
-
end
|
132
|
-
end
|
133
|
-
end
|
134
|
-
|
135
148
|
def align_hash_cop_config
|
136
149
|
config.for_cop('Layout/AlignHash')
|
137
150
|
end
|