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
|
@@ -9,7 +10,7 @@ module RuboCop
|
|
9
10
|
# To avoid false positives, it ignores cases in which we cannot know
|
10
11
|
# for certain the type of value that would be assigned to a constant.
|
11
12
|
class ConstantName < Cop
|
12
|
-
MSG = 'Use SCREAMING_SNAKE_CASE for constants.'
|
13
|
+
MSG = 'Use SCREAMING_SNAKE_CASE for constants.'.freeze
|
13
14
|
SNAKE_CASE = /^[\dA-Z_]+$/
|
14
15
|
|
15
16
|
def on_casgn(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
|
@@ -61,7 +62,7 @@ module RuboCop
|
|
61
62
|
notice_regexp = Regexp.new(notice)
|
62
63
|
processed_source.tokens.each do |token|
|
63
64
|
break unless token.type == :tCOMMENT
|
64
|
-
notice_found = !(
|
65
|
+
notice_found = !(token.text =~ notice_regexp).nil?
|
65
66
|
break if notice_found
|
66
67
|
end
|
67
68
|
notice_found
|
@@ -75,11 +76,11 @@ module RuboCop
|
|
75
76
|
"match Notice /#{notice}/" unless autocorrect_notice =~ regex
|
76
77
|
|
77
78
|
lambda do |corrector|
|
78
|
-
if token.nil?
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
79
|
+
range = if token.nil?
|
80
|
+
Parser::Source::Range.new('', 0, 0)
|
81
|
+
else
|
82
|
+
token.pos
|
83
|
+
end
|
83
84
|
corrector.insert_before(range, "#{autocorrect_notice}\n")
|
84
85
|
end
|
85
86
|
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
|
@@ -10,7 +11,7 @@ module RuboCop
|
|
10
11
|
include OnMethodDef
|
11
12
|
|
12
13
|
MSG = "Omit the parentheses in defs when the method doesn't accept " \
|
13
|
-
'any arguments.'
|
14
|
+
'any arguments.'.freeze
|
14
15
|
|
15
16
|
def on_method_def(node, _method_name, args, _body)
|
16
17
|
start_line = node.loc.keyword.line
|
@@ -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,9 +7,9 @@ module RuboCop
|
|
6
7
|
# This cop checks for uses of the deprecated methods Hash#has_key?
|
7
8
|
# and Hash#has_value?
|
8
9
|
class DeprecatedHashMethods < Cop
|
9
|
-
MSG = '`Hash#%s` is deprecated in favor of `Hash#%s`.'
|
10
|
+
MSG = '`Hash#%s` is deprecated in favor of `Hash#%s`.'.freeze
|
10
11
|
|
11
|
-
DEPRECATED_METHODS = [:has_key?, :has_value?]
|
12
|
+
DEPRECATED_METHODS = [:has_key?, :has_value?].freeze
|
12
13
|
|
13
14
|
def on_send(node)
|
14
15
|
_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
|
@@ -6,7 +7,7 @@ module RuboCop
|
|
6
7
|
# This cop checks for missing top-level documentation of
|
7
8
|
# classes and modules. Classes with no body are exempt from the
|
8
9
|
# check and so are namespace modules - modules that have nothing in
|
9
|
-
# their bodies except classes or
|
10
|
+
# their bodies except classes, other modules, or constant definitions.
|
10
11
|
#
|
11
12
|
# The documentation requirement is annulled if the class or module has
|
12
13
|
# a "#:nodoc:" comment next to it. Likewise, "#:nodoc: all" does the
|
@@ -14,7 +15,9 @@ module RuboCop
|
|
14
15
|
class Documentation < Cop
|
15
16
|
include AnnotationComment
|
16
17
|
|
17
|
-
MSG = 'Missing top-level %s documentation comment.'
|
18
|
+
MSG = 'Missing top-level %s documentation comment.'.freeze
|
19
|
+
|
20
|
+
def_node_matcher :constant_definition?, '{class module casgn}'
|
18
21
|
|
19
22
|
def investigate(processed_source)
|
20
23
|
ast = processed_source.ast
|
@@ -47,21 +50,14 @@ module RuboCop
|
|
47
50
|
end
|
48
51
|
end
|
49
52
|
|
50
|
-
# 'Const = Class.new' or 'Const = Module.new' are module definitions
|
51
|
-
mod_new = '(send (const nil {:Class :Module}) :new ...)'
|
52
|
-
def_node_matcher :module_definition?,
|
53
|
-
"{class
|
54
|
-
module
|
55
|
-
(casgn _ _ {#{mod_new} (block #{mod_new} ...)})}"
|
56
|
-
|
57
53
|
def namespace?(body_node)
|
58
54
|
return false unless body_node
|
59
55
|
|
60
56
|
case body_node.type
|
61
57
|
when :begin
|
62
|
-
body_node.children.all? { |node|
|
58
|
+
body_node.children.all? { |node| constant_definition?(node) }
|
63
59
|
else
|
64
|
-
|
60
|
+
constant_definition?(body_node)
|
65
61
|
end
|
66
62
|
end
|
67
63
|
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
+
# frozen_string_literal: true
|
2
3
|
|
3
4
|
module RuboCop
|
4
5
|
module Cop
|
@@ -32,7 +33,7 @@ module RuboCop
|
|
32
33
|
def proper_dot_position?(node)
|
33
34
|
receiver, _method_name, *_args = *node
|
34
35
|
|
35
|
-
receiver_line = receiver.
|
36
|
+
receiver_line = receiver.source_range.end.line
|
36
37
|
|
37
38
|
if node.loc.selector
|
38
39
|
selector_line = node.loc.selector.line
|
@@ -73,7 +74,7 @@ module RuboCop
|
|
73
74
|
when :leading
|
74
75
|
corrector.insert_before(selector, '.')
|
75
76
|
when :trailing
|
76
|
-
corrector.insert_after(receiver.
|
77
|
+
corrector.insert_after(receiver.source_range, '.')
|
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
|
@@ -20,7 +21,7 @@ module RuboCop
|
|
20
21
|
# As you're unlikely to write code that can accept values of any type
|
21
22
|
# this is rarely a problem in practice.
|
22
23
|
class DoubleNegation < Cop
|
23
|
-
MSG = 'Avoid the use of double negation (`!!`).'
|
24
|
+
MSG = 'Avoid the use of double negation (`!!`).'.freeze
|
24
25
|
|
25
26
|
def_node_matcher :double_negative?, '(send (send _ :!) :!)'
|
26
27
|
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
+
# frozen_string_literal: true
|
2
3
|
|
3
4
|
module RuboCop
|
4
5
|
module Cop
|
@@ -17,8 +18,8 @@ module RuboCop
|
|
17
18
|
# # good
|
18
19
|
# [1, 2].each_with_object({}) { |e, a| a[e] = e }
|
19
20
|
class EachWithObject < Cop
|
20
|
-
MSG = 'Use `each_with_object` instead of `%s`.'
|
21
|
-
METHODS = [:inject, :reduce]
|
21
|
+
MSG = 'Use `each_with_object` instead of `%s`.'.freeze
|
22
|
+
METHODS = [:inject, :reduce].freeze
|
22
23
|
|
23
24
|
def on_block(node)
|
24
25
|
method, args, body = *node
|
@@ -29,7 +30,7 @@ module RuboCop
|
|
29
30
|
_, method_name, method_arg = *method
|
30
31
|
|
31
32
|
return unless METHODS.include? method_name
|
32
|
-
return if method_arg &&
|
33
|
+
return if method_arg && method_arg.basic_literal?
|
33
34
|
|
34
35
|
return_value = return_value(body)
|
35
36
|
return unless return_value
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
+
# frozen_string_literal: true
|
2
3
|
|
3
4
|
module RuboCop
|
4
5
|
module Cop
|
@@ -12,7 +13,7 @@ module RuboCop
|
|
12
13
|
include AutocorrectAlignment
|
13
14
|
include CheckAssignment
|
14
15
|
|
15
|
-
MSG = 'Align `%s` with `%s`.'
|
16
|
+
MSG = 'Align `%s` with `%s`.'.freeze
|
16
17
|
|
17
18
|
def on_if(node, base = nil)
|
18
19
|
return if ignored_node?(node)
|
@@ -59,7 +60,7 @@ module RuboCop
|
|
59
60
|
|
60
61
|
def base_range(node, base)
|
61
62
|
if base
|
62
|
-
base.
|
63
|
+
base.source_range
|
63
64
|
else
|
64
65
|
base = node
|
65
66
|
until %w(if unless).include?(base.loc.keyword.source)
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
+
# frozen_string_literal: true
|
2
3
|
|
3
4
|
module RuboCop
|
4
5
|
module Cop
|
@@ -69,7 +70,7 @@ module RuboCop
|
|
69
70
|
include OnNormalIfUnless
|
70
71
|
include ConfigurableEnforcedStyle
|
71
72
|
|
72
|
-
MSG = 'Redundant `else`-clause.'
|
73
|
+
MSG = 'Redundant `else`-clause.'.freeze
|
73
74
|
|
74
75
|
def on_normal_if_unless(node)
|
75
76
|
check(node, if_else_clause(node))
|
@@ -118,9 +119,9 @@ module RuboCop
|
|
118
119
|
end_pos = if node.loc.end
|
119
120
|
node.loc.end.begin_pos
|
120
121
|
else
|
121
|
-
node.
|
122
|
+
node.source_range.end_pos + 1
|
122
123
|
end
|
123
|
-
range = Parser::Source::Range.new(node.
|
124
|
+
range = Parser::Source::Range.new(node.source_range.source_buffer,
|
124
125
|
node.loc.else.begin_pos,
|
125
126
|
end_pos)
|
126
127
|
corrector.remove(range)
|
@@ -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,7 +8,7 @@ module RuboCop
|
|
7
8
|
# separated by empty lines.
|
8
9
|
class EmptyLineBetweenDefs < Cop
|
9
10
|
include OnMethodDef
|
10
|
-
MSG = 'Use empty lines between method definitions.'
|
11
|
+
MSG = 'Use empty lines between method definitions.'.freeze
|
11
12
|
|
12
13
|
def on_method_def(node, _method_name, _args, _body)
|
13
14
|
return unless node.parent && node.parent.begin_type?
|
@@ -1,21 +1,27 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
require 'set'
|
2
5
|
|
3
6
|
module RuboCop
|
4
7
|
module Cop
|
5
8
|
module Style
|
6
9
|
# This cops checks for two or more consecutive blank lines.
|
7
10
|
class EmptyLines < Cop
|
8
|
-
MSG = 'Extra blank line detected.'
|
11
|
+
MSG = 'Extra blank line detected.'.freeze
|
9
12
|
LINE_OFFSET = 2
|
10
13
|
|
11
14
|
def investigate(processed_source)
|
12
15
|
return if processed_source.tokens.empty?
|
13
16
|
|
14
|
-
|
17
|
+
lines = Set.new
|
18
|
+
processed_source.tokens.each do |token|
|
19
|
+
lines << token.pos.line
|
20
|
+
end
|
15
21
|
|
16
|
-
|
17
|
-
cur_line = token.pos.line
|
22
|
+
prev_line = 1
|
18
23
|
|
24
|
+
lines.sort.each do |cur_line|
|
19
25
|
line_diff = cur_line - prev_line
|
20
26
|
|
21
27
|
if line_diff > LINE_OFFSET
|
@@ -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,7 +8,7 @@ module RuboCop
|
|
7
8
|
class EmptyLinesAroundAccessModifier < Cop
|
8
9
|
include AccessModifierNode
|
9
10
|
|
10
|
-
MSG = 'Keep a blank line before and after `%s`.'
|
11
|
+
MSG = 'Keep a blank line before and after `%s`.'.freeze
|
11
12
|
|
12
13
|
def on_send(node)
|
13
14
|
return unless modifier_node?(node)
|
@@ -25,8 +26,8 @@ module RuboCop
|
|
25
26
|
|
26
27
|
line = Parser::Source::Range.new(
|
27
28
|
processed_source.buffer,
|
28
|
-
node.
|
29
|
-
node.
|
29
|
+
node.source_range.begin_pos - node.loc.column,
|
30
|
+
node.source_range.end_pos
|
30
31
|
)
|
31
32
|
|
32
33
|
unless previous_line_empty?(previous_line)
|
@@ -41,6 +42,12 @@ module RuboCop
|
|
41
42
|
|
42
43
|
private
|
43
44
|
|
45
|
+
def previous_line_ignoring_comments(processed_source, send_line)
|
46
|
+
processed_source[0..send_line - 2].reverse.find do |line|
|
47
|
+
!comment_line?(line)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
44
51
|
def previous_line_empty?(previous_line)
|
45
52
|
block_start?(previous_line.lstrip) ||
|
46
53
|
class_def?(previous_line.lstrip) ||
|
@@ -53,14 +60,15 @@ module RuboCop
|
|
53
60
|
|
54
61
|
def empty_lines_around?(node)
|
55
62
|
send_line = node.loc.line
|
56
|
-
previous_line = processed_source
|
63
|
+
previous_line = previous_line_ignoring_comments(processed_source,
|
64
|
+
send_line)
|
57
65
|
next_line = processed_source[send_line]
|
58
66
|
|
59
67
|
previous_line_empty?(previous_line) && next_line_empty?(next_line)
|
60
68
|
end
|
61
69
|
|
62
70
|
def class_def?(line)
|
63
|
-
|
71
|
+
line.start_with?('class', 'module')
|
64
72
|
end
|
65
73
|
|
66
74
|
def block_start?(line)
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
+
# frozen_string_literal: true
|
2
3
|
|
3
4
|
module RuboCop
|
4
5
|
module Cop
|
@@ -16,15 +17,18 @@ module RuboCop
|
|
16
17
|
class EmptyLinesAroundBlockBody < Cop
|
17
18
|
include EmptyLinesAroundBody
|
18
19
|
|
19
|
-
KIND = 'block'
|
20
|
+
KIND = 'block'.freeze
|
20
21
|
|
21
22
|
def on_block(node)
|
22
|
-
|
23
|
+
_send, _args, body = *node
|
24
|
+
check(node, body)
|
23
25
|
end
|
24
26
|
|
25
27
|
private
|
26
28
|
|
27
|
-
def check(node)
|
29
|
+
def check(node, body)
|
30
|
+
return unless body || style == :no_empty_lines
|
31
|
+
|
28
32
|
start_line = node.loc.begin.line
|
29
33
|
end_line = node.loc.end.line
|
30
34
|
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
+
# frozen_string_literal: true
|
2
3
|
|
3
4
|
module RuboCop
|
4
5
|
module Cop
|
@@ -19,14 +20,16 @@ module RuboCop
|
|
19
20
|
class EmptyLinesAroundClassBody < Cop
|
20
21
|
include EmptyLinesAroundBody
|
21
22
|
|
22
|
-
KIND = 'class'
|
23
|
+
KIND = 'class'.freeze
|
23
24
|
|
24
25
|
def on_class(node)
|
25
|
-
|
26
|
+
_name, _superclass, body = *node
|
27
|
+
check(node, body)
|
26
28
|
end
|
27
29
|
|
28
30
|
def on_sclass(node)
|
29
|
-
|
31
|
+
_obj, body = *node
|
32
|
+
check(node, body)
|
30
33
|
end
|
31
34
|
end
|
32
35
|
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
|
@@ -17,12 +18,12 @@ module RuboCop
|
|
17
18
|
include EmptyLinesAroundBody
|
18
19
|
include OnMethodDef
|
19
20
|
|
20
|
-
KIND = 'method'
|
21
|
+
KIND = 'method'.freeze
|
21
22
|
|
22
23
|
private
|
23
24
|
|
24
|
-
def on_method_def(node, _method_name, _args,
|
25
|
-
check(node)
|
25
|
+
def on_method_def(node, _method_name, _args, body)
|
26
|
+
check(node, body)
|
26
27
|
end
|
27
28
|
|
28
29
|
# Override ConfigurableEnforcedStyle#style and hard-code
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
+
# frozen_string_literal: true
|
2
3
|
|
3
4
|
module RuboCop
|
4
5
|
module Cop
|
@@ -19,10 +20,11 @@ module RuboCop
|
|
19
20
|
class EmptyLinesAroundModuleBody < Cop
|
20
21
|
include EmptyLinesAroundBody
|
21
22
|
|
22
|
-
KIND = 'module'
|
23
|
+
KIND = 'module'.freeze
|
23
24
|
|
24
25
|
def on_module(node)
|
25
|
-
|
26
|
+
_name, body = *node
|
27
|
+
check(node, body)
|
26
28
|
end
|
27
29
|
end
|
28
30
|
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,9 +7,9 @@ module RuboCop
|
|
6
7
|
# This cop checks for the use of a method, the result of which
|
7
8
|
# would be a literal, like an empty array, hash or string.
|
8
9
|
class EmptyLiteral < Cop
|
9
|
-
ARR_MSG = 'Use array literal `[]` instead of `Array.new`.'
|
10
|
-
HASH_MSG = 'Use hash literal `{}` instead of `Hash.new`.'
|
11
|
-
STR_MSG = "Use string literal `''` instead of `String.new`."
|
10
|
+
ARR_MSG = 'Use array literal `[]` instead of `Array.new`.'.freeze
|
11
|
+
HASH_MSG = 'Use hash literal `{}` instead of `Hash.new`.'.freeze
|
12
|
+
STR_MSG = "Use string literal `''` instead of `String.new`.".freeze
|
12
13
|
|
13
14
|
# Empty array node
|
14
15
|
#
|
@@ -54,9 +55,23 @@ module RuboCop
|
|
54
55
|
return if first_arg_in_method_call_without_parentheses?(node)
|
55
56
|
'{}'
|
56
57
|
when STR_NODE
|
57
|
-
|
58
|
+
if enforce_double_quotes?
|
59
|
+
'""'
|
60
|
+
else
|
61
|
+
"''"
|
62
|
+
end
|
58
63
|
end
|
59
|
-
->(corrector) { corrector.replace(node.
|
64
|
+
->(corrector) { corrector.replace(node.source_range, name) }
|
65
|
+
end
|
66
|
+
|
67
|
+
private
|
68
|
+
|
69
|
+
def enforce_double_quotes?
|
70
|
+
string_literals_config['EnforcedStyle'] == 'double_quotes'
|
71
|
+
end
|
72
|
+
|
73
|
+
def string_literals_config
|
74
|
+
config.for_cop('Style/StringLiterals')
|
60
75
|
end
|
61
76
|
|
62
77
|
def first_arg_in_method_call_without_parentheses?(node)
|