rubocop 0.89.1 → 0.90.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/config/default.yml +79 -11
- data/lib/rubocop.rb +13 -0
- data/lib/rubocop/cached_data.rb +1 -0
- data/lib/rubocop/cli/command.rb +1 -0
- data/lib/rubocop/cli/command/auto_genenerate_config.rb +1 -0
- data/lib/rubocop/cli/command/base.rb +1 -0
- data/lib/rubocop/cli/command/execute_runner.rb +1 -0
- data/lib/rubocop/cli/command/init_dotfile.rb +1 -0
- data/lib/rubocop/cli/command/show_cops.rb +1 -0
- data/lib/rubocop/cli/command/version.rb +1 -0
- data/lib/rubocop/cli/environment.rb +1 -0
- data/lib/rubocop/comment_config.rb +5 -0
- data/lib/rubocop/config_loader.rb +17 -6
- data/lib/rubocop/config_loader_resolver.rb +1 -0
- data/lib/rubocop/config_obsoletion.rb +1 -0
- data/lib/rubocop/config_validator.rb +3 -0
- data/lib/rubocop/cop/base.rb +23 -0
- data/lib/rubocop/cop/bundler/gem_comment.rb +7 -3
- data/lib/rubocop/cop/commissioner.rb +47 -7
- data/lib/rubocop/cop/correctors/alignment_corrector.rb +4 -4
- data/lib/rubocop/cop/correctors/condition_corrector.rb +3 -5
- data/lib/rubocop/cop/correctors/empty_line_corrector.rb +9 -10
- data/lib/rubocop/cop/correctors/line_break_corrector.rb +2 -2
- data/lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb +8 -3
- data/lib/rubocop/cop/correctors/parentheses_corrector.rb +5 -8
- data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +4 -9
- data/lib/rubocop/cop/correctors/punctuation_corrector.rb +8 -10
- data/lib/rubocop/cop/documentation.rb +22 -0
- data/lib/rubocop/cop/generator.rb +1 -0
- data/lib/rubocop/cop/layout/block_alignment.rb +23 -19
- data/lib/rubocop/cop/layout/class_structure.rb +10 -9
- data/lib/rubocop/cop/layout/closing_heredoc_indentation.rb +4 -6
- data/lib/rubocop/cop/layout/condition_position.rb +13 -15
- data/lib/rubocop/cop/layout/def_end_alignment.rb +7 -4
- data/lib/rubocop/cop/layout/dot_position.rb +21 -17
- data/lib/rubocop/cop/layout/empty_comment.rb +30 -23
- data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +19 -16
- data/lib/rubocop/cop/layout/empty_line_after_magic_comment.rb +13 -13
- data/lib/rubocop/cop/layout/empty_line_after_multiline_condition.rb +144 -0
- data/lib/rubocop/cop/layout/empty_line_between_defs.rb +21 -23
- data/lib/rubocop/cop/layout/empty_lines.rb +6 -7
- data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +4 -6
- data/lib/rubocop/cop/layout/empty_lines_around_arguments.rb +7 -8
- data/lib/rubocop/cop/layout/empty_lines_around_attribute_accessor.rb +3 -6
- data/lib/rubocop/cop/layout/empty_lines_around_begin_body.rb +2 -5
- data/lib/rubocop/cop/layout/empty_lines_around_block_body.rb +2 -5
- data/lib/rubocop/cop/layout/empty_lines_around_class_body.rb +2 -5
- data/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +2 -5
- data/lib/rubocop/cop/layout/empty_lines_around_method_body.rb +2 -5
- data/lib/rubocop/cop/layout/empty_lines_around_module_body.rb +2 -5
- data/lib/rubocop/cop/layout/end_alignment.rb +6 -7
- data/lib/rubocop/cop/layout/first_array_element_line_break.rb +2 -5
- data/lib/rubocop/cop/layout/first_hash_element_line_break.rb +2 -5
- data/lib/rubocop/cop/layout/first_method_argument_line_break.rb +4 -8
- data/lib/rubocop/cop/layout/first_method_parameter_line_break.rb +2 -5
- data/lib/rubocop/cop/layout/hash_alignment.rb +17 -20
- data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +15 -14
- data/lib/rubocop/cop/layout/heredoc_indentation.rb +14 -11
- data/lib/rubocop/cop/layout/initial_indentation.rb +6 -7
- data/lib/rubocop/cop/layout/leading_comment_space.rb +11 -9
- data/lib/rubocop/cop/layout/leading_empty_lines.rb +6 -11
- data/lib/rubocop/cop/layout/multiline_array_brace_layout.rb +2 -5
- data/lib/rubocop/cop/layout/multiline_array_line_breaks.rb +2 -5
- data/lib/rubocop/cop/layout/multiline_assignment_layout.rb +10 -14
- data/lib/rubocop/cop/layout/multiline_block_layout.rb +21 -19
- data/lib/rubocop/cop/layout/multiline_hash_brace_layout.rb +2 -5
- data/lib/rubocop/cop/layout/multiline_hash_key_line_breaks.rb +2 -5
- data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +5 -9
- data/lib/rubocop/cop/layout/multiline_method_call_brace_layout.rb +2 -5
- data/lib/rubocop/cop/layout/multiline_method_definition_brace_layout.rb +2 -5
- data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +18 -21
- data/lib/rubocop/cop/layout/space_after_colon.rb +11 -7
- data/lib/rubocop/cop/layout/space_after_comma.rb +2 -5
- data/lib/rubocop/cop/layout/space_after_method_name.rb +5 -6
- data/lib/rubocop/cop/layout/space_after_not.rb +9 -11
- data/lib/rubocop/cop/layout/space_after_semicolon.rb +2 -5
- data/lib/rubocop/cop/layout/space_around_equals_in_parameter_default.rb +20 -15
- data/lib/rubocop/cop/layout/space_around_keyword.rb +17 -18
- data/lib/rubocop/cop/layout/space_around_operators.rb +17 -16
- data/lib/rubocop/cop/layout/space_before_block_braces.rb +23 -22
- data/lib/rubocop/cop/layout/space_before_comma.rb +3 -5
- data/lib/rubocop/cop/layout/space_before_comment.rb +10 -7
- data/lib/rubocop/cop/layout/space_before_first_arg.rb +7 -7
- data/lib/rubocop/cop/layout/space_before_semicolon.rb +2 -5
- data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +9 -17
- data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +13 -16
- data/lib/rubocop/cop/layout/space_inside_array_percent_literal.rb +3 -8
- data/lib/rubocop/cop/layout/space_inside_block_braces.rb +17 -16
- data/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +16 -19
- data/lib/rubocop/cop/layout/space_inside_parens.rb +9 -14
- data/lib/rubocop/cop/layout/space_inside_percent_literal_delimiters.rb +5 -10
- data/lib/rubocop/cop/layout/space_inside_range_literal.rb +8 -17
- data/lib/rubocop/cop/layout/space_inside_reference_brackets.rb +13 -16
- data/lib/rubocop/cop/layout/space_inside_string_interpolation.rb +10 -11
- data/lib/rubocop/cop/layout/trailing_empty_lines.rb +10 -15
- data/lib/rubocop/cop/layout/trailing_whitespace.rb +11 -11
- data/lib/rubocop/cop/lint/binary_operator_with_identical_operands.rb +1 -1
- data/lib/rubocop/cop/lint/constant_resolution.rb +1 -1
- data/lib/rubocop/cop/lint/duplicate_require.rb +41 -0
- data/lib/rubocop/cop/lint/duplicate_rescue_exception.rb +0 -11
- data/lib/rubocop/cop/lint/empty_file.rb +53 -0
- data/lib/rubocop/cop/lint/missing_super.rb +2 -2
- data/lib/rubocop/cop/lint/mixed_regexp_capture_types.rb +2 -35
- data/lib/rubocop/cop/lint/out_of_range_regexp_ref.rb +9 -19
- data/lib/rubocop/cop/lint/percent_string_array.rb +8 -12
- data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +4 -4
- data/lib/rubocop/cop/lint/top_level_return_with_argument.rb +1 -1
- data/lib/rubocop/cop/lint/trailing_comma_in_attribute_declaration.rb +57 -0
- data/lib/rubocop/cop/lint/useless_method_definition.rb +77 -0
- data/lib/rubocop/cop/metrics/utils/abc_size_calculator.rb +2 -0
- data/lib/rubocop/cop/metrics/utils/code_length_calculator.rb +1 -0
- data/lib/rubocop/cop/mixin/alignment.rb +3 -0
- data/lib/rubocop/cop/mixin/allowed_methods.rb +2 -0
- data/lib/rubocop/cop/mixin/annotation_comment.rb +5 -0
- data/lib/rubocop/cop/mixin/check_line_breakable.rb +16 -7
- data/lib/rubocop/cop/mixin/comments_help.rb +54 -0
- data/lib/rubocop/cop/mixin/empty_lines_around_body.rb +8 -7
- data/lib/rubocop/cop/mixin/empty_parameter.rb +3 -1
- data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +3 -1
- data/lib/rubocop/cop/mixin/first_element_line_break.rb +3 -1
- data/lib/rubocop/cop/mixin/hash_transform_method.rb +17 -0
- data/lib/rubocop/cop/mixin/multiline_element_line_breaks.rb +3 -1
- data/lib/rubocop/cop/mixin/multiline_literal_brace_layout.rb +12 -10
- data/lib/rubocop/cop/mixin/negative_conditional.rb +2 -2
- data/lib/rubocop/cop/mixin/percent_array.rb +14 -3
- data/lib/rubocop/cop/mixin/regexp_literal_help.rb +1 -1
- data/lib/rubocop/cop/mixin/rescue_node.rb +10 -1
- data/lib/rubocop/cop/mixin/space_after_punctuation.rb +4 -3
- data/lib/rubocop/cop/mixin/space_before_punctuation.rb +4 -3
- data/lib/rubocop/cop/mixin/surrounding_space.rb +8 -4
- data/lib/rubocop/cop/mixin/trailing_comma.rb +7 -7
- data/lib/rubocop/cop/offense.rb +1 -0
- data/lib/rubocop/cop/severity.rb +0 -8
- data/lib/rubocop/cop/style/case_equality.rb +8 -3
- data/lib/rubocop/cop/style/case_like_if.rb +20 -4
- data/lib/rubocop/cop/style/class_methods_definitions.rb +131 -0
- data/lib/rubocop/cop/style/combinable_loops.rb +89 -0
- data/lib/rubocop/cop/style/empty_block_parameter.rb +9 -10
- data/lib/rubocop/cop/style/empty_lambda_parameter.rb +9 -10
- data/lib/rubocop/cop/style/guard_clause.rb +1 -0
- data/lib/rubocop/cop/style/hash_syntax.rb +6 -5
- data/lib/rubocop/cop/style/hash_transform_keys.rb +14 -1
- data/lib/rubocop/cop/style/hash_transform_values.rb +14 -1
- data/lib/rubocop/cop/style/if_unless_modifier.rb +2 -2
- data/lib/rubocop/cop/style/keyword_parameters_order.rb +58 -0
- data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +10 -1
- data/lib/rubocop/cop/style/multiline_when_then.rb +2 -2
- data/lib/rubocop/cop/style/negated_if.rb +6 -6
- data/lib/rubocop/cop/style/negated_unless.rb +6 -6
- data/lib/rubocop/cop/style/negated_while.rb +7 -15
- data/lib/rubocop/cop/style/nested_modifier.rb +10 -13
- data/lib/rubocop/cop/style/nested_parenthesized_calls.rb +11 -11
- data/lib/rubocop/cop/style/nested_ternary_operator.rb +14 -16
- data/lib/rubocop/cop/style/next.rb +10 -14
- data/lib/rubocop/cop/style/nil_comparison.rb +11 -11
- data/lib/rubocop/cop/style/non_nil_check.rb +32 -26
- data/lib/rubocop/cop/style/not.rb +19 -26
- data/lib/rubocop/cop/style/numeric_literal_prefix.rb +4 -9
- data/lib/rubocop/cop/style/numeric_predicate.rb +4 -11
- data/lib/rubocop/cop/style/one_line_conditional.rb +71 -23
- data/lib/rubocop/cop/style/option_hash.rb +1 -1
- data/lib/rubocop/cop/style/optional_arguments.rb +1 -1
- data/lib/rubocop/cop/style/or_assignment.rb +13 -10
- data/lib/rubocop/cop/style/parallel_assignment.rb +14 -14
- data/lib/rubocop/cop/style/parentheses_around_condition.rb +6 -6
- data/lib/rubocop/cop/style/percent_literal_delimiters.rb +13 -19
- data/lib/rubocop/cop/style/percent_q_literals.rb +8 -10
- data/lib/rubocop/cop/style/perl_backrefs.rb +8 -10
- data/lib/rubocop/cop/style/preferred_hash_methods.rb +9 -14
- data/lib/rubocop/cop/style/proc.rb +6 -6
- data/lib/rubocop/cop/style/raise_args.rb +13 -24
- data/lib/rubocop/cop/style/random_with_offset.rb +15 -16
- data/lib/rubocop/cop/style/redundant_assignment.rb +8 -10
- data/lib/rubocop/cop/style/redundant_begin.rb +7 -9
- data/lib/rubocop/cop/style/redundant_capital_w.rb +6 -9
- data/lib/rubocop/cop/style/redundant_condition.rb +5 -6
- data/lib/rubocop/cop/style/redundant_fetch_block.rb +3 -12
- data/lib/rubocop/cop/style/redundant_file_extension_in_require.rb +8 -8
- data/lib/rubocop/cop/style/redundant_freeze.rb +3 -6
- data/lib/rubocop/cop/style/redundant_interpolation.rb +25 -24
- data/lib/rubocop/cop/style/redundant_parentheses.rb +7 -9
- data/lib/rubocop/cop/style/redundant_regexp_character_class.rb +6 -13
- data/lib/rubocop/cop/style/redundant_regexp_escape.rb +5 -14
- data/lib/rubocop/cop/style/redundant_self.rb +2 -2
- data/lib/rubocop/cop/style/redundant_self_assignment.rb +116 -0
- data/lib/rubocop/cop/style/regexp_literal.rb +10 -21
- data/lib/rubocop/cop/style/rescue_modifier.rb +29 -9
- data/lib/rubocop/cop/style/return_nil.rb +5 -5
- data/lib/rubocop/cop/style/safe_navigation.rb +13 -12
- data/lib/rubocop/cop/style/sample.rb +10 -13
- data/lib/rubocop/cop/style/self_assignment.rb +26 -22
- data/lib/rubocop/cop/style/semicolon.rb +6 -9
- data/lib/rubocop/cop/style/send.rb +2 -2
- data/lib/rubocop/cop/style/signal_exception.rb +21 -19
- data/lib/rubocop/cop/style/single_line_block_params.rb +4 -2
- data/lib/rubocop/cop/style/single_line_methods.rb +17 -16
- data/lib/rubocop/cop/style/slicing_with_range.rb +4 -7
- data/lib/rubocop/cop/style/sole_nested_conditional.rb +66 -0
- data/lib/rubocop/cop/style/special_global_vars.rb +10 -15
- data/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +17 -21
- data/lib/rubocop/cop/style/stderr_puts.rb +4 -6
- data/lib/rubocop/cop/style/string_hash_keys.rb +6 -7
- data/lib/rubocop/cop/style/string_methods.rb +7 -17
- data/lib/rubocop/cop/style/strip.rb +8 -14
- data/lib/rubocop/cop/style/struct_inheritance.rb +3 -6
- data/lib/rubocop/cop/style/symbol_array.rb +5 -16
- data/lib/rubocop/cop/style/symbol_literal.rb +4 -6
- data/lib/rubocop/cop/style/symbol_proc.rb +14 -18
- data/lib/rubocop/cop/style/ternary_parentheses.rb +21 -20
- data/lib/rubocop/cop/style/trailing_body_on_class.rb +3 -6
- data/lib/rubocop/cop/style/trailing_body_on_method_definition.rb +4 -7
- data/lib/rubocop/cop/style/trailing_body_on_module.rb +3 -6
- data/lib/rubocop/cop/style/trailing_comma_in_arguments.rb +2 -5
- data/lib/rubocop/cop/style/trailing_comma_in_array_literal.rb +2 -5
- data/lib/rubocop/cop/style/trailing_comma_in_block_args.rb +7 -6
- data/lib/rubocop/cop/style/trailing_comma_in_hash_literal.rb +2 -5
- data/lib/rubocop/cop/style/trailing_underscore_variable.rb +8 -17
- data/lib/rubocop/cop/style/trivial_accessors.rb +26 -30
- data/lib/rubocop/cop/style/unless_else.rb +5 -8
- data/lib/rubocop/cop/style/unpack_first.rb +4 -8
- data/lib/rubocop/cop/style/variable_interpolation.rb +7 -10
- data/lib/rubocop/cop/style/when_then.rb +4 -6
- data/lib/rubocop/cop/style/while_until_do.rb +6 -16
- data/lib/rubocop/cop/style/while_until_modifier.rb +6 -20
- data/lib/rubocop/cop/style/word_array.rb +5 -23
- data/lib/rubocop/cop/style/yoda_condition.rb +4 -15
- data/lib/rubocop/cop/style/zero_length_predicate.rb +11 -13
- data/lib/rubocop/cop/team.rb +1 -0
- data/lib/rubocop/cop/util.rb +1 -1
- data/lib/rubocop/cop/utils/format_string.rb +3 -5
- data/lib/rubocop/cop/variable_force.rb +2 -0
- data/lib/rubocop/cops_documentation_generator.rb +4 -2
- data/lib/rubocop/core_ext/string.rb +1 -1
- data/lib/rubocop/ext/regexp_node.rb +46 -0
- data/lib/rubocop/file_finder.rb +1 -0
- data/lib/rubocop/formatter/auto_gen_config_formatter.rb +2 -1
- data/lib/rubocop/formatter/html_formatter.rb +2 -0
- data/lib/rubocop/formatter/progress_formatter.rb +2 -1
- data/lib/rubocop/formatter/quiet_formatter.rb +1 -1
- data/lib/rubocop/formatter/simple_text_formatter.rb +36 -6
- data/lib/rubocop/name_similarity.rb +1 -0
- data/lib/rubocop/options.rb +3 -0
- data/lib/rubocop/remote_config.rb +1 -0
- data/lib/rubocop/result_cache.rb +1 -0
- data/lib/rubocop/rspec/cop_helper.rb +4 -1
- data/lib/rubocop/rspec/expect_offense.rb +10 -5
- data/lib/rubocop/rspec/shared_contexts.rb +12 -0
- data/lib/rubocop/runner.rb +1 -0
- data/lib/rubocop/string_interpreter.rb +3 -0
- data/lib/rubocop/target_finder.rb +1 -0
- data/lib/rubocop/target_ruby.rb +6 -0
- data/lib/rubocop/version.rb +2 -1
- data/lib/rubocop/yaml_duplication_checker.rb +1 -0
- metadata +15 -2
@@ -41,9 +41,10 @@ module RuboCop
|
|
41
41
|
#
|
42
42
|
# # good
|
43
43
|
# 7.times{}
|
44
|
-
class SpaceBeforeBlockBraces <
|
44
|
+
class SpaceBeforeBlockBraces < Base
|
45
45
|
include ConfigurableEnforcedStyle
|
46
46
|
include RangeHelp
|
47
|
+
extend AutoCorrector
|
47
48
|
|
48
49
|
MISSING_MSG = 'Space missing to the left of {.'
|
49
50
|
DETECTED_MSG = 'Space detected to the left of {.'
|
@@ -75,29 +76,22 @@ module RuboCop
|
|
75
76
|
end
|
76
77
|
end
|
77
78
|
|
78
|
-
def autocorrect(range)
|
79
|
-
lambda do |corrector|
|
80
|
-
case range.source
|
81
|
-
when /\s/ then corrector.remove(range)
|
82
|
-
else corrector.insert_before(range, ' ')
|
83
|
-
end
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
79
|
private
|
88
80
|
|
89
81
|
def check_empty(left_brace, space_plus_brace, used_style)
|
90
82
|
return if style_for_empty_braces == used_style
|
91
83
|
|
92
|
-
config_to_allow_offenses['EnforcedStyleForEmptyBraces'] =
|
93
|
-
used_style.to_s
|
84
|
+
config_to_allow_offenses['EnforcedStyleForEmptyBraces'] = used_style.to_s
|
94
85
|
|
95
86
|
if style_for_empty_braces == :space
|
96
|
-
add_offense(left_brace,
|
87
|
+
add_offense(left_brace, message: MISSING_MSG) do |corrector|
|
88
|
+
autocorrect(corrector, left_brace)
|
89
|
+
end
|
97
90
|
else
|
98
|
-
space = range_between(space_plus_brace.begin_pos,
|
99
|
-
|
100
|
-
|
91
|
+
space = range_between(space_plus_brace.begin_pos, left_brace.begin_pos)
|
92
|
+
add_offense(space, message: DETECTED_MSG) do |corrector|
|
93
|
+
autocorrect(corrector, space)
|
94
|
+
end
|
101
95
|
end
|
102
96
|
end
|
103
97
|
|
@@ -110,16 +104,23 @@ module RuboCop
|
|
110
104
|
end
|
111
105
|
|
112
106
|
def space_missing(left_brace)
|
113
|
-
add_offense(left_brace,
|
114
|
-
|
107
|
+
add_offense(left_brace, message: MISSING_MSG) do |corrector|
|
108
|
+
autocorrect(corrector, left_brace)
|
115
109
|
end
|
116
110
|
end
|
117
111
|
|
118
112
|
def space_detected(left_brace, space_plus_brace)
|
119
|
-
space = range_between(space_plus_brace.begin_pos,
|
120
|
-
|
121
|
-
add_offense(space,
|
122
|
-
|
113
|
+
space = range_between(space_plus_brace.begin_pos, left_brace.begin_pos)
|
114
|
+
|
115
|
+
add_offense(space, message: DETECTED_MSG) do |corrector|
|
116
|
+
autocorrect(corrector, space)
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
def autocorrect(corrector, range)
|
121
|
+
case range.source
|
122
|
+
when /\s/ then corrector.remove(range)
|
123
|
+
else corrector.insert_before(range, ' ')
|
123
124
|
end
|
124
125
|
end
|
125
126
|
|
@@ -15,12 +15,10 @@ module RuboCop
|
|
15
15
|
# [1, 2, 3]
|
16
16
|
# a(1, 2)
|
17
17
|
# each { |a, b| }
|
18
|
-
|
18
|
+
#
|
19
|
+
class SpaceBeforeComma < Base
|
19
20
|
include SpaceBeforePunctuation
|
20
|
-
|
21
|
-
def autocorrect(space)
|
22
|
-
PunctuationCorrector.remove_space(space)
|
23
|
-
end
|
21
|
+
extend AutoCorrector
|
24
22
|
|
25
23
|
def kind(token)
|
26
24
|
'comma' if token.comma?
|
@@ -12,20 +12,23 @@ module RuboCop
|
|
12
12
|
#
|
13
13
|
# # good
|
14
14
|
# 1 + 1 # this operation does ...
|
15
|
-
class SpaceBeforeComment <
|
15
|
+
class SpaceBeforeComment < Base
|
16
|
+
extend AutoCorrector
|
17
|
+
|
16
18
|
MSG = 'Put a space before an end-of-line comment.'
|
17
19
|
|
18
|
-
def
|
20
|
+
def on_new_investigation
|
19
21
|
processed_source.tokens.each_cons(2) do |token1, token2|
|
20
22
|
next unless token2.comment?
|
21
23
|
next unless token1.line == token2.line
|
24
|
+
next unless token1.pos.end == token2.pos.begin
|
22
25
|
|
23
|
-
|
24
|
-
end
|
25
|
-
end
|
26
|
+
range = token2.pos
|
26
27
|
|
27
|
-
|
28
|
-
|
28
|
+
add_offense(range) do |corrector|
|
29
|
+
corrector.insert_before(range, ' ')
|
30
|
+
end
|
31
|
+
end
|
29
32
|
end
|
30
33
|
end
|
31
34
|
end
|
@@ -21,31 +21,31 @@ module RuboCop
|
|
21
21
|
# something y, z
|
22
22
|
# something 'hello'
|
23
23
|
#
|
24
|
-
class SpaceBeforeFirstArg <
|
24
|
+
class SpaceBeforeFirstArg < Base
|
25
25
|
include PrecedingFollowingAlignment
|
26
26
|
include RangeHelp
|
27
|
+
extend AutoCorrector
|
27
28
|
|
28
29
|
MSG = 'Put one space between the method name and ' \
|
29
30
|
'the first argument.'
|
30
31
|
|
31
32
|
def on_send(node)
|
32
33
|
return unless regular_method_call_with_arguments?(node)
|
33
|
-
return unless expect_params_after_method_name?(node)
|
34
34
|
|
35
35
|
first_arg = node.first_argument.source_range
|
36
36
|
first_arg_with_space = range_with_surrounding_space(range: first_arg,
|
37
37
|
side: :left)
|
38
38
|
space = range_between(first_arg_with_space.begin_pos,
|
39
39
|
first_arg.begin_pos)
|
40
|
+
return if space.length == 1
|
41
|
+
return unless expect_params_after_method_name?(node)
|
40
42
|
|
41
|
-
add_offense(space
|
43
|
+
add_offense(space) do |corrector|
|
44
|
+
corrector.replace(space, ' ')
|
45
|
+
end
|
42
46
|
end
|
43
47
|
alias on_csend on_send
|
44
48
|
|
45
|
-
def autocorrect(range)
|
46
|
-
->(corrector) { corrector.replace(range, ' ') }
|
47
|
-
end
|
48
|
-
|
49
49
|
private
|
50
50
|
|
51
51
|
def regular_method_call_with_arguments?(node)
|
@@ -11,12 +11,9 @@ module RuboCop
|
|
11
11
|
#
|
12
12
|
# # good
|
13
13
|
# x = 1; y = 2
|
14
|
-
class SpaceBeforeSemicolon <
|
14
|
+
class SpaceBeforeSemicolon < Base
|
15
15
|
include SpaceBeforePunctuation
|
16
|
-
|
17
|
-
def autocorrect(space)
|
18
|
-
PunctuationCorrector.remove_space(space)
|
19
|
-
end
|
16
|
+
extend AutoCorrector
|
20
17
|
|
21
18
|
def kind(token)
|
22
19
|
'semicolon' if token.semicolon?
|
@@ -19,9 +19,10 @@ module RuboCop
|
|
19
19
|
#
|
20
20
|
# # good
|
21
21
|
# a = -> (x, y) { x + y }
|
22
|
-
class SpaceInLambdaLiteral <
|
22
|
+
class SpaceInLambdaLiteral < Base
|
23
23
|
include ConfigurableEnforcedStyle
|
24
24
|
include RangeHelp
|
25
|
+
extend AutoCorrector
|
25
26
|
|
26
27
|
MSG_REQUIRE_SPACE = 'Use a space between `->` and ' \
|
27
28
|
'`(` in lambda literals.'
|
@@ -31,24 +32,15 @@ module RuboCop
|
|
31
32
|
def on_send(node)
|
32
33
|
return unless arrow_lambda_with_args?(node)
|
33
34
|
|
35
|
+
lambda_node = range_of_offense(node)
|
36
|
+
|
34
37
|
if style == :require_space && !space_after_arrow?(node)
|
35
|
-
add_offense(
|
36
|
-
|
37
|
-
|
38
|
+
add_offense(lambda_node, message: MSG_REQUIRE_SPACE) do |corrector|
|
39
|
+
corrector.insert_before(node.parent.children[1], ' ')
|
40
|
+
end
|
38
41
|
elsif style == :require_no_space && space_after_arrow?(node)
|
39
|
-
add_offense(
|
40
|
-
|
41
|
-
message: MSG_REQUIRE_NO_SPACE)
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
def autocorrect(lambda_node)
|
46
|
-
children = lambda_node.parent.children
|
47
|
-
lambda do |corrector|
|
48
|
-
if style == :require_space
|
49
|
-
corrector.insert_before(children[1], ' ')
|
50
|
-
else
|
51
|
-
corrector.remove(space_after_arrow(lambda_node))
|
42
|
+
add_offense(lambda_node, message: MSG_REQUIRE_NO_SPACE) do |corrector|
|
43
|
+
corrector.remove(space_after_arrow(node))
|
52
44
|
end
|
53
45
|
end
|
54
46
|
end
|
@@ -67,9 +67,10 @@ module RuboCop
|
|
67
67
|
# foo = [ ]
|
68
68
|
# bar = [ ]
|
69
69
|
#
|
70
|
-
class SpaceInsideArrayLiteralBrackets <
|
70
|
+
class SpaceInsideArrayLiteralBrackets < Base
|
71
71
|
include SurroundingSpace
|
72
72
|
include ConfigurableEnforcedStyle
|
73
|
+
extend AutoCorrector
|
73
74
|
|
74
75
|
MSG = '%<command>s space inside array brackets.'
|
75
76
|
EMPTY_MSG = '%<command>s space inside empty array brackets.'
|
@@ -86,26 +87,22 @@ module RuboCop
|
|
86
87
|
issue_offenses(node, left, right, start_ok, end_ok)
|
87
88
|
end
|
88
89
|
|
89
|
-
|
90
|
+
private
|
91
|
+
|
92
|
+
def autocorrect(corrector, node)
|
90
93
|
left, right = array_brackets(node)
|
91
94
|
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
SpaceCorrector.add_space(processed_source, corrector, left, right)
|
101
|
-
else
|
102
|
-
compact_corrections(corrector, node, left, right)
|
103
|
-
end
|
95
|
+
if empty_brackets?(left, right)
|
96
|
+
SpaceCorrector.empty_corrections(processed_source, corrector, empty_config, left, right)
|
97
|
+
elsif style == :no_space
|
98
|
+
SpaceCorrector.remove_space(processed_source, corrector, left, right)
|
99
|
+
elsif style == :space
|
100
|
+
SpaceCorrector.add_space(processed_source, corrector, left, right)
|
101
|
+
else
|
102
|
+
compact_corrections(corrector, node, left, right)
|
104
103
|
end
|
105
104
|
end
|
106
105
|
|
107
|
-
private
|
108
|
-
|
109
106
|
def array_brackets(node)
|
110
107
|
[left_array_bracket(node), right_array_bracket(node)]
|
111
108
|
end
|
@@ -12,9 +12,10 @@ module RuboCop
|
|
12
12
|
# %w(foo bar baz)
|
13
13
|
# # good
|
14
14
|
# %i(foo bar baz)
|
15
|
-
class SpaceInsideArrayPercentLiteral <
|
15
|
+
class SpaceInsideArrayPercentLiteral < Base
|
16
16
|
include MatchRange
|
17
17
|
include PercentLiteral
|
18
|
+
extend AutoCorrector
|
18
19
|
|
19
20
|
MSG = 'Use only a single space inside array percent literal.'
|
20
21
|
MULTIPLE_SPACES_BETWEEN_ITEMS_REGEX =
|
@@ -26,13 +27,7 @@ module RuboCop
|
|
26
27
|
|
27
28
|
def on_percent_literal(node)
|
28
29
|
each_unnecessary_space_match(node) do |range|
|
29
|
-
add_offense(
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
def autocorrect(node)
|
34
|
-
lambda do |corrector|
|
35
|
-
each_unnecessary_space_match(node) do |range|
|
30
|
+
add_offense(range) do |corrector|
|
36
31
|
corrector.replace(range, ' ')
|
37
32
|
end
|
38
33
|
end
|
@@ -76,10 +76,11 @@ module RuboCop
|
|
76
76
|
# # good
|
77
77
|
# [1, 2, 3].each {|n| n * 2 }
|
78
78
|
#
|
79
|
-
class SpaceInsideBlockBraces <
|
79
|
+
class SpaceInsideBlockBraces < Base
|
80
80
|
include ConfigurableEnforcedStyle
|
81
81
|
include SurroundingSpace
|
82
82
|
include RangeHelp
|
83
|
+
extend AutoCorrector
|
83
84
|
|
84
85
|
def on_block(node)
|
85
86
|
return if node.keywords?
|
@@ -97,17 +98,6 @@ module RuboCop
|
|
97
98
|
check_inside(node, left_brace, right_brace)
|
98
99
|
end
|
99
100
|
|
100
|
-
def autocorrect(range)
|
101
|
-
lambda do |corrector|
|
102
|
-
case range.source
|
103
|
-
when /\s/ then corrector.remove(range)
|
104
|
-
when '{}' then corrector.replace(range, '{ }')
|
105
|
-
when '{|' then corrector.replace(range, '{ |')
|
106
|
-
else corrector.insert_before(range, ' ')
|
107
|
-
end
|
108
|
-
end
|
109
|
-
end
|
110
|
-
|
111
101
|
private
|
112
102
|
|
113
103
|
def check_inside(node, left_brace, right_brace)
|
@@ -216,7 +206,9 @@ module RuboCop
|
|
216
206
|
|
217
207
|
def no_space(begin_pos, end_pos, msg)
|
218
208
|
if style == :space
|
219
|
-
|
209
|
+
return unless opposite_style_detected
|
210
|
+
|
211
|
+
offense(begin_pos, end_pos, msg)
|
220
212
|
else
|
221
213
|
correct_style_detected
|
222
214
|
end
|
@@ -224,15 +216,24 @@ module RuboCop
|
|
224
216
|
|
225
217
|
def space(begin_pos, end_pos, msg)
|
226
218
|
if style == :no_space
|
227
|
-
|
219
|
+
return unless opposite_style_detected
|
220
|
+
|
221
|
+
offense(begin_pos, end_pos, msg)
|
228
222
|
else
|
229
223
|
correct_style_detected
|
230
224
|
end
|
231
225
|
end
|
232
226
|
|
233
|
-
def offense(begin_pos, end_pos, msg
|
227
|
+
def offense(begin_pos, end_pos, msg)
|
234
228
|
range = range_between(begin_pos, end_pos)
|
235
|
-
add_offense(range,
|
229
|
+
add_offense(range, message: msg) do |corrector|
|
230
|
+
case range.source
|
231
|
+
when /\s/ then corrector.remove(range)
|
232
|
+
when '{}' then corrector.replace(range, '{ }')
|
233
|
+
when '{|' then corrector.replace(range, '{ |')
|
234
|
+
else corrector.insert_before(range, ' ')
|
235
|
+
end
|
236
|
+
end
|
236
237
|
end
|
237
238
|
|
238
239
|
def style_for_empty_braces
|
@@ -63,10 +63,11 @@ module RuboCop
|
|
63
63
|
# foo = { }
|
64
64
|
# foo = { }
|
65
65
|
#
|
66
|
-
class SpaceInsideHashLiteralBraces <
|
66
|
+
class SpaceInsideHashLiteralBraces < Base
|
67
67
|
include SurroundingSpace
|
68
68
|
include ConfigurableEnforcedStyle
|
69
69
|
include RangeHelp
|
70
|
+
extend AutoCorrector
|
70
71
|
|
71
72
|
MSG = 'Space inside %<problem>s.'
|
72
73
|
|
@@ -81,16 +82,6 @@ module RuboCop
|
|
81
82
|
end
|
82
83
|
end
|
83
84
|
|
84
|
-
def autocorrect(range)
|
85
|
-
lambda do |corrector|
|
86
|
-
case range.source
|
87
|
-
when /\s/ then corrector.remove(range)
|
88
|
-
when '{' then corrector.insert_after(range, ' ')
|
89
|
-
else corrector.insert_before(range, ' ')
|
90
|
-
end
|
91
|
-
end
|
92
|
-
end
|
93
|
-
|
94
85
|
private
|
95
86
|
|
96
87
|
def hash_literal_with_braces(node)
|
@@ -137,14 +128,20 @@ module RuboCop
|
|
137
128
|
expect_space, is_empty_braces)
|
138
129
|
brace = (token1.text == '{' ? token1 : token2).pos
|
139
130
|
range = expect_space ? brace : space_range(brace)
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
) do
|
145
|
-
|
146
|
-
|
147
|
-
|
131
|
+
|
132
|
+
style = expect_space ? :no_space : :space
|
133
|
+
return unless ambiguous_or_unexpected_style_detected(style, token1.text == token2.text)
|
134
|
+
|
135
|
+
add_offense(range, message: message(brace, is_empty_braces, expect_space)) do |corrector|
|
136
|
+
autocorrect(corrector, range)
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
def autocorrect(corrector, range)
|
141
|
+
case range.source
|
142
|
+
when /\s/ then corrector.remove(range)
|
143
|
+
when '{' then corrector.insert_after(range, ' ')
|
144
|
+
else corrector.insert_before(range, ' ')
|
148
145
|
end
|
149
146
|
end
|
150
147
|
|
@@ -31,34 +31,29 @@ module RuboCop
|
|
31
31
|
# g = ( a + 3 )
|
32
32
|
# y()
|
33
33
|
#
|
34
|
-
class SpaceInsideParens <
|
34
|
+
class SpaceInsideParens < Base
|
35
35
|
include SurroundingSpace
|
36
36
|
include RangeHelp
|
37
37
|
include ConfigurableEnforcedStyle
|
38
|
+
extend AutoCorrector
|
38
39
|
|
39
40
|
MSG = 'Space inside parentheses detected.'
|
40
41
|
MSG_SPACE = 'No space inside parentheses detected.'
|
41
42
|
|
42
|
-
def
|
43
|
+
def on_new_investigation
|
43
44
|
@processed_source = processed_source
|
44
45
|
|
45
46
|
if style == :space
|
46
47
|
each_missing_space(processed_source.tokens) do |range|
|
47
|
-
add_offense(range,
|
48
|
+
add_offense(range, message: MSG_SPACE) do |corrector|
|
49
|
+
corrector.insert_before(range, ' ')
|
50
|
+
end
|
48
51
|
end
|
49
52
|
else
|
50
53
|
each_extraneous_space(processed_source.tokens) do |range|
|
51
|
-
add_offense(range
|
52
|
-
|
53
|
-
|
54
|
-
end
|
55
|
-
|
56
|
-
def autocorrect(range)
|
57
|
-
lambda do |corrector|
|
58
|
-
if style == :space
|
59
|
-
corrector.insert_before(range, ' ')
|
60
|
-
else
|
61
|
-
corrector.remove(range)
|
54
|
+
add_offense(range) do |corrector|
|
55
|
+
corrector.remove(range)
|
56
|
+
end
|
62
57
|
end
|
63
58
|
end
|
64
59
|
end
|