rubocop 0.49.1 → 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 +6 -9
- data/bin/rubocop +1 -1
- data/config/default.yml +264 -118
- data/config/disabled.yml +13 -9
- data/config/enabled.yml +1156 -918
- data/lib/rubocop.rb +555 -489
- data/lib/rubocop/ast/builder.rb +6 -1
- data/lib/rubocop/ast/node.rb +68 -52
- data/lib/rubocop/ast/node/args_node.rb +15 -10
- data/lib/rubocop/ast/node/array_node.rb +10 -1
- data/lib/rubocop/ast/node/block_node.rb +9 -0
- data/lib/rubocop/ast/node/def_node.rb +71 -0
- data/lib/rubocop/ast/node/for_node.rb +8 -0
- data/lib/rubocop/ast/node/if_node.rb +10 -2
- data/lib/rubocop/ast/node/mixin/basic_literal_node.rb +16 -0
- data/lib/rubocop/ast/node/mixin/collection_node.rb +15 -0
- data/lib/rubocop/ast/node/mixin/method_dispatch_node.rb +174 -0
- data/lib/rubocop/ast/node/mixin/method_identifier_predicates.rb +89 -0
- data/lib/rubocop/ast/node/mixin/parameterized_node.rb +18 -31
- data/lib/rubocop/ast/node/regexp_node.rb +35 -0
- data/lib/rubocop/ast/node/send_node.rb +21 -150
- data/lib/rubocop/ast/node/str_node.rb +14 -0
- data/lib/rubocop/ast/node/super_node.rb +3 -24
- data/lib/rubocop/ast/node/symbol_node.rb +20 -0
- data/lib/rubocop/ast/node/yield_node.rb +21 -0
- data/lib/rubocop/ast/traversal.rb +7 -7
- data/lib/rubocop/cached_data.rb +1 -6
- data/lib/rubocop/cli.rb +59 -13
- data/lib/rubocop/comment_config.rb +2 -5
- data/lib/rubocop/config.rb +136 -29
- data/lib/rubocop/config_loader.rb +61 -104
- data/lib/rubocop/config_loader_resolver.rb +102 -4
- data/lib/rubocop/cop/autocorrect_logic.rb +1 -1
- data/lib/rubocop/cop/bundler/duplicated_gem.rb +13 -11
- data/lib/rubocop/cop/bundler/insecure_protocol_source.rb +67 -0
- data/lib/rubocop/cop/bundler/ordered_gems.rb +7 -58
- data/lib/rubocop/cop/commissioner.rb +6 -3
- data/lib/rubocop/cop/cop.rb +11 -6
- data/lib/rubocop/cop/gemspec/duplicated_assignment.rb +102 -0
- data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +97 -0
- data/lib/rubocop/cop/gemspec/required_ruby_version.rb +87 -0
- data/lib/rubocop/cop/generator.rb +122 -25
- data/lib/rubocop/cop/internal_affairs.rb +6 -2
- data/lib/rubocop/cop/internal_affairs/node_destructuring.rb +46 -0
- data/lib/rubocop/cop/internal_affairs/node_type_predicate.rb +16 -5
- data/lib/rubocop/cop/internal_affairs/offense_location_keyword.rb +54 -0
- data/lib/rubocop/cop/internal_affairs/redundant_location_argument.rb +59 -0
- data/lib/rubocop/cop/internal_affairs/redundant_message_argument.rb +71 -0
- data/lib/rubocop/cop/internal_affairs/useless_message_assertion.rb +3 -3
- data/lib/rubocop/cop/layout/access_modifier_indentation.rb +6 -10
- data/lib/rubocop/cop/layout/align_array.rb +2 -2
- data/lib/rubocop/cop/layout/align_hash.rb +18 -18
- data/lib/rubocop/cop/layout/align_parameters.rb +11 -23
- data/lib/rubocop/cop/layout/block_end_newline.rb +20 -6
- data/lib/rubocop/cop/layout/case_indentation.rb +15 -18
- data/lib/rubocop/cop/layout/class_structure.rb +306 -0
- data/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +7 -6
- data/lib/rubocop/cop/layout/comment_indentation.rb +42 -3
- data/lib/rubocop/cop/layout/dot_position.rb +31 -13
- data/lib/rubocop/cop/layout/else_alignment.rb +37 -17
- data/lib/rubocop/cop/layout/empty_line_after_magic_comment.rb +1 -1
- data/lib/rubocop/cop/layout/empty_line_between_defs.rb +22 -18
- data/lib/rubocop/cop/layout/empty_lines.rb +16 -2
- data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +23 -6
- 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 +10 -6
- data/lib/rubocop/cop/layout/empty_lines_around_method_body.rb +5 -5
- data/lib/rubocop/cop/layout/empty_lines_around_module_body.rb +22 -7
- data/lib/rubocop/cop/layout/end_of_line.rb +2 -2
- data/lib/rubocop/cop/layout/extra_spacing.rb +23 -26
- data/lib/rubocop/cop/layout/first_method_parameter_line_break.rb +3 -3
- data/lib/rubocop/cop/layout/first_parameter_indentation.rb +9 -3
- data/lib/rubocop/cop/layout/indent_array.rb +68 -21
- data/lib/rubocop/cop/layout/indent_hash.rb +71 -26
- data/lib/rubocop/cop/layout/indent_heredoc.rb +70 -35
- data/lib/rubocop/cop/layout/indentation_consistency.rb +1 -2
- data/lib/rubocop/cop/layout/indentation_width.rb +40 -27
- data/lib/rubocop/cop/layout/initial_indentation.rb +10 -7
- data/lib/rubocop/cop/layout/leading_comment_space.rb +32 -17
- data/lib/rubocop/cop/layout/multiline_array_brace_layout.rb +47 -14
- data/lib/rubocop/cop/layout/multiline_assignment_layout.rb +12 -11
- 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 +29 -27
- data/lib/rubocop/cop/layout/multiline_method_definition_brace_layout.rb +7 -3
- data/lib/rubocop/cop/layout/multiline_operation_indentation.rb +6 -0
- data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +12 -4
- data/lib/rubocop/cop/layout/space_after_colon.rb +13 -6
- data/lib/rubocop/cop/layout/space_after_comma.rb +11 -1
- data/lib/rubocop/cop/layout/space_after_method_name.rb +8 -6
- data/lib/rubocop/cop/layout/space_after_not.rb +1 -1
- data/lib/rubocop/cop/layout/space_after_semicolon.rb +8 -1
- data/lib/rubocop/cop/layout/space_around_block_parameters.rb +32 -25
- data/lib/rubocop/cop/layout/space_around_equals_in_parameter_default.rb +28 -17
- data/lib/rubocop/cop/layout/space_around_keyword.rb +22 -16
- data/lib/rubocop/cop/layout/space_around_operators.rb +27 -14
- data/lib/rubocop/cop/layout/space_before_block_braces.rb +61 -12
- data/lib/rubocop/cop/layout/space_before_comma.rb +12 -1
- data/lib/rubocop/cop/layout/space_before_comment.rb +10 -5
- data/lib/rubocop/cop/layout/space_before_first_arg.rb +5 -4
- data/lib/rubocop/cop/layout/space_before_semicolon.rb +8 -1
- data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +12 -14
- data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +235 -0
- data/lib/rubocop/cop/layout/space_inside_array_percent_literal.rb +4 -4
- data/lib/rubocop/cop/layout/space_inside_block_braces.rb +89 -18
- data/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +62 -36
- data/lib/rubocop/cop/layout/space_inside_parens.rb +40 -3
- data/lib/rubocop/cop/layout/space_inside_percent_literal_delimiters.rb +1 -1
- 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 +32 -17
- data/lib/rubocop/cop/layout/tab.rb +7 -4
- data/lib/rubocop/cop/layout/trailing_blank_lines.rb +11 -9
- data/lib/rubocop/cop/layout/trailing_whitespace.rb +1 -1
- data/lib/rubocop/cop/lint/ambiguous_block_association.rb +12 -19
- data/lib/rubocop/cop/lint/assignment_in_condition.rb +16 -2
- data/lib/rubocop/cop/lint/block_alignment.rb +42 -30
- data/lib/rubocop/cop/lint/boolean_symbol.rb +38 -0
- data/lib/rubocop/cop/lint/circular_argument_reference.rb +3 -14
- data/lib/rubocop/cop/lint/condition_position.rb +5 -1
- data/lib/rubocop/cop/lint/debugger.rb +18 -11
- data/lib/rubocop/cop/lint/def_end_alignment.rb +9 -14
- data/lib/rubocop/cop/lint/deprecated_class_methods.rb +4 -4
- data/lib/rubocop/cop/lint/duplicate_case_condition.rb +3 -3
- data/lib/rubocop/cop/lint/duplicate_methods.rb +75 -5
- data/lib/rubocop/cop/lint/duplicated_key.rb +1 -1
- data/lib/rubocop/cop/lint/each_with_object_argument.rb +1 -1
- data/lib/rubocop/cop/lint/else_layout.rb +3 -3
- data/lib/rubocop/cop/lint/empty_ensure.rb +1 -1
- data/lib/rubocop/cop/lint/empty_expression.rb +1 -1
- data/lib/rubocop/cop/lint/empty_interpolation.rb +1 -1
- data/lib/rubocop/cop/lint/empty_when.rb +1 -1
- data/lib/rubocop/cop/lint/end_alignment.rb +13 -14
- data/lib/rubocop/cop/lint/end_in_method.rb +1 -1
- data/lib/rubocop/cop/lint/ensure_return.rb +1 -1
- data/lib/rubocop/cop/lint/float_out_of_range.rb +5 -5
- data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +36 -41
- data/lib/rubocop/cop/lint/handle_exceptions.rb +1 -1
- data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +1 -1
- data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +25 -20
- data/lib/rubocop/cop/lint/inherit_exception.rb +16 -19
- data/lib/rubocop/cop/lint/interpolation_check.rb +37 -0
- data/lib/rubocop/cop/lint/{literal_in_condition.rb → literal_as_condition.rb} +21 -7
- data/lib/rubocop/cop/lint/literal_in_interpolation.rb +1 -1
- data/lib/rubocop/cop/lint/loop.rb +1 -1
- data/lib/rubocop/cop/lint/missing_cop_enable_directive.rb +81 -0
- data/lib/rubocop/cop/lint/multiple_compare.rb +1 -1
- data/lib/rubocop/cop/lint/nested_method_definition.rb +6 -8
- data/lib/rubocop/cop/lint/nested_percent_literal.rb +58 -0
- data/lib/rubocop/cop/lint/next_without_accumulator.rb +1 -1
- data/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +4 -4
- data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +4 -3
- data/lib/rubocop/cop/lint/percent_string_array.rb +13 -22
- data/lib/rubocop/cop/lint/percent_symbol_array.rb +12 -12
- data/lib/rubocop/cop/lint/rand_one.rb +8 -2
- data/lib/rubocop/cop/lint/redundant_with_index.rb +80 -0
- data/lib/rubocop/cop/lint/redundant_with_object.rb +81 -0
- data/lib/rubocop/cop/lint/regexp_as_condition.rb +29 -0
- data/lib/rubocop/cop/lint/require_parentheses.rb +5 -3
- data/lib/rubocop/cop/lint/rescue_exception.rb +1 -1
- data/lib/rubocop/cop/lint/rescue_type.rb +18 -9
- data/lib/rubocop/cop/lint/return_in_void_context.rb +74 -0
- data/lib/rubocop/cop/lint/safe_navigation_chain.rb +1 -1
- data/lib/rubocop/cop/lint/script_permission.rb +8 -1
- data/lib/rubocop/cop/lint/shadowed_argument.rb +146 -0
- data/lib/rubocop/cop/lint/shadowed_exception.rb +37 -10
- data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +1 -1
- data/lib/rubocop/cop/lint/string_conversion_in_interpolation.rb +7 -7
- data/lib/rubocop/cop/lint/syntax.rb +23 -20
- data/lib/rubocop/cop/lint/underscore_prefixed_variable_name.rb +1 -1
- data/lib/rubocop/cop/lint/unified_integer.rb +5 -4
- data/lib/rubocop/cop/lint/unneeded_disable.rb +41 -16
- data/lib/rubocop/cop/lint/unneeded_require_statement.rb +51 -0
- data/lib/rubocop/cop/lint/unneeded_splat_expansion.rb +45 -19
- data/lib/rubocop/cop/lint/unreachable_code.rb +53 -8
- data/lib/rubocop/cop/lint/unused_method_argument.rb +2 -1
- data/lib/rubocop/cop/lint/uri_escape_unescape.rb +74 -0
- data/lib/rubocop/cop/lint/uri_regexp.rb +73 -0
- data/lib/rubocop/cop/lint/useless_access_modifier.rb +12 -16
- data/lib/rubocop/cop/lint/useless_assignment.rb +1 -1
- data/lib/rubocop/cop/lint/useless_comparison.rb +1 -1
- data/lib/rubocop/cop/lint/useless_setter_call.rb +15 -12
- data/lib/rubocop/cop/lint/void.rb +38 -27
- data/lib/rubocop/cop/message_annotator.rb +4 -2
- data/lib/rubocop/cop/metrics/abc_size.rb +2 -2
- data/lib/rubocop/cop/metrics/block_nesting.rb +1 -1
- 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 +8 -5
- data/lib/rubocop/cop/metrics/method_length.rb +8 -3
- data/lib/rubocop/cop/metrics/module_length.rb +3 -1
- data/lib/rubocop/cop/metrics/parameter_lists.rb +14 -5
- data/lib/rubocop/cop/metrics/perceived_complexity.rb +2 -1
- data/lib/rubocop/cop/mixin/array_hash_indentation.rb +3 -2
- data/lib/rubocop/cop/mixin/autocorrect_alignment.rb +2 -2
- data/lib/rubocop/cop/mixin/code_length.rb +1 -1
- data/lib/rubocop/cop/mixin/configurable_formatting.rb +1 -1
- data/lib/rubocop/cop/mixin/def_node.rb +1 -1
- data/lib/rubocop/cop/mixin/documentation_comment.rb +1 -1
- data/lib/rubocop/cop/mixin/empty_lines_around_body.rb +14 -7
- data/lib/rubocop/cop/mixin/empty_parameter.rb +23 -0
- data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +8 -4
- data/lib/rubocop/cop/mixin/enforce_superclass.rb +3 -3
- data/lib/rubocop/cop/mixin/first_element_line_break.rb +12 -3
- data/lib/rubocop/cop/mixin/heredoc.rb +28 -0
- data/lib/rubocop/cop/mixin/method_complexity.rb +33 -7
- data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +74 -33
- data/lib/rubocop/cop/mixin/multiline_literal_brace_layout.rb +34 -8
- data/lib/rubocop/cop/mixin/negative_conditional.rb +4 -1
- data/lib/rubocop/cop/mixin/ordered_gem_node.rb +67 -0
- data/lib/rubocop/cop/mixin/parentheses.rb +12 -0
- data/lib/rubocop/cop/mixin/parser_diagnostic.rb +4 -1
- data/lib/rubocop/cop/mixin/percent_array.rb +52 -0
- data/lib/rubocop/cop/mixin/space_after_punctuation.rb +9 -8
- data/lib/rubocop/cop/mixin/space_before_punctuation.rb +11 -10
- data/lib/rubocop/cop/mixin/statement_modifier.rb +7 -17
- data/lib/rubocop/cop/mixin/string_help.rb +1 -1
- data/lib/rubocop/cop/mixin/string_literals_help.rb +1 -1
- 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 +25 -17
- data/lib/rubocop/cop/mixin/unused_argument.rb +6 -2
- data/lib/rubocop/cop/naming/accessor_method_name.rb +55 -0
- data/lib/rubocop/cop/{style → naming}/ascii_identifiers.rb +35 -2
- data/lib/rubocop/cop/{style/op_method.rb → naming/binary_operator_parameter_name.rb} +7 -6
- data/lib/rubocop/cop/naming/class_and_module_camel_case.rb +33 -0
- data/lib/rubocop/cop/naming/constant_name.rb +58 -0
- data/lib/rubocop/cop/{style → naming}/file_name.rb +28 -13
- data/lib/rubocop/cop/naming/heredoc_delimiter_case.rb +62 -0
- data/lib/rubocop/cop/naming/heredoc_delimiter_naming.rb +59 -0
- data/lib/rubocop/cop/naming/method_name.rb +40 -0
- data/lib/rubocop/cop/naming/predicate_name.rb +101 -0
- data/lib/rubocop/cop/naming/variable_name.rb +50 -0
- data/lib/rubocop/cop/{style → naming}/variable_number.rb +11 -28
- data/lib/rubocop/cop/offense.rb +6 -1
- data/lib/rubocop/cop/performance/caller.rb +39 -11
- data/lib/rubocop/cop/performance/case_when_splat.rb +3 -7
- data/lib/rubocop/cop/performance/casecmp.rb +9 -8
- data/lib/rubocop/cop/performance/compare_with_block.rb +23 -13
- data/lib/rubocop/cop/performance/count.rb +7 -4
- data/lib/rubocop/cop/performance/detect.rb +9 -6
- data/lib/rubocop/cop/performance/double_start_end_with.rb +12 -20
- data/lib/rubocop/cop/performance/end_with.rb +6 -6
- data/lib/rubocop/cop/performance/fixed_size.rb +1 -1
- data/lib/rubocop/cop/performance/flat_map.rb +5 -2
- data/lib/rubocop/cop/performance/hash_each_methods.rb +85 -40
- data/lib/rubocop/cop/performance/lstrip_rstrip.rb +9 -6
- data/lib/rubocop/cop/performance/range_include.rb +3 -3
- data/lib/rubocop/cop/performance/redundant_block_call.rb +28 -28
- data/lib/rubocop/cop/performance/redundant_match.rb +13 -12
- data/lib/rubocop/cop/performance/redundant_merge.rb +44 -26
- data/lib/rubocop/cop/performance/redundant_sort_by.rb +9 -6
- data/lib/rubocop/cop/performance/regexp_match.rb +19 -10
- data/lib/rubocop/cop/performance/reverse_each.rb +1 -1
- data/lib/rubocop/cop/performance/sample.rb +1 -1
- data/lib/rubocop/cop/performance/size.rb +3 -3
- data/lib/rubocop/cop/performance/start_with.rb +6 -6
- data/lib/rubocop/cop/performance/string_replacement.rb +6 -6
- data/lib/rubocop/cop/performance/times_map.rb +32 -22
- data/lib/rubocop/cop/performance/unfreeze_string.rb +50 -0
- data/lib/rubocop/cop/performance/uri_default_parser.rb +47 -0
- data/lib/rubocop/cop/rails/action_filter.rb +23 -1
- data/lib/rubocop/cop/rails/active_support_aliases.rb +4 -5
- data/lib/rubocop/cop/rails/application_job.rb +5 -3
- data/lib/rubocop/cop/rails/application_record.rb +5 -3
- data/lib/rubocop/cop/rails/blank.rb +20 -17
- data/lib/rubocop/cop/rails/create_table_with_timestamps.rb +82 -0
- data/lib/rubocop/cop/rails/date.rb +7 -6
- data/lib/rubocop/cop/rails/delegate.rb +53 -29
- data/lib/rubocop/cop/rails/delegate_allow_blank.rb +4 -4
- data/lib/rubocop/cop/rails/dynamic_find_by.rb +2 -2
- data/lib/rubocop/cop/rails/enum_uniqueness.rb +4 -4
- data/lib/rubocop/cop/rails/environment_comparison.rb +66 -0
- data/lib/rubocop/cop/rails/exit.rb +8 -1
- data/lib/rubocop/cop/rails/file_path.rb +8 -11
- data/lib/rubocop/cop/rails/find_by.rb +2 -1
- data/lib/rubocop/cop/rails/find_each.rb +1 -1
- data/lib/rubocop/cop/rails/has_and_belongs_to_many.rb +8 -1
- data/lib/rubocop/cop/rails/has_many_or_has_one_dependent.rb +76 -0
- data/lib/rubocop/cop/rails/http_positional_arguments.rb +40 -44
- 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/not_null_column.rb +6 -6
- data/lib/rubocop/cop/rails/output.rb +11 -2
- data/lib/rubocop/cop/rails/output_safety.rb +16 -21
- data/lib/rubocop/cop/rails/pluralization_grammar.rb +10 -10
- data/lib/rubocop/cop/rails/presence.rb +105 -0
- data/lib/rubocop/cop/rails/present.rb +14 -17
- data/lib/rubocop/cop/rails/read_write_attribute.rb +13 -13
- data/lib/rubocop/cop/rails/redundant_receiver_in_with_options.rb +91 -0
- data/lib/rubocop/cop/rails/relative_date_constant.rb +11 -11
- data/lib/rubocop/cop/rails/request_referer.rb +3 -3
- data/lib/rubocop/cop/rails/reversible_migration.rb +36 -35
- data/lib/rubocop/cop/rails/safe_navigation.rb +7 -8
- data/lib/rubocop/cop/rails/save_bang.rb +19 -17
- data/lib/rubocop/cop/rails/scope_args.rb +2 -2
- data/lib/rubocop/cop/rails/skips_model_validations.rb +2 -2
- data/lib/rubocop/cop/rails/time_zone.rb +3 -2
- data/lib/rubocop/cop/rails/uniq_before_pluck.rb +4 -2
- data/lib/rubocop/cop/rails/unknown_env.rb +63 -0
- data/lib/rubocop/cop/rails/validation.rb +8 -8
- data/lib/rubocop/cop/registry.rb +2 -1
- data/lib/rubocop/cop/security/eval.rb +4 -4
- data/lib/rubocop/cop/security/json_load.rb +7 -5
- data/lib/rubocop/cop/security/marshal_load.rb +8 -6
- data/lib/rubocop/cop/security/yaml_load.rb +4 -4
- data/lib/rubocop/cop/style/alias.rb +49 -27
- data/lib/rubocop/cop/style/and_or.rb +65 -45
- data/lib/rubocop/cop/style/array_join.rb +10 -1
- data/lib/rubocop/cop/style/ascii_comments.rb +24 -4
- data/lib/rubocop/cop/style/attr.rb +15 -5
- data/lib/rubocop/cop/style/auto_resource_cleanup.rb +7 -5
- data/lib/rubocop/cop/style/bare_percent_literals.rb +31 -10
- data/lib/rubocop/cop/style/begin_block.rb +1 -1
- data/lib/rubocop/cop/style/block_comments.rb +17 -3
- data/lib/rubocop/cop/style/block_delimiters.rb +82 -16
- data/lib/rubocop/cop/style/braces_around_hash_parameters.rb +68 -32
- data/lib/rubocop/cop/style/case_equality.rb +13 -1
- data/lib/rubocop/cop/style/character_literal.rb +10 -0
- data/lib/rubocop/cop/style/class_and_module_children.rb +8 -4
- data/lib/rubocop/cop/style/class_check.rb +29 -10
- data/lib/rubocop/cop/style/class_methods.rb +10 -9
- data/lib/rubocop/cop/style/class_vars.rb +5 -4
- data/lib/rubocop/cop/style/collection_methods.rb +5 -3
- data/lib/rubocop/cop/style/colon_method_call.rb +18 -2
- data/lib/rubocop/cop/style/colon_method_definition.rb +36 -0
- data/lib/rubocop/cop/style/command_literal.rb +90 -30
- data/lib/rubocop/cop/style/comment_annotation.rb +39 -11
- data/lib/rubocop/cop/style/commented_keyword.rb +84 -0
- data/lib/rubocop/cop/style/conditional_assignment.rb +41 -41
- data/lib/rubocop/cop/style/copyright.rb +27 -28
- data/lib/rubocop/cop/style/date_time.rb +44 -0
- data/lib/rubocop/cop/style/def_with_parentheses.rb +31 -5
- data/lib/rubocop/cop/style/dir.rb +48 -0
- data/lib/rubocop/cop/style/documentation.rb +17 -2
- data/lib/rubocop/cop/style/documentation_method.rb +2 -6
- data/lib/rubocop/cop/style/double_negation.rb +1 -1
- data/lib/rubocop/cop/style/each_for_simple_loop.rb +8 -8
- data/lib/rubocop/cop/style/each_with_object.rb +6 -5
- data/lib/rubocop/cop/style/empty_block_parameter.rb +47 -0
- data/lib/rubocop/cop/style/empty_case_condition.rb +3 -3
- data/lib/rubocop/cop/style/empty_else.rb +55 -24
- data/lib/rubocop/cop/style/empty_lambda_parameter.rb +43 -0
- data/lib/rubocop/cop/style/empty_literal.rb +25 -14
- data/lib/rubocop/cop/style/empty_method.rb +29 -25
- data/lib/rubocop/cop/style/encoding.rb +8 -51
- data/lib/rubocop/cop/style/end_block.rb +1 -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 +13 -2
- data/lib/rubocop/cop/style/for.rb +6 -2
- data/lib/rubocop/cop/style/format_string.rb +33 -5
- data/lib/rubocop/cop/style/format_string_token.rb +17 -15
- data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +7 -6
- data/lib/rubocop/cop/style/global_vars.rb +12 -2
- data/lib/rubocop/cop/style/guard_clause.rb +6 -4
- data/lib/rubocop/cop/style/hash_syntax.rb +56 -56
- data/lib/rubocop/cop/style/identical_conditional_branches.rb +12 -8
- data/lib/rubocop/cop/style/if_inside_else.rb +11 -11
- data/lib/rubocop/cop/style/if_unless_modifier.rb +8 -7
- data/lib/rubocop/cop/style/if_unless_modifier_of_if_unless.rb +3 -2
- data/lib/rubocop/cop/style/if_with_semicolon.rb +10 -1
- data/lib/rubocop/cop/style/implicit_runtime_error.rb +7 -6
- data/lib/rubocop/cop/style/infinite_loop.rb +4 -4
- data/lib/rubocop/cop/style/inline_comment.rb +1 -1
- data/lib/rubocop/cop/style/inverse_methods.rb +24 -14
- data/lib/rubocop/cop/style/lambda.rb +45 -43
- data/lib/rubocop/cop/style/lambda_call.rb +37 -10
- data/lib/rubocop/cop/style/line_end_concatenation.rb +5 -5
- data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +3 -19
- data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +6 -4
- data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +1 -1
- data/lib/rubocop/cop/style/method_def_parentheses.rb +20 -25
- data/lib/rubocop/cop/style/method_missing.rb +13 -26
- data/lib/rubocop/cop/style/min_max.rb +68 -0
- data/lib/rubocop/cop/style/missing_else.rb +20 -6
- data/lib/rubocop/cop/style/mixin_grouping.rb +31 -21
- data/lib/rubocop/cop/style/mixin_usage.rb +71 -0
- data/lib/rubocop/cop/style/module_function.rb +27 -11
- data/lib/rubocop/cop/style/multiline_block_chain.rb +1 -1
- data/lib/rubocop/cop/style/multiline_if_modifier.rb +8 -4
- data/lib/rubocop/cop/style/multiline_if_then.rb +15 -13
- data/lib/rubocop/cop/style/multiline_memoization.rb +33 -17
- data/lib/rubocop/cop/style/multiline_ternary_operator.rb +1 -1
- data/lib/rubocop/cop/style/multiple_comparison.rb +1 -1
- data/lib/rubocop/cop/style/mutable_constant.rb +11 -15
- data/lib/rubocop/cop/style/negated_if.rb +27 -31
- data/lib/rubocop/cop/style/negated_while.rb +1 -5
- data/lib/rubocop/cop/style/nested_modifier.rb +1 -1
- data/lib/rubocop/cop/style/nested_parenthesized_calls.rb +26 -23
- data/lib/rubocop/cop/style/nested_ternary_operator.rb +1 -1
- data/lib/rubocop/cop/style/next.rb +41 -12
- data/lib/rubocop/cop/style/nil_comparison.rb +8 -8
- data/lib/rubocop/cop/style/non_nil_check.rb +41 -38
- data/lib/rubocop/cop/style/not.rb +15 -5
- data/lib/rubocop/cop/style/numeric_literal_prefix.rb +8 -4
- data/lib/rubocop/cop/style/numeric_literals.rb +9 -9
- data/lib/rubocop/cop/style/numeric_predicate.rb +21 -21
- data/lib/rubocop/cop/style/one_line_conditional.rb +9 -4
- data/lib/rubocop/cop/style/option_hash.rb +11 -25
- data/lib/rubocop/cop/style/optional_arguments.rb +1 -2
- data/lib/rubocop/cop/style/or_assignment.rb +88 -0
- data/lib/rubocop/cop/style/parallel_assignment.rb +16 -16
- data/lib/rubocop/cop/style/parentheses_around_condition.rb +30 -13
- data/lib/rubocop/cop/style/percent_literal_delimiters.rb +25 -4
- data/lib/rubocop/cop/style/percent_q_literals.rb +29 -8
- data/lib/rubocop/cop/style/perl_backrefs.rb +8 -1
- data/lib/rubocop/cop/style/preferred_hash_methods.rb +7 -11
- data/lib/rubocop/cop/style/proc.rb +10 -2
- data/lib/rubocop/cop/style/raise_args.rb +22 -29
- data/lib/rubocop/cop/style/random_with_offset.rb +160 -0
- data/lib/rubocop/cop/style/redundant_begin.rb +16 -5
- data/lib/rubocop/cop/style/redundant_conditional.rb +96 -0
- data/lib/rubocop/cop/style/redundant_exception.rb +4 -4
- data/lib/rubocop/cop/style/redundant_freeze.rb +1 -1
- data/lib/rubocop/cop/style/redundant_parentheses.rb +14 -12
- data/lib/rubocop/cop/style/redundant_return.rb +28 -15
- data/lib/rubocop/cop/style/redundant_self.rb +35 -27
- data/lib/rubocop/cop/style/regexp_literal.rb +88 -27
- data/lib/rubocop/cop/style/rescue_modifier.rb +12 -1
- data/lib/rubocop/cop/style/rescue_standard_error.rb +122 -0
- data/lib/rubocop/cop/style/return_nil.rb +89 -0
- data/lib/rubocop/cop/style/safe_navigation.rb +100 -48
- data/lib/rubocop/cop/style/self_assignment.rb +13 -13
- data/lib/rubocop/cop/style/semicolon.rb +19 -9
- data/lib/rubocop/cop/style/send.rb +10 -1
- data/lib/rubocop/cop/style/signal_exception.rb +104 -3
- data/lib/rubocop/cop/style/single_line_block_params.rb +16 -15
- data/lib/rubocop/cop/style/single_line_methods.rb +26 -18
- data/lib/rubocop/cop/style/special_global_vars.rb +19 -14
- data/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +23 -50
- data/lib/rubocop/cop/style/stderr_puts.rb +54 -0
- data/lib/rubocop/cop/style/string_hash_keys.rb +36 -0
- data/lib/rubocop/cop/style/string_literals.rb +26 -3
- data/lib/rubocop/cop/style/string_literals_in_interpolation.rb +16 -1
- data/lib/rubocop/cop/style/string_methods.rb +19 -8
- data/lib/rubocop/cop/style/struct_inheritance.rb +3 -3
- data/lib/rubocop/cop/style/symbol_array.rb +7 -35
- data/lib/rubocop/cop/style/symbol_literal.rb +1 -1
- data/lib/rubocop/cop/style/symbol_proc.rb +11 -25
- data/lib/rubocop/cop/style/ternary_parentheses.rb +46 -51
- 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 +70 -24
- data/lib/rubocop/cop/style/trivial_accessors.rb +72 -65
- data/lib/rubocop/cop/style/unless_else.rb +16 -1
- data/lib/rubocop/cop/style/unneeded_capital_w.rb +18 -8
- data/lib/rubocop/cop/style/unneeded_interpolation.rb +15 -19
- data/lib/rubocop/cop/style/unneeded_percent_q.rb +14 -13
- data/lib/rubocop/cop/style/variable_interpolation.rb +23 -9
- data/lib/rubocop/cop/style/when_then.rb +14 -1
- data/lib/rubocop/cop/style/while_until_do.rb +27 -4
- data/lib/rubocop/cop/style/while_until_modifier.rb +26 -6
- data/lib/rubocop/cop/style/word_array.rb +9 -30
- data/lib/rubocop/cop/style/yoda_condition.rb +51 -22
- data/lib/rubocop/cop/style/zero_length_predicate.rb +44 -29
- data/lib/rubocop/cop/team.rb +16 -8
- data/lib/rubocop/cop/util.rb +43 -34
- 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 +3 -4
- data/lib/rubocop/formatter/formatter_set.rb +3 -1
- data/lib/rubocop/formatter/html_formatter.rb +1 -1
- data/lib/rubocop/formatter/json_formatter.rb +9 -3
- data/lib/rubocop/formatter/offense_count_formatter.rb +2 -0
- data/lib/rubocop/formatter/quiet_formatter.rb +13 -0
- data/lib/rubocop/formatter/simple_text_formatter.rb +3 -3
- data/lib/rubocop/formatter/tap_formatter.rb +71 -0
- data/lib/rubocop/formatter/worst_offenders_formatter.rb +2 -0
- data/lib/rubocop/node_pattern.rb +46 -29
- data/lib/rubocop/options.rb +13 -8
- data/lib/rubocop/path_util.rb +15 -3
- data/lib/rubocop/processed_source.rb +8 -9
- data/lib/rubocop/rake_task.rb +16 -23
- data/lib/rubocop/remote_config.rb +13 -1
- data/lib/rubocop/result_cache.rb +1 -0
- data/lib/rubocop/rspec/cop_helper.rb +10 -10
- data/lib/rubocop/rspec/expect_offense.rb +6 -8
- data/lib/rubocop/rspec/shared_contexts.rb +4 -8
- data/lib/rubocop/rspec/shared_examples.rb +8 -8
- data/lib/rubocop/rspec/support.rb +5 -5
- data/lib/rubocop/runner.rb +1 -1
- data/lib/rubocop/string_util.rb +2 -0
- data/lib/rubocop/token.rb +74 -0
- data/lib/rubocop/version.rb +1 -1
- metadata +118 -48
- data/lib/rubocop/cop/layout/space_inside_brackets.rb +0 -20
- data/lib/rubocop/cop/lint/invalid_character_literal.rb +0 -41
- data/lib/rubocop/cop/mixin/access_modifier_node.rb +0 -41
- data/lib/rubocop/cop/mixin/on_method_def.rb +0 -44
- data/lib/rubocop/cop/mixin/space_inside.rb +0 -76
- data/lib/rubocop/cop/style/accessor_method_name.rb +0 -45
- data/lib/rubocop/cop/style/class_and_module_camel_case.rb +0 -29
- data/lib/rubocop/cop/style/constant_name.rb +0 -29
- data/lib/rubocop/cop/style/method_name.rb +0 -34
- data/lib/rubocop/cop/style/predicate_name.rb +0 -67
- data/lib/rubocop/cop/style/variable_name.rb +0 -39
@@ -6,24 +6,20 @@ module RuboCop
|
|
6
6
|
# This cops checks if empty lines around the bodies of blocks match
|
7
7
|
# the configuration.
|
8
8
|
#
|
9
|
-
# @example
|
10
|
-
#
|
11
|
-
# # EnforcedStyle: empty_lines
|
12
|
-
#
|
9
|
+
# @example EnforcedStyle: empty_lines
|
13
10
|
# # good
|
14
11
|
#
|
15
12
|
# foo do |bar|
|
16
13
|
#
|
17
|
-
# ...
|
14
|
+
# # ...
|
18
15
|
#
|
19
16
|
# end
|
20
17
|
#
|
21
|
-
#
|
22
|
-
#
|
18
|
+
# @example EnforcedStyle: no_empty_lines (default)
|
23
19
|
# # good
|
24
20
|
#
|
25
21
|
# foo do |bar|
|
26
|
-
# ...
|
22
|
+
# # ...
|
27
23
|
# end
|
28
24
|
class EmptyLinesAroundBlockBody < Cop
|
29
25
|
include EmptyLinesAroundBody
|
@@ -6,18 +6,43 @@ module RuboCop
|
|
6
6
|
# This cops checks if empty lines around the bodies of classes match
|
7
7
|
# the configuration.
|
8
8
|
#
|
9
|
-
# @example
|
9
|
+
# @example EnforcedStyle: empty_lines
|
10
|
+
# # good
|
11
|
+
#
|
12
|
+
# class Foo
|
13
|
+
#
|
14
|
+
# def bar
|
15
|
+
# # ...
|
16
|
+
# end
|
10
17
|
#
|
11
|
-
#
|
18
|
+
# end
|
12
19
|
#
|
20
|
+
# @example EnforcedStyle: empty_lines_except_namespace
|
13
21
|
# # good
|
14
22
|
#
|
15
23
|
# class Foo
|
24
|
+
# class Bar
|
25
|
+
#
|
26
|
+
# # ...
|
27
|
+
#
|
28
|
+
# end
|
29
|
+
# end
|
30
|
+
#
|
31
|
+
# @example EnforcedStyle: empty_lines_special
|
32
|
+
# # good
|
33
|
+
# class Foo
|
34
|
+
#
|
35
|
+
# def bar; end
|
16
36
|
#
|
17
|
-
#
|
18
|
-
#
|
19
|
-
#
|
37
|
+
# end
|
38
|
+
#
|
39
|
+
# @example EnforcedStyle: no_empty_lines (default)
|
40
|
+
# # good
|
20
41
|
#
|
42
|
+
# class Foo
|
43
|
+
# def bar
|
44
|
+
# # ...
|
45
|
+
# end
|
21
46
|
# end
|
22
47
|
class EmptyLinesAroundClassBody < Cop
|
23
48
|
include EmptyLinesAroundBody
|
@@ -60,13 +60,13 @@ module RuboCop
|
|
60
60
|
# end
|
61
61
|
class EmptyLinesAroundExceptionHandlingKeywords < Cop
|
62
62
|
include EmptyLinesAroundBody
|
63
|
-
include OnMethodDef
|
64
63
|
|
65
|
-
MSG = 'Extra empty line detected
|
64
|
+
MSG = 'Extra empty line detected %<location>s the `%<keyword>s`.'.freeze
|
66
65
|
|
67
|
-
def
|
68
|
-
check_body(body)
|
66
|
+
def on_def(node)
|
67
|
+
check_body(node.body)
|
69
68
|
end
|
69
|
+
alias on_defs on_def
|
70
70
|
|
71
71
|
def on_kwbegin(node)
|
72
72
|
body, = *node
|
@@ -81,15 +81,19 @@ module RuboCop
|
|
81
81
|
line = loc.line
|
82
82
|
keyword = loc.source
|
83
83
|
# below the keyword
|
84
|
-
check_line(style, line,
|
84
|
+
check_line(style, line, message('after', keyword), &:empty?)
|
85
85
|
# above the keyword
|
86
86
|
check_line(style,
|
87
87
|
line - 2,
|
88
|
-
|
88
|
+
message('before', keyword),
|
89
89
|
&:empty?)
|
90
90
|
end
|
91
91
|
end
|
92
92
|
|
93
|
+
def message(location, keyword)
|
94
|
+
format(MSG, location: location, keyword: keyword)
|
95
|
+
end
|
96
|
+
|
93
97
|
def style
|
94
98
|
:no_empty_lines
|
95
99
|
end
|
@@ -10,25 +10,25 @@ module RuboCop
|
|
10
10
|
# # good
|
11
11
|
#
|
12
12
|
# def foo
|
13
|
-
# ...
|
13
|
+
# # ...
|
14
14
|
# end
|
15
15
|
#
|
16
16
|
# # bad
|
17
17
|
#
|
18
18
|
# def bar
|
19
19
|
#
|
20
|
-
# ...
|
20
|
+
# # ...
|
21
21
|
#
|
22
22
|
# end
|
23
23
|
class EmptyLinesAroundMethodBody < Cop
|
24
24
|
include EmptyLinesAroundBody
|
25
|
-
include OnMethodDef
|
26
25
|
|
27
26
|
KIND = 'method'.freeze
|
28
27
|
|
29
|
-
def
|
30
|
-
check(node, body)
|
28
|
+
def on_def(node)
|
29
|
+
check(node, node.body)
|
31
30
|
end
|
31
|
+
alias on_defs on_def
|
32
32
|
|
33
33
|
private
|
34
34
|
|
@@ -6,27 +6,42 @@ module RuboCop
|
|
6
6
|
# This cops checks if empty lines around the bodies of modules match
|
7
7
|
# the configuration.
|
8
8
|
#
|
9
|
-
# @example
|
10
|
-
#
|
11
|
-
# EnforcedStyle: empty_lines
|
12
|
-
#
|
9
|
+
# @example EnforcedStyle: empty_lines
|
13
10
|
# # good
|
14
11
|
#
|
15
12
|
# module Foo
|
16
13
|
#
|
17
14
|
# def bar
|
18
|
-
# ...
|
15
|
+
# # ...
|
19
16
|
# end
|
20
17
|
#
|
21
18
|
# end
|
22
19
|
#
|
23
|
-
#
|
20
|
+
# @example EnforcedStyle: empty_lines_except_namespace
|
21
|
+
# # good
|
22
|
+
#
|
23
|
+
# module Foo
|
24
|
+
# module Bar
|
25
|
+
#
|
26
|
+
# # ...
|
27
|
+
#
|
28
|
+
# end
|
29
|
+
# end
|
30
|
+
#
|
31
|
+
# @example EnforcedStyle: empty_lines_special
|
32
|
+
# # good
|
33
|
+
# module Foo
|
34
|
+
#
|
35
|
+
# def bar; end
|
36
|
+
#
|
37
|
+
# end
|
24
38
|
#
|
39
|
+
# @example EnforcedStyle: no_empty_lines (default)
|
25
40
|
# # good
|
26
41
|
#
|
27
42
|
# module Foo
|
28
43
|
# def bar
|
29
|
-
# ...
|
44
|
+
# # ...
|
30
45
|
# end
|
31
46
|
# end
|
32
47
|
class EmptyLinesAroundModuleBody < Cop
|
@@ -13,7 +13,7 @@ module RuboCop
|
|
13
13
|
def investigate(processed_source)
|
14
14
|
last_token = processed_source.tokens.last
|
15
15
|
last_line =
|
16
|
-
last_token ? last_token.
|
16
|
+
last_token ? last_token.line : processed_source.lines.length
|
17
17
|
|
18
18
|
processed_source.raw_source.each_line.with_index do |line, index|
|
19
19
|
break if index >= last_line
|
@@ -23,7 +23,7 @@ module RuboCop
|
|
23
23
|
|
24
24
|
range =
|
25
25
|
source_range(processed_source.buffer, index + 1, 0, line.length)
|
26
|
-
add_offense(nil, range, msg)
|
26
|
+
add_offense(nil, location: range, message: msg)
|
27
27
|
# Usually there will be carriage return characters on all or none
|
28
28
|
# of the lines in a file, so we report only one offense.
|
29
29
|
break
|
@@ -23,14 +23,15 @@ module RuboCop
|
|
23
23
|
include PrecedingFollowingAlignment
|
24
24
|
|
25
25
|
MSG_UNNECESSARY = 'Unnecessary spacing detected.'.freeze
|
26
|
-
MSG_UNALIGNED_ASGN = '`=` is not aligned with the
|
26
|
+
MSG_UNALIGNED_ASGN = '`=` is not aligned with the %<location>s ' \
|
27
|
+
'assignment.'.freeze
|
27
28
|
|
28
29
|
def investigate(processed_source)
|
29
30
|
return if processed_source.ast.nil?
|
30
31
|
|
31
32
|
if force_equal_sign_alignment?
|
32
33
|
@asgn_tokens = assignment_tokens
|
33
|
-
@asgn_lines = @asgn_tokens.map
|
34
|
+
@asgn_lines = @asgn_tokens.map(&:line)
|
34
35
|
# Don't attempt to correct the same = more than once
|
35
36
|
@corrected = Set.new
|
36
37
|
end
|
@@ -53,14 +54,14 @@ module RuboCop
|
|
53
54
|
private
|
54
55
|
|
55
56
|
def assignment_tokens
|
56
|
-
tokens = processed_source.tokens.select
|
57
|
+
tokens = processed_source.tokens.select(&:equal_sign?)
|
57
58
|
# we don't want to operate on equals signs which are part of an
|
58
59
|
# optarg in a method definition
|
59
60
|
# e.g.: def method(optarg = default_val); end
|
60
61
|
tokens = remove_optarg_equals(tokens, processed_source)
|
61
62
|
|
62
63
|
# Only attempt to align the first = on each line
|
63
|
-
Set.new(tokens.uniq
|
64
|
+
Set.new(tokens.uniq(&:line))
|
64
65
|
end
|
65
66
|
|
66
67
|
def check_tokens(ast, t1, t2)
|
@@ -68,8 +69,8 @@ module RuboCop
|
|
68
69
|
|
69
70
|
if force_equal_sign_alignment? &&
|
70
71
|
@asgn_tokens.include?(t2) &&
|
71
|
-
(@asgn_lines.include?(t2.
|
72
|
-
@asgn_lines.include?(t2.
|
72
|
+
(@asgn_lines.include?(t2.line - 1) ||
|
73
|
+
@asgn_lines.include?(t2.line + 1))
|
73
74
|
check_assignment(t2)
|
74
75
|
else
|
75
76
|
check_other(t1, t2, ast)
|
@@ -81,25 +82,25 @@ module RuboCop
|
|
81
82
|
message = ''
|
82
83
|
if should_aligned_with_preceding_line?(token)
|
83
84
|
assignment_line = preceding_line(token)
|
84
|
-
message = format(MSG_UNALIGNED_ASGN, 'preceding')
|
85
|
+
message = format(MSG_UNALIGNED_ASGN, location: 'preceding')
|
85
86
|
else
|
86
87
|
assignment_line = following_line(token)
|
87
|
-
message = format(MSG_UNALIGNED_ASGN, 'following')
|
88
|
+
message = format(MSG_UNALIGNED_ASGN, location: 'following')
|
88
89
|
end
|
89
90
|
return if aligned_assignment?(token.pos, assignment_line)
|
90
|
-
add_offense(token.pos, token.pos, message)
|
91
|
+
add_offense(token.pos, location: token.pos, message: message)
|
91
92
|
end
|
92
93
|
|
93
94
|
def should_aligned_with_preceding_line?(token)
|
94
|
-
@asgn_lines.include?(token.
|
95
|
+
@asgn_lines.include?(token.line - 1)
|
95
96
|
end
|
96
97
|
|
97
98
|
def preceding_line(token)
|
98
|
-
processed_source.lines[token.
|
99
|
+
processed_source.lines[token.line - 2]
|
99
100
|
end
|
100
101
|
|
101
102
|
def following_line(token)
|
102
|
-
processed_source.lines[token.
|
103
|
+
processed_source.lines[token.line]
|
103
104
|
end
|
104
105
|
|
105
106
|
def check_other(t1, t2, ast)
|
@@ -108,15 +109,15 @@ module RuboCop
|
|
108
109
|
next if ignored_range?(ast, range.begin_pos)
|
109
110
|
next if unary_plus_non_offense?(range)
|
110
111
|
|
111
|
-
add_offense(range, range, MSG_UNNECESSARY)
|
112
|
+
add_offense(range, location: range, message: MSG_UNNECESSARY)
|
112
113
|
end
|
113
114
|
end
|
114
115
|
|
115
116
|
def extra_space_range(t1, t2)
|
116
|
-
return if t1.
|
117
|
+
return if t1.line != t2.line
|
117
118
|
|
118
|
-
start_pos = t1.
|
119
|
-
end_pos = t2.
|
119
|
+
start_pos = t1.end_pos
|
120
|
+
end_pos = t2.begin_pos - 1
|
120
121
|
return if end_pos <= start_pos
|
121
122
|
|
122
123
|
return if allow_for_alignment? && aligned_tok?(t2)
|
@@ -125,7 +126,7 @@ module RuboCop
|
|
125
126
|
end
|
126
127
|
|
127
128
|
def aligned_tok?(token)
|
128
|
-
if token.
|
129
|
+
if token.comment?
|
129
130
|
aligned_comments?(token)
|
130
131
|
else
|
131
132
|
aligned_with_something?(token.pos)
|
@@ -156,7 +157,7 @@ module RuboCop
|
|
156
157
|
|
157
158
|
def aligned_comments?(token)
|
158
159
|
ix = processed_source.comments.index do |c|
|
159
|
-
c.loc.expression.begin_pos == token.
|
160
|
+
c.loc.expression.begin_pos == token.begin_pos
|
160
161
|
end
|
161
162
|
aligned_with_previous_comment?(ix) || aligned_with_next_comment?(ix)
|
162
163
|
end
|
@@ -178,13 +179,9 @@ module RuboCop
|
|
178
179
|
cop_config['ForceEqualSignAlignment']
|
179
180
|
end
|
180
181
|
|
181
|
-
def equal_sign?(token)
|
182
|
-
token.type == :tEQL || token.type == :tOP_ASGN
|
183
|
-
end
|
184
|
-
|
185
182
|
def align_equal_signs(range, corrector)
|
186
183
|
lines = contiguous_assignment_lines(range)
|
187
|
-
tokens = @asgn_tokens.select { |t| lines.include?(t.
|
184
|
+
tokens = @asgn_tokens.select { |t| lines.include?(t.line) }
|
188
185
|
|
189
186
|
columns = tokens.map { |t| align_column(t) }
|
190
187
|
align_to = columns.max
|
@@ -220,8 +217,8 @@ module RuboCop
|
|
220
217
|
def align_column(asgn_token)
|
221
218
|
# if we removed unneeded spaces from the beginning of this =,
|
222
219
|
# what column would it end from?
|
223
|
-
line = processed_source.lines[asgn_token.
|
224
|
-
leading = line[0...asgn_token.
|
220
|
+
line = processed_source.lines[asgn_token.line - 1]
|
221
|
+
leading = line[0...asgn_token.column]
|
225
222
|
spaces = leading.size - (leading =~ / *\Z/)
|
226
223
|
asgn_token.pos.last_column - spaces + 1
|
227
224
|
end
|
@@ -229,7 +226,7 @@ module RuboCop
|
|
229
226
|
def remove_optarg_equals(asgn_tokens, processed_source)
|
230
227
|
optargs = processed_source.ast.each_node(:optarg)
|
231
228
|
optarg_eql = optargs.map { |o| o.loc.operator.begin_pos }.to_set
|
232
|
-
asgn_tokens.reject { |t| optarg_eql.include?(t.
|
229
|
+
asgn_tokens.reject { |t| optarg_eql.include?(t.begin_pos) }
|
233
230
|
end
|
234
231
|
end
|
235
232
|
end
|
@@ -27,15 +27,15 @@ module RuboCop
|
|
27
27
|
# do_something
|
28
28
|
# end
|
29
29
|
class FirstMethodParameterLineBreak < Cop
|
30
|
-
include OnMethodDef
|
31
30
|
include FirstElementLineBreak
|
32
31
|
|
33
32
|
MSG = 'Add a line break before the first parameter of a ' \
|
34
33
|
'multi-line method parameter list.'.freeze
|
35
34
|
|
36
|
-
def
|
37
|
-
check_method_line_break(node,
|
35
|
+
def on_def(node)
|
36
|
+
check_method_line_break(node, node.arguments)
|
38
37
|
end
|
38
|
+
alias on_defs on_def
|
39
39
|
end
|
40
40
|
end
|
41
41
|
end
|
@@ -22,6 +22,8 @@ module RuboCop
|
|
22
22
|
include AutocorrectAlignment
|
23
23
|
include ConfigurableEnforcedStyle
|
24
24
|
|
25
|
+
MSG = 'Indent the first parameter one step more than %<base>s.'.freeze
|
26
|
+
|
25
27
|
def on_send(node)
|
26
28
|
return if !node.arguments? || node.operator_method?
|
27
29
|
|
@@ -44,7 +46,8 @@ module RuboCop
|
|
44
46
|
else
|
45
47
|
'the start of the previous line'
|
46
48
|
end
|
47
|
-
|
49
|
+
|
50
|
+
format(MSG, base: base)
|
48
51
|
end
|
49
52
|
|
50
53
|
def base_indentation(node)
|
@@ -60,8 +63,7 @@ module RuboCop
|
|
60
63
|
|
61
64
|
parent = node.parent
|
62
65
|
|
63
|
-
return false unless parent
|
64
|
-
!parent.method?(:[]=)
|
66
|
+
return false unless eligible_method_call?(parent)
|
65
67
|
return false if !parent.parenthesized? &&
|
66
68
|
style == :special_for_inner_method_call_in_parentheses
|
67
69
|
|
@@ -70,6 +72,10 @@ module RuboCop
|
|
70
72
|
node.source_range.begin_pos > parent.source_range.begin_pos
|
71
73
|
end
|
72
74
|
|
75
|
+
def_node_matcher :eligible_method_call?, <<-PATTERN
|
76
|
+
(send _ !:[]= ...)
|
77
|
+
PATTERN
|
78
|
+
|
73
79
|
def base_range(send_node, arg_node)
|
74
80
|
range_between(send_node.source_range.begin_pos,
|
75
81
|
arg_node.source_range.begin_pos)
|
@@ -19,30 +19,74 @@ module RuboCop
|
|
19
19
|
# This default style is called 'special_inside_parentheses'. Alternative
|
20
20
|
# styles are 'consistent' and 'align_brackets'. Here are examples:
|
21
21
|
#
|
22
|
-
#
|
23
|
-
#
|
24
|
-
#
|
25
|
-
#
|
26
|
-
#
|
27
|
-
# :its_like_this
|
28
|
-
# ])
|
29
|
-
# # consistent
|
30
|
-
# array = [
|
31
|
-
# :value
|
32
|
-
# ]
|
33
|
-
# and_in_a_method_call([
|
34
|
-
# :no_difference
|
35
|
-
# ])
|
36
|
-
# # align_brackets
|
37
|
-
# and_now_for_something = [
|
38
|
-
# :completely_different
|
39
|
-
# ]
|
22
|
+
# @example EnforcedStyle: special_inside_parentheses
|
23
|
+
# # The `special_inside_parentheses` style enforces that the first
|
24
|
+
# # element in an array literal where the opening bracket and first
|
25
|
+
# # element are on seprate lines is indented one step (two spaces) more
|
26
|
+
# # than the position inside the opening parenthesis.
|
40
27
|
#
|
28
|
+
# #bad
|
29
|
+
# array = [
|
30
|
+
# :value
|
31
|
+
# ]
|
32
|
+
# and_in_a_method_call([
|
33
|
+
# :no_difference
|
34
|
+
# ])
|
35
|
+
#
|
36
|
+
# #good
|
37
|
+
# array = [
|
38
|
+
# :value
|
39
|
+
# ]
|
40
|
+
# but_in_a_method_call([
|
41
|
+
# :its_like_this
|
42
|
+
# ])
|
43
|
+
#
|
44
|
+
# @example EnforcedStyle: consistent
|
45
|
+
# # The `consistent` style enforces that the first element in an array
|
46
|
+
# # literal where the opening bracket and the first element are on
|
47
|
+
# # seprate lines is indented the same as an array literal which is not
|
48
|
+
# # defined inside a method call.
|
49
|
+
#
|
50
|
+
# #bad
|
51
|
+
# # consistent
|
52
|
+
# array = [
|
53
|
+
# :value
|
54
|
+
# ]
|
55
|
+
# but_in_a_method_call([
|
56
|
+
# :its_like_this
|
57
|
+
# ])
|
58
|
+
#
|
59
|
+
# #good
|
60
|
+
# array = [
|
61
|
+
# :value
|
62
|
+
# ]
|
63
|
+
# and_in_a_method_call([
|
64
|
+
# :no_difference
|
65
|
+
# ])
|
66
|
+
#
|
67
|
+
# @example EnforcedStyle: align_brackets
|
68
|
+
# # The `align_brackets` style enforces that the opening and closing
|
69
|
+
# # brackets are indented to the same position.
|
70
|
+
#
|
71
|
+
# #bad
|
72
|
+
# # align_brackets
|
73
|
+
# and_now_for_something = [
|
74
|
+
# :completely_different
|
75
|
+
# ]
|
76
|
+
#
|
77
|
+
# #good
|
78
|
+
# # align_brackets
|
79
|
+
# and_now_for_something = [
|
80
|
+
# :completely_different
|
81
|
+
# ]
|
41
82
|
class IndentArray < Cop
|
42
83
|
include AutocorrectAlignment
|
43
84
|
include ConfigurableEnforcedStyle
|
44
85
|
include ArrayHashIndentation
|
45
86
|
|
87
|
+
MSG = 'Use %<configured_indentation_width>d spaces for indentation ' \
|
88
|
+
'in an array, relative to %<base_description>s.'.freeze
|
89
|
+
|
46
90
|
def on_array(node)
|
47
91
|
check(node, nil) if node.loc.begin
|
48
92
|
end
|
@@ -90,7 +134,7 @@ module RuboCop
|
|
90
134
|
'Indent the right bracket the same as the start of the line' \
|
91
135
|
' where the left bracket is.'
|
92
136
|
end
|
93
|
-
add_offense(right_bracket, right_bracket, msg)
|
137
|
+
add_offense(right_bracket, location: right_bracket, message: msg)
|
94
138
|
end
|
95
139
|
|
96
140
|
# Returns the description of what the correct indentation is based on.
|
@@ -105,8 +149,11 @@ module RuboCop
|
|
105
149
|
end
|
106
150
|
|
107
151
|
def message(base_description)
|
108
|
-
format(
|
109
|
-
|
152
|
+
format(
|
153
|
+
MSG,
|
154
|
+
configured_indentation_width: configured_indentation_width,
|
155
|
+
base_description: base_description
|
156
|
+
)
|
110
157
|
end
|
111
158
|
end
|
112
159
|
end
|