rubocop 0.35.1 → 0.36.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of rubocop might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGELOG.md +164 -0
- data/LICENSE.txt +1 -1
- data/README.md +72 -21
- data/bin/rubocop +1 -0
- data/config/default.yml +167 -18
- data/config/disabled.yml +19 -6
- data/config/enabled.yml +159 -14
- data/lib/rubocop.rb +67 -26
- data/lib/rubocop/ast_node.rb +488 -14
- data/lib/rubocop/ast_node/builder.rb +24 -0
- data/lib/rubocop/ast_node/sexp.rb +13 -0
- data/lib/rubocop/cached_data.rb +58 -0
- data/lib/rubocop/cli.rb +47 -10
- data/lib/rubocop/comment_config.rb +9 -2
- data/lib/rubocop/config.rb +99 -31
- data/lib/rubocop/config_loader.rb +23 -14
- data/lib/rubocop/config_store.rb +1 -0
- data/lib/rubocop/cop/autocorrect_logic.rb +2 -1
- data/lib/rubocop/cop/commissioner.rb +3 -5
- data/lib/rubocop/cop/cop.rb +23 -17
- data/lib/rubocop/cop/corrector.rb +25 -0
- data/lib/rubocop/cop/force.rb +1 -0
- data/lib/rubocop/cop/ignored_node.rb +3 -2
- data/lib/rubocop/cop/lint/ambiguous_operator.rb +2 -1
- data/lib/rubocop/cop/lint/ambiguous_regexp_literal.rb +2 -1
- data/lib/rubocop/cop/lint/assignment_in_condition.rb +4 -3
- data/lib/rubocop/cop/lint/block_alignment.rb +29 -91
- data/lib/rubocop/cop/lint/circular_argument_reference.rb +2 -1
- data/lib/rubocop/cop/lint/condition_position.rb +2 -1
- data/lib/rubocop/cop/lint/debugger.rb +29 -12
- data/lib/rubocop/cop/lint/def_end_alignment.rb +16 -18
- data/lib/rubocop/cop/lint/deprecated_class_methods.rb +6 -6
- data/lib/rubocop/cop/lint/duplicate_methods.rb +98 -74
- data/lib/rubocop/cop/lint/duplicated_key.rb +3 -2
- data/lib/rubocop/cop/lint/each_with_object_argument.rb +3 -2
- data/lib/rubocop/cop/lint/else_layout.rb +2 -1
- data/lib/rubocop/cop/lint/empty_ensure.rb +2 -1
- data/lib/rubocop/cop/lint/empty_interpolation.rb +2 -1
- data/lib/rubocop/cop/lint/end_alignment.rb +77 -39
- data/lib/rubocop/cop/lint/end_in_method.rb +2 -1
- data/lib/rubocop/cop/lint/ensure_return.rb +2 -1
- data/lib/rubocop/cop/lint/eval.rb +2 -1
- data/lib/rubocop/cop/lint/float_out_of_range.rb +31 -0
- data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +14 -30
- data/lib/rubocop/cop/lint/handle_exceptions.rb +2 -1
- data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +85 -0
- data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +120 -0
- data/lib/rubocop/cop/lint/invalid_character_literal.rb +3 -1
- data/lib/rubocop/cop/lint/literal_in_condition.rb +6 -9
- data/lib/rubocop/cop/lint/literal_in_interpolation.rb +6 -9
- data/lib/rubocop/cop/lint/loop.rb +2 -1
- data/lib/rubocop/cop/lint/nested_method_definition.rb +19 -3
- data/lib/rubocop/cop/lint/next_without_accumulator.rb +38 -0
- data/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +5 -8
- data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +8 -6
- data/lib/rubocop/cop/lint/rand_one.rb +36 -0
- data/lib/rubocop/cop/lint/require_parentheses.rb +6 -5
- data/lib/rubocop/cop/lint/rescue_exception.rb +3 -2
- data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +2 -1
- data/lib/rubocop/cop/lint/string_conversion_in_interpolation.rb +6 -4
- data/lib/rubocop/cop/lint/syntax.rb +9 -5
- data/lib/rubocop/cop/lint/underscore_prefixed_variable_name.rb +3 -2
- data/lib/rubocop/cop/lint/unneeded_disable.rb +121 -18
- data/lib/rubocop/cop/lint/unreachable_code.rb +5 -4
- data/lib/rubocop/cop/lint/unused_block_argument.rb +9 -7
- data/lib/rubocop/cop/lint/unused_method_argument.rb +2 -1
- data/lib/rubocop/cop/lint/useless_access_modifier.rb +56 -29
- data/lib/rubocop/cop/lint/useless_assignment.rb +4 -16
- data/lib/rubocop/cop/lint/useless_comparison.rb +3 -2
- data/lib/rubocop/cop/lint/useless_else_without_rescue.rb +2 -1
- data/lib/rubocop/cop/lint/useless_setter_call.rb +14 -20
- data/lib/rubocop/cop/lint/void.rb +10 -11
- data/lib/rubocop/cop/metrics/abc_size.rb +3 -1
- data/lib/rubocop/cop/metrics/block_nesting.rb +2 -1
- data/lib/rubocop/cop/metrics/class_length.rb +1 -0
- data/lib/rubocop/cop/metrics/cyclomatic_complexity.rb +4 -2
- data/lib/rubocop/cop/metrics/line_length.rb +35 -13
- data/lib/rubocop/cop/metrics/method_length.rb +2 -1
- data/lib/rubocop/cop/metrics/module_length.rb +1 -0
- data/lib/rubocop/cop/metrics/parameter_lists.rb +2 -1
- data/lib/rubocop/cop/metrics/perceived_complexity.rb +4 -2
- data/lib/rubocop/cop/mixin/access_modifier_node.rb +3 -10
- data/lib/rubocop/cop/mixin/annotation_comment.rb +1 -0
- data/lib/rubocop/cop/mixin/array_hash_indentation.rb +80 -0
- data/lib/rubocop/cop/mixin/array_syntax.rb +2 -1
- data/lib/rubocop/cop/mixin/autocorrect_alignment.rb +14 -20
- data/lib/rubocop/cop/mixin/autocorrect_unless_changing_ast.rb +5 -4
- data/lib/rubocop/cop/mixin/check_assignment.rb +20 -15
- data/lib/rubocop/cop/mixin/classish_length.rb +1 -0
- data/lib/rubocop/cop/mixin/code_length.rb +1 -0
- data/lib/rubocop/cop/mixin/configurable_enforced_style.rb +17 -15
- data/lib/rubocop/cop/mixin/configurable_max.rb +1 -0
- data/lib/rubocop/cop/mixin/configurable_naming.rb +4 -0
- data/lib/rubocop/cop/mixin/empty_lines_around_body.rb +9 -4
- data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +24 -16
- data/lib/rubocop/cop/mixin/first_element_line_break.rb +3 -2
- data/lib/rubocop/cop/mixin/hash_node.rb +15 -0
- data/lib/rubocop/cop/mixin/if_node.rb +1 -0
- data/lib/rubocop/cop/mixin/method_complexity.rb +1 -0
- data/lib/rubocop/cop/mixin/method_preference.rb +1 -0
- data/lib/rubocop/cop/mixin/min_body_length.rb +1 -0
- data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +177 -0
- data/lib/rubocop/cop/mixin/negative_conditional.rb +1 -0
- data/lib/rubocop/cop/mixin/on_method_def.rb +6 -5
- data/lib/rubocop/cop/mixin/on_normal_if_unless.rb +1 -0
- data/lib/rubocop/cop/mixin/parentheses.rb +22 -0
- data/lib/rubocop/cop/mixin/parser_diagnostic.rb +1 -0
- data/lib/rubocop/cop/mixin/percent_literal.rb +1 -0
- data/lib/rubocop/cop/mixin/preceding_following_alignment.rb +79 -0
- data/lib/rubocop/cop/mixin/safe_assignment.rb +1 -0
- data/lib/rubocop/cop/mixin/space_after_punctuation.rb +2 -1
- data/lib/rubocop/cop/mixin/space_before_punctuation.rb +2 -1
- data/lib/rubocop/cop/mixin/space_inside.rb +2 -1
- data/lib/rubocop/cop/mixin/statement_modifier.rb +6 -5
- data/lib/rubocop/cop/mixin/string_help.rb +2 -9
- data/lib/rubocop/cop/mixin/string_literals_help.rb +13 -7
- data/lib/rubocop/cop/mixin/surrounding_space.rb +3 -2
- data/lib/rubocop/cop/mixin/trailing_comma.rb +134 -0
- data/lib/rubocop/cop/mixin/unused_argument.rb +1 -0
- data/lib/rubocop/cop/offense.rb +19 -14
- data/lib/rubocop/cop/performance/case_when_splat.rb +8 -8
- data/lib/rubocop/cop/performance/casecmp.rb +54 -0
- data/lib/rubocop/cop/performance/count.rb +10 -9
- data/lib/rubocop/cop/performance/detect.rb +6 -5
- data/lib/rubocop/cop/performance/double_start_end_with.rb +65 -0
- data/lib/rubocop/cop/performance/end_with.rb +55 -0
- data/lib/rubocop/cop/performance/fixed_size.rb +1 -0
- data/lib/rubocop/cop/performance/flat_map.rb +9 -8
- data/lib/rubocop/cop/performance/hash_each.rb +86 -0
- data/lib/rubocop/cop/performance/lstrip_rstrip.rb +44 -0
- data/lib/rubocop/cop/performance/range_include.rb +40 -0
- data/lib/rubocop/cop/performance/redundant_block_call.rb +57 -0
- data/lib/rubocop/cop/performance/redundant_match.rb +51 -0
- data/lib/rubocop/cop/performance/redundant_merge.rb +85 -0
- data/lib/rubocop/cop/performance/redundant_sort_by.rb +45 -0
- data/lib/rubocop/cop/performance/reverse_each.rb +3 -2
- data/lib/rubocop/cop/performance/sample.rb +6 -5
- data/lib/rubocop/cop/performance/size.rb +2 -1
- data/lib/rubocop/cop/performance/start_with.rb +58 -0
- data/lib/rubocop/cop/performance/string_replacement.rb +18 -23
- data/lib/rubocop/cop/performance/times_map.rb +49 -0
- data/lib/rubocop/cop/rails/action_filter.rb +4 -3
- data/lib/rubocop/cop/rails/date.rb +5 -4
- data/lib/rubocop/cop/rails/delegate.rb +3 -2
- data/lib/rubocop/cop/rails/find_by.rb +20 -14
- data/lib/rubocop/cop/rails/find_each.rb +23 -2
- data/lib/rubocop/cop/rails/has_and_belongs_to_many.rb +3 -2
- data/lib/rubocop/cop/rails/output.rb +4 -2
- data/lib/rubocop/cop/rails/pluralization_grammar.rb +3 -2
- data/lib/rubocop/cop/rails/read_write_attribute.rb +5 -7
- data/lib/rubocop/cop/rails/scope_args.rb +3 -2
- data/lib/rubocop/cop/rails/time_zone.rb +14 -10
- data/lib/rubocop/cop/rails/validation.rb +4 -3
- data/lib/rubocop/cop/severity.rb +8 -7
- data/lib/rubocop/cop/style/access_modifier_indentation.rb +5 -4
- data/lib/rubocop/cop/style/accessor_method_name.rb +1 -0
- data/lib/rubocop/cop/style/alias.rb +84 -24
- data/lib/rubocop/cop/style/align_array.rb +2 -1
- data/lib/rubocop/cop/style/align_hash.rb +13 -14
- data/lib/rubocop/cop/style/align_parameters.rb +3 -2
- data/lib/rubocop/cop/style/and_or.rb +9 -7
- data/lib/rubocop/cop/style/array_join.rb +5 -5
- data/lib/rubocop/cop/style/ascii_comments.rb +2 -1
- data/lib/rubocop/cop/style/ascii_identifiers.rb +2 -1
- data/lib/rubocop/cop/style/attr.rb +30 -5
- data/lib/rubocop/cop/style/auto_resource_cleanup.rb +3 -3
- data/lib/rubocop/cop/style/bare_percent_literals.rb +2 -1
- data/lib/rubocop/cop/style/begin_block.rb +2 -1
- data/lib/rubocop/cop/style/block_comments.rb +2 -1
- data/lib/rubocop/cop/style/block_delimiters.rb +10 -9
- data/lib/rubocop/cop/style/block_end_newline.rb +3 -2
- data/lib/rubocop/cop/style/braces_around_hash_parameters.rb +9 -8
- data/lib/rubocop/cop/style/case_equality.rb +2 -1
- data/lib/rubocop/cop/style/case_indentation.rb +2 -1
- data/lib/rubocop/cop/style/character_literal.rb +11 -7
- data/lib/rubocop/cop/style/class_and_module_camel_case.rb +2 -1
- data/lib/rubocop/cop/style/class_and_module_children.rb +3 -2
- data/lib/rubocop/cop/style/class_check.rb +2 -1
- data/lib/rubocop/cop/style/class_methods.rb +2 -1
- data/lib/rubocop/cop/style/class_vars.rb +2 -1
- data/lib/rubocop/cop/style/closing_parenthesis_indentation.rb +3 -2
- data/lib/rubocop/cop/style/collection_methods.rb +2 -1
- data/lib/rubocop/cop/style/colon_method_call.rb +3 -2
- data/lib/rubocop/cop/style/command_literal.rb +8 -7
- data/lib/rubocop/cop/style/comment_annotation.rb +3 -2
- data/lib/rubocop/cop/style/comment_indentation.rb +4 -6
- data/lib/rubocop/cop/style/conditional_assignment.rb +362 -0
- data/lib/rubocop/cop/style/constant_name.rb +2 -1
- data/lib/rubocop/cop/style/copyright.rb +7 -6
- data/lib/rubocop/cop/style/def_with_parentheses.rb +2 -1
- data/lib/rubocop/cop/style/deprecated_hash_methods.rb +3 -2
- data/lib/rubocop/cop/style/documentation.rb +7 -11
- data/lib/rubocop/cop/style/dot_position.rb +3 -2
- data/lib/rubocop/cop/style/double_negation.rb +2 -1
- data/lib/rubocop/cop/style/each_with_object.rb +4 -3
- data/lib/rubocop/cop/style/else_alignment.rb +3 -2
- data/lib/rubocop/cop/style/empty_else.rb +4 -3
- data/lib/rubocop/cop/style/empty_line_between_defs.rb +2 -1
- data/lib/rubocop/cop/style/empty_lines.rb +10 -4
- data/lib/rubocop/cop/style/empty_lines_around_access_modifier.rb +13 -5
- data/lib/rubocop/cop/style/empty_lines_around_block_body.rb +7 -3
- data/lib/rubocop/cop/style/empty_lines_around_class_body.rb +6 -3
- data/lib/rubocop/cop/style/empty_lines_around_method_body.rb +4 -3
- data/lib/rubocop/cop/style/empty_lines_around_module_body.rb +4 -2
- data/lib/rubocop/cop/style/empty_literal.rb +20 -5
- data/lib/rubocop/cop/style/encoding.rb +8 -11
- data/lib/rubocop/cop/style/end_block.rb +3 -1
- data/lib/rubocop/cop/style/end_of_line.rb +2 -1
- data/lib/rubocop/cop/style/even_odd.rb +4 -3
- data/lib/rubocop/cop/style/extra_spacing.rb +110 -74
- data/lib/rubocop/cop/style/file_name.rb +103 -6
- data/lib/rubocop/cop/style/first_array_element_line_break.rb +3 -2
- data/lib/rubocop/cop/style/first_hash_element_line_break.rb +5 -6
- data/lib/rubocop/cop/style/first_method_argument_line_break.rb +14 -1
- data/lib/rubocop/cop/style/first_method_parameter_line_break.rb +2 -1
- data/lib/rubocop/cop/style/first_parameter_indentation.rb +6 -4
- data/lib/rubocop/cop/style/flip_flop.rb +2 -1
- data/lib/rubocop/cop/style/for.rb +2 -1
- data/lib/rubocop/cop/style/format_string.rb +1 -0
- data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +89 -0
- data/lib/rubocop/cop/style/global_vars.rb +2 -1
- data/lib/rubocop/cop/style/guard_clause.rb +63 -11
- data/lib/rubocop/cop/style/hash_syntax.rb +10 -10
- data/lib/rubocop/cop/style/identical_conditional_branches.rb +93 -0
- data/lib/rubocop/cop/style/if_inside_else.rb +49 -0
- data/lib/rubocop/cop/style/if_unless_modifier.rb +6 -5
- data/lib/rubocop/cop/style/if_with_semicolon.rb +2 -1
- data/lib/rubocop/cop/style/indent_array.rb +89 -38
- data/lib/rubocop/cop/style/indent_assignment.rb +43 -0
- data/lib/rubocop/cop/style/indent_hash.rb +16 -77
- data/lib/rubocop/cop/style/indentation_consistency.rb +2 -1
- data/lib/rubocop/cop/style/indentation_width.rb +11 -11
- data/lib/rubocop/cop/style/infinite_loop.rb +5 -9
- data/lib/rubocop/cop/style/initial_indentation.rb +2 -1
- data/lib/rubocop/cop/style/inline_comment.rb +2 -1
- data/lib/rubocop/cop/style/lambda.rb +14 -11
- data/lib/rubocop/cop/style/lambda_call.rb +4 -4
- data/lib/rubocop/cop/style/leading_comment_space.rb +2 -1
- data/lib/rubocop/cop/style/line_end_concatenation.rb +3 -1
- data/lib/rubocop/cop/style/method_call_parentheses.rb +9 -1
- data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +3 -2
- data/lib/rubocop/cop/style/method_def_parentheses.rb +4 -4
- data/lib/rubocop/cop/style/method_name.rb +1 -0
- data/lib/rubocop/cop/style/missing_else.rb +5 -3
- data/lib/rubocop/cop/style/module_function.rb +2 -1
- data/lib/rubocop/cop/style/multiline_array_brace_layout.rb +95 -0
- data/lib/rubocop/cop/style/multiline_assignment_layout.rb +91 -0
- data/lib/rubocop/cop/style/multiline_block_chain.rb +3 -2
- data/lib/rubocop/cop/style/multiline_block_layout.rb +11 -9
- data/lib/rubocop/cop/style/multiline_if_then.rb +1 -0
- data/lib/rubocop/cop/style/multiline_method_call_indentation.rb +137 -0
- data/lib/rubocop/cop/style/multiline_operation_indentation.rb +25 -135
- data/lib/rubocop/cop/style/multiline_ternary_operator.rb +2 -1
- data/lib/rubocop/cop/style/mutable_constant.rb +4 -5
- data/lib/rubocop/cop/style/negated_if.rb +3 -3
- data/lib/rubocop/cop/style/negated_while.rb +3 -3
- data/lib/rubocop/cop/style/nested_modifier.rb +6 -5
- data/lib/rubocop/cop/style/nested_parenthesized_calls.rb +48 -0
- data/lib/rubocop/cop/style/nested_ternary_operator.rb +2 -1
- data/lib/rubocop/cop/style/next.rb +79 -15
- data/lib/rubocop/cop/style/nil_comparison.rb +5 -5
- data/lib/rubocop/cop/style/non_nil_check.rb +5 -5
- data/lib/rubocop/cop/style/not.rb +5 -9
- data/lib/rubocop/cop/style/numeric_literals.rb +5 -4
- data/lib/rubocop/cop/style/one_line_conditional.rb +3 -2
- data/lib/rubocop/cop/style/op_method.rb +7 -4
- data/lib/rubocop/cop/style/option_hash.rb +13 -7
- data/lib/rubocop/cop/style/optional_arguments.rb +3 -2
- data/lib/rubocop/cop/style/parallel_assignment.rb +40 -16
- data/lib/rubocop/cop/style/parentheses_around_condition.rb +3 -16
- data/lib/rubocop/cop/style/percent_literal_delimiters.rb +3 -2
- data/lib/rubocop/cop/style/percent_q_literals.rb +3 -6
- data/lib/rubocop/cop/style/perl_backrefs.rb +4 -3
- data/lib/rubocop/cop/style/predicate_name.rb +1 -0
- data/lib/rubocop/cop/style/proc.rb +3 -2
- data/lib/rubocop/cop/style/raise_args.rb +2 -1
- data/lib/rubocop/cop/style/redundant_begin.rb +2 -1
- data/lib/rubocop/cop/style/redundant_exception.rb +5 -5
- data/lib/rubocop/cop/style/redundant_freeze.rb +5 -4
- data/lib/rubocop/cop/style/redundant_parentheses.rb +80 -0
- data/lib/rubocop/cop/style/redundant_return.rb +5 -4
- data/lib/rubocop/cop/style/redundant_self.rb +7 -8
- data/lib/rubocop/cop/style/regexp_literal.rb +9 -8
- data/lib/rubocop/cop/style/rescue_ensure_alignment.rb +3 -2
- data/lib/rubocop/cop/style/rescue_modifier.rb +11 -9
- data/lib/rubocop/cop/style/self_assignment.rb +4 -5
- data/lib/rubocop/cop/style/semicolon.rb +3 -2
- data/lib/rubocop/cop/style/send.rb +3 -1
- data/lib/rubocop/cop/style/signal_exception.rb +5 -3
- data/lib/rubocop/cop/style/single_line_block_params.rb +2 -1
- data/lib/rubocop/cop/style/single_line_methods.rb +7 -7
- data/lib/rubocop/cop/style/space_after_colon.rb +2 -1
- data/lib/rubocop/cop/style/space_after_comma.rb +1 -0
- data/lib/rubocop/cop/style/space_after_control_keyword.rb +5 -5
- data/lib/rubocop/cop/style/space_after_method_name.rb +3 -2
- data/lib/rubocop/cop/style/space_after_not.rb +4 -3
- data/lib/rubocop/cop/style/space_after_semicolon.rb +1 -0
- data/lib/rubocop/cop/style/space_around_block_parameters.rb +8 -7
- data/lib/rubocop/cop/style/space_around_equals_in_parameter_default.rb +1 -0
- data/lib/rubocop/cop/style/space_around_operators.rb +72 -32
- data/lib/rubocop/cop/style/space_before_block_braces.rb +2 -1
- data/lib/rubocop/cop/style/space_before_comma.rb +1 -0
- data/lib/rubocop/cop/style/space_before_comment.rb +2 -1
- data/lib/rubocop/cop/style/{single_space_before_first_arg.rb → space_before_first_arg.rb} +13 -4
- data/lib/rubocop/cop/style/space_before_modifier_keyword.rb +4 -3
- data/lib/rubocop/cop/style/space_before_semicolon.rb +1 -0
- data/lib/rubocop/cop/style/space_inside_block_braces.rb +3 -2
- data/lib/rubocop/cop/style/space_inside_brackets.rb +1 -0
- data/lib/rubocop/cop/style/space_inside_hash_literal_braces.rb +4 -1
- data/lib/rubocop/cop/style/space_inside_parens.rb +1 -0
- data/lib/rubocop/cop/style/space_inside_range_literal.rb +5 -4
- data/lib/rubocop/cop/style/space_inside_string_interpolation.rb +8 -17
- data/lib/rubocop/cop/style/special_global_vars.rb +97 -52
- data/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +16 -9
- data/lib/rubocop/cop/style/string_literals.rb +41 -1
- data/lib/rubocop/cop/style/string_literals_in_interpolation.rb +2 -1
- data/lib/rubocop/cop/style/string_methods.rb +2 -1
- data/lib/rubocop/cop/style/struct_inheritance.rb +3 -2
- data/lib/rubocop/cop/style/symbol_array.rb +74 -7
- data/lib/rubocop/cop/style/symbol_literal.rb +4 -7
- data/lib/rubocop/cop/style/symbol_proc.rb +11 -7
- data/lib/rubocop/cop/style/tab.rb +25 -2
- data/lib/rubocop/cop/style/trailing_blank_lines.rb +1 -2
- data/lib/rubocop/cop/style/trailing_comma_in_arguments.rb +45 -0
- data/lib/rubocop/cop/style/trailing_comma_in_literal.rb +56 -0
- data/lib/rubocop/cop/style/trailing_underscore_variable.rb +8 -7
- data/lib/rubocop/cop/style/trailing_whitespace.rb +2 -1
- data/lib/rubocop/cop/style/trivial_accessors.rb +18 -9
- data/lib/rubocop/cop/style/unless_else.rb +2 -1
- data/lib/rubocop/cop/style/unneeded_capital_w.rb +4 -3
- data/lib/rubocop/cop/style/unneeded_interpolation.rb +87 -0
- data/lib/rubocop/cop/style/unneeded_percent_q.rb +23 -7
- data/lib/rubocop/cop/style/variable_interpolation.rb +8 -6
- data/lib/rubocop/cop/style/variable_name.rb +1 -0
- data/lib/rubocop/cop/style/when_then.rb +2 -1
- data/lib/rubocop/cop/style/while_until_do.rb +3 -2
- data/lib/rubocop/cop/style/while_until_modifier.rb +3 -4
- data/lib/rubocop/cop/style/word_array.rb +74 -51
- data/lib/rubocop/cop/team.rb +21 -15
- data/lib/rubocop/cop/util.rb +102 -69
- data/lib/rubocop/cop/variable_force.rb +2 -1
- data/lib/rubocop/cop/variable_force/assignment.rb +2 -1
- data/lib/rubocop/cop/variable_force/locatable.rb +1 -0
- data/lib/rubocop/cop/variable_force/reference.rb +1 -0
- data/lib/rubocop/cop/variable_force/scope.rb +2 -1
- data/lib/rubocop/cop/variable_force/variable.rb +2 -1
- data/lib/rubocop/cop/variable_force/variable_table.rb +2 -1
- data/lib/rubocop/error.rb +12 -0
- data/lib/rubocop/formatter/base_formatter.rb +10 -1
- data/lib/rubocop/formatter/clang_style_formatter.rb +1 -0
- data/lib/rubocop/formatter/colorizable.rb +6 -1
- data/lib/rubocop/formatter/disabled_config_formatter.rb +29 -15
- data/lib/rubocop/formatter/disabled_lines_formatter.rb +3 -1
- data/lib/rubocop/formatter/emacs_style_formatter.rb +7 -3
- data/lib/rubocop/formatter/file_list_formatter.rb +1 -0
- data/lib/rubocop/formatter/formatter_set.rb +10 -19
- data/lib/rubocop/formatter/fuubar_style_formatter.rb +2 -1
- data/lib/rubocop/formatter/html_formatter.rb +15 -14
- data/lib/rubocop/formatter/json_formatter.rb +2 -1
- data/lib/rubocop/formatter/offense_count_formatter.rb +1 -0
- data/lib/rubocop/formatter/progress_formatter.rb +3 -3
- data/lib/rubocop/formatter/simple_text_formatter.rb +50 -17
- data/lib/rubocop/formatter/text_util.rb +8 -10
- data/lib/rubocop/formatter/worst_offenders_formatter.rb +61 -0
- data/lib/rubocop/name_similarity.rb +22 -0
- data/lib/rubocop/node_pattern.rb +126 -35
- data/lib/rubocop/options.rb +28 -19
- data/lib/rubocop/path_util.rb +1 -0
- data/lib/rubocop/processed_source.rb +41 -16
- data/lib/rubocop/rake_task.rb +6 -9
- data/lib/rubocop/remote_config.rb +1 -0
- data/lib/rubocop/result_cache.rb +60 -43
- data/lib/rubocop/runner.rb +48 -45
- data/lib/rubocop/string_util.rb +1 -0
- data/lib/rubocop/target_finder.rb +2 -1
- data/lib/rubocop/token.rb +1 -0
- data/lib/rubocop/version.rb +3 -2
- data/lib/rubocop/warning.rb +1 -0
- data/relnotes/v0.36.0.md +306 -0
- data/rubocop.gemspec +3 -9
- metadata +48 -92
- data/lib/rubocop/cop/lint/space_before_first_arg.rb +0 -44
- data/lib/rubocop/cop/rails/default_scope.rb +0 -33
- data/lib/rubocop/cop/style/trailing_comma.rb +0 -182
@@ -1,4 +1,5 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
+
# frozen_string_literal: true
|
2
3
|
|
3
4
|
module RuboCop
|
4
5
|
module Cop
|
@@ -14,13 +15,13 @@ module RuboCop
|
|
14
15
|
class RedundantFreeze < Cop
|
15
16
|
MSG = 'Freezing immutable objects is pointless.'.freeze
|
16
17
|
|
17
|
-
TARGET_NODES = [:int, :float, :sym].freeze
|
18
|
-
|
19
18
|
def on_send(node)
|
20
19
|
receiver, method_name, *args = *node
|
21
20
|
|
22
|
-
return unless receiver &&
|
23
|
-
|
21
|
+
return unless receiver &&
|
22
|
+
method_name == :freeze &&
|
23
|
+
args.empty? &&
|
24
|
+
receiver.immutable_literal?
|
24
25
|
|
25
26
|
add_offense(node, :expression)
|
26
27
|
end
|
@@ -0,0 +1,80 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
module RuboCop
|
5
|
+
module Cop
|
6
|
+
module Style
|
7
|
+
# This cop checks for redundant parentheses.
|
8
|
+
#
|
9
|
+
# @example
|
10
|
+
#
|
11
|
+
# # bad
|
12
|
+
# (x) if ((y.z).nil?)
|
13
|
+
#
|
14
|
+
# # good
|
15
|
+
# x if y.z.nil?
|
16
|
+
#
|
17
|
+
class RedundantParentheses < Cop
|
18
|
+
include Parentheses
|
19
|
+
|
20
|
+
ALLOWED_LITERALS = [:irange, :erange].freeze
|
21
|
+
|
22
|
+
def_node_matcher :square_brackets?, '(send (send _recv _msg) :[] ...)'
|
23
|
+
def_node_matcher :range_end?, '^^{irange erange}'
|
24
|
+
def_node_matcher :method_node_and_args, '$(send _recv _msg $...)'
|
25
|
+
|
26
|
+
def on_begin(node)
|
27
|
+
return unless parentheses?(node)
|
28
|
+
|
29
|
+
child_node = node.children.first
|
30
|
+
return if keyword_ancestor?(node) && parens_required?(node)
|
31
|
+
|
32
|
+
if keyword_with_redundant_parentheses?(child_node)
|
33
|
+
return offense(node, 'a keyword')
|
34
|
+
end
|
35
|
+
return offense(node, 'a literal') if disallowed_literal?(child_node)
|
36
|
+
return offense(node, 'a variable') if child_node.variable?
|
37
|
+
return offense(node, 'a constant') if child_node.const_type?
|
38
|
+
return unless method_call_with_redundant_parentheses?(child_node)
|
39
|
+
|
40
|
+
offense(node, 'a method call')
|
41
|
+
end
|
42
|
+
|
43
|
+
def offense(node, msg)
|
44
|
+
add_offense(node, :expression, "Don't use parentheses around #{msg}.")
|
45
|
+
end
|
46
|
+
|
47
|
+
def keyword_ancestor?(node)
|
48
|
+
node.ancestors.first && node.ancestors.first.keyword?
|
49
|
+
end
|
50
|
+
|
51
|
+
def disallowed_literal?(node)
|
52
|
+
node.literal? && !ALLOWED_LITERALS.include?(node.type)
|
53
|
+
end
|
54
|
+
|
55
|
+
def keyword_with_redundant_parentheses?(node)
|
56
|
+
return false unless node.keyword?
|
57
|
+
return true if node.special_keyword?
|
58
|
+
|
59
|
+
args = *node
|
60
|
+
|
61
|
+
if args.size == 1 && args.first && args.first.begin_type?
|
62
|
+
parentheses?(args.first)
|
63
|
+
else
|
64
|
+
args.empty? || parentheses?(node)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def method_call_with_redundant_parentheses?(node)
|
69
|
+
return false unless node.send_type?
|
70
|
+
return false if node.keyword_not?
|
71
|
+
return false if range_end?(node)
|
72
|
+
|
73
|
+
send_node, args = method_node_and_args(node)
|
74
|
+
|
75
|
+
args.empty? || parentheses?(send_node) || square_brackets?(send_node)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
+
# frozen_string_literal: true
|
2
3
|
|
3
4
|
module RuboCop
|
4
5
|
module Cop
|
@@ -23,14 +24,14 @@ module RuboCop
|
|
23
24
|
class RedundantReturn < Cop
|
24
25
|
include OnMethodDef
|
25
26
|
|
26
|
-
MSG = 'Redundant `return` detected.'
|
27
|
+
MSG = 'Redundant `return` detected.'.freeze
|
27
28
|
|
28
29
|
private
|
29
30
|
|
30
31
|
def autocorrect(node)
|
31
32
|
lambda do |corrector|
|
32
33
|
unless arguments?(node.children)
|
33
|
-
corrector.replace(node.
|
34
|
+
corrector.replace(node.source_range, 'nil')
|
34
35
|
next
|
35
36
|
end
|
36
37
|
|
@@ -50,13 +51,13 @@ module RuboCop
|
|
50
51
|
end
|
51
52
|
|
52
53
|
def add_brackets(corrector, node)
|
53
|
-
kids = node.children.map
|
54
|
+
kids = node.children.map(&:source_range)
|
54
55
|
corrector.insert_before(kids.first, '[')
|
55
56
|
corrector.insert_after(kids.last, ']')
|
56
57
|
end
|
57
58
|
|
58
59
|
def add_braces(corrector, node)
|
59
|
-
kids = node.children.map
|
60
|
+
kids = node.children.map(&:source_range)
|
60
61
|
corrector.insert_before(kids.first, '{')
|
61
62
|
corrector.insert_after(kids.last, '}')
|
62
63
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
+
# frozen_string_literal: true
|
2
3
|
|
3
4
|
module RuboCop
|
4
5
|
module Cop
|
@@ -43,7 +44,7 @@ module RuboCop
|
|
43
44
|
# We allow uses of `self` with operators because it would be awkward
|
44
45
|
# otherwise.
|
45
46
|
class RedundantSelf < Cop
|
46
|
-
MSG = 'Redundant `self` detected.'
|
47
|
+
MSG = 'Redundant `self` detected.'.freeze
|
47
48
|
|
48
49
|
def initialize(config = nil, options = nil)
|
49
50
|
super
|
@@ -58,7 +59,7 @@ module RuboCop
|
|
58
59
|
allow_self(lhs)
|
59
60
|
end
|
60
61
|
|
61
|
-
|
62
|
+
alias on_and_asgn on_or_asgn
|
62
63
|
|
63
64
|
def on_op_asgn(node)
|
64
65
|
lhs, _op, _rhs = *node
|
@@ -93,8 +94,10 @@ module RuboCop
|
|
93
94
|
def on_send(node)
|
94
95
|
receiver, method_name, *_args = *node
|
95
96
|
return unless receiver && receiver.type == :self
|
96
|
-
return if operator?(method_name) ||
|
97
|
+
return if operator?(method_name) ||
|
98
|
+
keyword?(method_name) ||
|
97
99
|
constant_name?(method_name) ||
|
100
|
+
node.asgn_method_call? ||
|
98
101
|
@allowed_send_nodes.include?(node) ||
|
99
102
|
@local_variables.include?(method_name)
|
100
103
|
|
@@ -104,7 +107,7 @@ module RuboCop
|
|
104
107
|
def autocorrect(node)
|
105
108
|
receiver, _method_name, *_args = *node
|
106
109
|
lambda do |corrector|
|
107
|
-
corrector.remove(receiver.
|
110
|
+
corrector.remove(receiver.source_range)
|
108
111
|
corrector.remove(node.loc.dot)
|
109
112
|
end
|
110
113
|
end
|
@@ -116,10 +119,6 @@ module RuboCop
|
|
116
119
|
@local_variables << name
|
117
120
|
end
|
118
121
|
|
119
|
-
def operator?(method_name)
|
120
|
-
method_name.to_s =~ /\W/
|
121
|
-
end
|
122
|
-
|
123
122
|
def keyword?(method_name)
|
124
123
|
[:alias, :and, :begin, :break, :case, :class, :def, :defined, :do,
|
125
124
|
:else, :elsif, :end, :ensure, :false, :for, :if, :in, :module,
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
+
# frozen_string_literal: true
|
2
3
|
|
3
4
|
module RuboCop
|
4
5
|
module Cop
|
@@ -31,8 +32,8 @@ module RuboCop
|
|
31
32
|
class RegexpLiteral < Cop
|
32
33
|
include ConfigurableEnforcedStyle
|
33
34
|
|
34
|
-
MSG_USE_SLASHES = 'Use `//` around regular expression.'
|
35
|
-
MSG_USE_PERCENT_R = 'Use `%r` around regular expression.'
|
35
|
+
MSG_USE_SLASHES = 'Use `//` around regular expression.'.freeze
|
36
|
+
MSG_USE_PERCENT_R = 'Use `%r` around regular expression.'.freeze
|
36
37
|
|
37
38
|
def on_regexp(node)
|
38
39
|
if slash_literal?(node)
|
@@ -76,7 +77,7 @@ module RuboCop
|
|
76
77
|
|
77
78
|
def node_body(node)
|
78
79
|
string_parts = node.children.select { |child| child.type == :str }
|
79
|
-
string_parts.map
|
80
|
+
string_parts.map(&:source).join
|
80
81
|
end
|
81
82
|
|
82
83
|
def slash_literal?(node)
|
@@ -91,11 +92,11 @@ module RuboCop
|
|
91
92
|
def autocorrect(node)
|
92
93
|
return if contains_slash?(node)
|
93
94
|
|
94
|
-
if slash_literal?(node)
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
95
|
+
replacement = if slash_literal?(node)
|
96
|
+
['%r', ''].zip(preferred_delimiters).map(&:join)
|
97
|
+
else
|
98
|
+
%w(/ /)
|
99
|
+
end
|
99
100
|
|
100
101
|
lambda do |corrector|
|
101
102
|
corrector.replace(node.loc.begin, replacement.first)
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
+
# frozen_string_literal: true
|
2
3
|
|
3
4
|
module RuboCop
|
4
5
|
module Cop
|
@@ -22,7 +23,7 @@ module RuboCop
|
|
22
23
|
# puts 'error'
|
23
24
|
# end
|
24
25
|
class RescueEnsureAlignment < Cop
|
25
|
-
MSG = '`%s` at %d, %d is not aligned with `end` at %d, %d.'
|
26
|
+
MSG = '`%s` at %d, %d is not aligned with `end` at %d, %d.'.freeze
|
26
27
|
|
27
28
|
def on_resbody(node)
|
28
29
|
check(node) unless modifier?(node)
|
@@ -73,7 +74,7 @@ module RuboCop
|
|
73
74
|
end
|
74
75
|
|
75
76
|
def ancestor_node(node)
|
76
|
-
node.each_ancestor(:kwbegin, :def, :defs).first
|
77
|
+
node.each_ancestor(:kwbegin, :def, :defs, :class, :module).first
|
77
78
|
end
|
78
79
|
end
|
79
80
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
+
# frozen_string_literal: true
|
2
3
|
|
3
4
|
module RuboCop
|
4
5
|
module Cop
|
@@ -7,10 +8,11 @@ module RuboCop
|
|
7
8
|
class RescueModifier < Cop
|
8
9
|
include AutocorrectAlignment
|
9
10
|
|
10
|
-
MSG = 'Avoid using `rescue` in its modifier form.'
|
11
|
+
MSG = 'Avoid using `rescue` in its modifier form.'.freeze
|
11
12
|
|
12
13
|
def investigate(processed_source)
|
13
|
-
@modifier_locations = processed_source
|
14
|
+
@modifier_locations = processed_source
|
15
|
+
.tokens
|
14
16
|
.select { |t| t.type == :kRESCUE_MOD }
|
15
17
|
.map(&:pos)
|
16
18
|
end
|
@@ -25,14 +27,14 @@ module RuboCop
|
|
25
27
|
*_, rescue_args = *rescue_modifier
|
26
28
|
|
27
29
|
correction =
|
28
|
-
"begin\n"
|
29
|
-
indentation(node)
|
30
|
-
"\n#{offset(node)}rescue\n"
|
31
|
-
indentation(node)
|
30
|
+
"begin\n" \
|
31
|
+
"#{indentation(node)}#{operation.source}" \
|
32
|
+
"\n#{offset(node)}rescue\n" \
|
33
|
+
"#{indentation(node)}#{rescue_args.source}" \
|
32
34
|
"\n#{offset(node)}end"
|
33
|
-
range = Parser::Source::Range.new(node.
|
34
|
-
node.
|
35
|
-
node.
|
35
|
+
range = Parser::Source::Range.new(node.source_range.source_buffer,
|
36
|
+
node.source_range.begin_pos,
|
37
|
+
node.source_range.end_pos)
|
36
38
|
|
37
39
|
lambda do |corrector|
|
38
40
|
corrector.replace(range, correction)
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
+
# frozen_string_literal: true
|
2
3
|
|
3
4
|
module RuboCop
|
4
5
|
module Cop
|
@@ -13,10 +14,8 @@ module RuboCop
|
|
13
14
|
# # good
|
14
15
|
# x += 1
|
15
16
|
class SelfAssignment < Cop
|
16
|
-
|
17
|
-
|
18
|
-
MSG = 'Use self-assignment shorthand `%s=`.'
|
19
|
-
OPS = [:+, :-, :*, :**, :/, :|, :&]
|
17
|
+
MSG = 'Use self-assignment shorthand `%s=`.'.freeze
|
18
|
+
OPS = [:+, :-, :*, :**, :/, :|, :&].freeze
|
20
19
|
|
21
20
|
def on_lvasgn(node)
|
22
21
|
check(node, :lvar)
|
@@ -86,7 +85,7 @@ module RuboCop
|
|
86
85
|
def apply_autocorrect(node, rhs, operator, new_rhs)
|
87
86
|
lambda do |corrector|
|
88
87
|
corrector.insert_before(node.loc.operator, operator)
|
89
|
-
corrector.replace(rhs.
|
88
|
+
corrector.replace(rhs.source_range, new_rhs.source)
|
90
89
|
end
|
91
90
|
end
|
92
91
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
+
# frozen_string_literal: true
|
2
3
|
|
3
4
|
module RuboCop
|
4
5
|
module Cop
|
@@ -6,7 +7,7 @@ module RuboCop
|
|
6
7
|
# This cop checks for multiple expressions placed on the same line.
|
7
8
|
# It also checks for lines terminated with a semicolon.
|
8
9
|
class Semicolon < Cop
|
9
|
-
MSG = 'Do not use semicolons to terminate expressions.'
|
10
|
+
MSG = 'Do not use semicolons to terminate expressions.'.freeze
|
10
11
|
|
11
12
|
def investigate(processed_source)
|
12
13
|
return unless processed_source.ast
|
@@ -22,7 +23,7 @@ module RuboCop
|
|
22
23
|
return if exprs.size < 2
|
23
24
|
|
24
25
|
# create a map matching lines to the number of expressions on them
|
25
|
-
exprs_lines = exprs.map { |e| e.
|
26
|
+
exprs_lines = exprs.map { |e| e.source_range.line }
|
26
27
|
lines = exprs_lines.group_by { |i| i }
|
27
28
|
|
28
29
|
# every line with more than 1 expression on it is an offense
|
@@ -1,11 +1,13 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
+
# frozen_string_literal: true
|
2
3
|
|
3
4
|
module RuboCop
|
4
5
|
module Cop
|
5
6
|
module Style
|
6
7
|
# This cop checks for the use of the send method.
|
7
8
|
class Send < Cop
|
8
|
-
MSG = 'Prefer `Object#__send__` or `Object#public_send` to
|
9
|
+
MSG = 'Prefer `Object#__send__` or `Object#public_send` to ' \
|
10
|
+
'`send`.'.freeze
|
9
11
|
|
10
12
|
def on_send(node)
|
11
13
|
_receiver, method_name, *args = *node
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
+
# frozen_string_literal: true
|
2
3
|
|
3
4
|
module RuboCop
|
4
5
|
module Cop
|
@@ -7,8 +8,9 @@ module RuboCop
|
|
7
8
|
class SignalException < Cop
|
8
9
|
include ConfigurableEnforcedStyle
|
9
10
|
|
10
|
-
FAIL_MSG = 'Use `fail` instead of `raise` to signal exceptions.'
|
11
|
-
RAISE_MSG = 'Use `raise` instead of `fail` to
|
11
|
+
FAIL_MSG = 'Use `fail` instead of `raise` to signal exceptions.'.freeze
|
12
|
+
RAISE_MSG = 'Use `raise` instead of `fail` to ' \
|
13
|
+
'rethrow exceptions.'.freeze
|
12
14
|
|
13
15
|
def on_rescue(node)
|
14
16
|
return unless style == :semantic
|
@@ -77,7 +79,7 @@ module RuboCop
|
|
77
79
|
end
|
78
80
|
|
79
81
|
def command_or_kernel_call?(name, node)
|
80
|
-
command?(name
|
82
|
+
node.command?(name) || kernel_call?(name, node)
|
81
83
|
end
|
82
84
|
|
83
85
|
def kernel_call?(name, node)
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
+
# frozen_string_literal: true
|
2
3
|
|
3
4
|
module RuboCop
|
4
5
|
module Cop
|
@@ -11,7 +12,7 @@ module RuboCop
|
|
11
12
|
class SingleLineBlockParams < Cop
|
12
13
|
def on_block(node)
|
13
14
|
# we care only for single line blocks
|
14
|
-
return unless
|
15
|
+
return unless block_length(node) == 0
|
15
16
|
|
16
17
|
method_node, args_node, _body_node = *node
|
17
18
|
receiver, method_name, _method_args = *method_node
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
+
# frozen_string_literal: true
|
2
3
|
|
3
4
|
module RuboCop
|
4
5
|
module Cop
|
@@ -9,7 +10,7 @@ module RuboCop
|
|
9
10
|
include AutocorrectAlignment
|
10
11
|
include OnMethodDef
|
11
12
|
|
12
|
-
MSG = 'Avoid single-line method definitions.'
|
13
|
+
MSG = 'Avoid single-line method definitions.'.freeze
|
13
14
|
|
14
15
|
def allow_empty?
|
15
16
|
cop_config['AllowIfMethodIsEmpty']
|
@@ -31,16 +32,16 @@ module RuboCop
|
|
31
32
|
def autocorrect(node)
|
32
33
|
body = @body
|
33
34
|
eol_comment = processed_source.comments.find do |c|
|
34
|
-
c.loc.line == node.
|
35
|
+
c.loc.line == node.source_range.line
|
35
36
|
end
|
36
37
|
lambda do |corrector|
|
37
38
|
if body
|
38
39
|
if body.type == :begin
|
39
40
|
body.children.each do |part|
|
40
|
-
break_line_before(part.
|
41
|
+
break_line_before(part.source_range, node, corrector, 1)
|
41
42
|
end
|
42
43
|
else
|
43
|
-
break_line_before(body.
|
44
|
+
break_line_before(body.source_range, node, corrector, 1)
|
44
45
|
end
|
45
46
|
end
|
46
47
|
|
@@ -60,9 +61,8 @@ module RuboCop
|
|
60
61
|
|
61
62
|
def move_comment(eol_comment, node, corrector)
|
62
63
|
text = eol_comment.loc.expression.source
|
63
|
-
corrector.insert_before(node.
|
64
|
-
text + "\n" +
|
65
|
-
' ' * node.loc.keyword.column)
|
64
|
+
corrector.insert_before(node.source_range,
|
65
|
+
text + "\n" + (' ' * node.loc.keyword.column))
|
66
66
|
corrector.remove(eol_comment.loc.expression)
|
67
67
|
end
|
68
68
|
end
|