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
@@ -29,8 +29,9 @@ module RuboCop
|
|
29
29
|
#
|
30
30
|
# def b
|
31
31
|
# end
|
32
|
-
class EmptyLineBetweenDefs <
|
32
|
+
class EmptyLineBetweenDefs < Base
|
33
33
|
include RangeHelp
|
34
|
+
extend AutoCorrector
|
34
35
|
|
35
36
|
MSG = 'Use empty lines between method definitions.'
|
36
37
|
|
@@ -57,23 +58,26 @@ module RuboCop
|
|
57
58
|
cop_config['AllowAdjacentOneLineDefs']
|
58
59
|
|
59
60
|
location = nodes.last.loc.keyword.join(nodes.last.loc.name)
|
60
|
-
add_offense(
|
61
|
+
add_offense(location) do |corrector|
|
62
|
+
autocorrect(corrector, *nodes)
|
63
|
+
end
|
61
64
|
end
|
62
65
|
|
63
|
-
def autocorrect(node)
|
64
|
-
prev_def = prev_node(node)
|
65
|
-
|
66
|
+
def autocorrect(corrector, prev_def, node)
|
66
67
|
# finds position of first newline
|
67
68
|
end_pos = prev_def.loc.end.end_pos
|
68
69
|
source_buffer = prev_def.loc.end.source_buffer
|
69
70
|
newline_pos = source_buffer.source.index("\n", end_pos)
|
70
71
|
|
72
|
+
# Handle the case when multiple one-liners are on the same line.
|
73
|
+
newline_pos = end_pos + 1 if newline_pos > node.source_range.begin_pos
|
74
|
+
|
71
75
|
count = blank_lines_count_between(prev_def, node)
|
72
76
|
|
73
77
|
if count > maximum_empty_lines
|
74
|
-
autocorrect_remove_lines(newline_pos, count)
|
78
|
+
autocorrect_remove_lines(corrector, newline_pos, count)
|
75
79
|
else
|
76
|
-
autocorrect_insert_lines(newline_pos, count)
|
80
|
+
autocorrect_insert_lines(corrector, newline_pos, count)
|
77
81
|
end
|
78
82
|
end
|
79
83
|
|
@@ -111,16 +115,12 @@ module RuboCop
|
|
111
115
|
Array(cop_config['NumberOfEmptyLines']).last
|
112
116
|
end
|
113
117
|
|
114
|
-
def prev_node(node)
|
115
|
-
return nil unless node.sibling_index.positive?
|
116
|
-
|
117
|
-
node.parent.children[node.sibling_index - 1]
|
118
|
-
end
|
119
|
-
|
120
118
|
def lines_between_defs(first_def_node, second_def_node)
|
121
|
-
|
119
|
+
begin_line_num = def_end(first_def_node)
|
120
|
+
end_line_num = def_start(second_def_node) - 2
|
121
|
+
return [] if end_line_num.negative?
|
122
122
|
|
123
|
-
processed_source.lines[
|
123
|
+
processed_source.lines[begin_line_num..end_line_num]
|
124
124
|
end
|
125
125
|
|
126
126
|
def def_start(node)
|
@@ -131,20 +131,18 @@ module RuboCop
|
|
131
131
|
node.loc.end.line
|
132
132
|
end
|
133
133
|
|
134
|
-
def autocorrect_remove_lines(newline_pos, count)
|
134
|
+
def autocorrect_remove_lines(corrector, newline_pos, count)
|
135
135
|
difference = count - maximum_empty_lines
|
136
136
|
range_to_remove = range_between(newline_pos, newline_pos + difference)
|
137
|
-
|
138
|
-
|
139
|
-
end
|
137
|
+
|
138
|
+
corrector.remove(range_to_remove)
|
140
139
|
end
|
141
140
|
|
142
|
-
def autocorrect_insert_lines(newline_pos, count)
|
141
|
+
def autocorrect_insert_lines(corrector, newline_pos, count)
|
143
142
|
difference = minimum_empty_lines - count
|
144
143
|
where_to_insert = range_between(newline_pos, newline_pos + 1)
|
145
|
-
|
146
|
-
|
147
|
-
end
|
144
|
+
|
145
|
+
corrector.insert_after(where_to_insert, "\n" * difference)
|
148
146
|
end
|
149
147
|
end
|
150
148
|
end
|
@@ -18,13 +18,14 @@ module RuboCop
|
|
18
18
|
# # one empty line
|
19
19
|
# some_method
|
20
20
|
#
|
21
|
-
class EmptyLines <
|
21
|
+
class EmptyLines < Base
|
22
22
|
include RangeHelp
|
23
|
+
extend AutoCorrector
|
23
24
|
|
24
25
|
MSG = 'Extra blank line detected.'
|
25
26
|
LINE_OFFSET = 2
|
26
27
|
|
27
|
-
def
|
28
|
+
def on_new_investigation
|
28
29
|
return if processed_source.tokens.empty?
|
29
30
|
|
30
31
|
lines = Set.new
|
@@ -33,14 +34,12 @@ module RuboCop
|
|
33
34
|
end
|
34
35
|
|
35
36
|
each_extra_empty_line(lines.sort) do |range|
|
36
|
-
add_offense(range
|
37
|
+
add_offense(range) do |corrector|
|
38
|
+
corrector.remove(range)
|
39
|
+
end
|
37
40
|
end
|
38
41
|
end
|
39
42
|
|
40
|
-
def autocorrect(range)
|
41
|
-
->(corrector) { corrector.remove(range) }
|
42
|
-
end
|
43
|
-
|
44
43
|
private
|
45
44
|
|
46
45
|
def each_extra_empty_line(lines)
|
@@ -40,9 +40,10 @@ module RuboCop
|
|
40
40
|
# def baz; end
|
41
41
|
# end
|
42
42
|
#
|
43
|
-
class EmptyLinesAroundAccessModifier <
|
43
|
+
class EmptyLinesAroundAccessModifier < Base
|
44
44
|
include ConfigurableEnforcedStyle
|
45
45
|
include RangeHelp
|
46
|
+
extend AutoCorrector
|
46
47
|
|
47
48
|
MSG_AFTER = 'Keep a blank line after `%<modifier>s`.'
|
48
49
|
MSG_BEFORE_AND_AFTER = 'Keep a blank line before and after ' \
|
@@ -92,11 +93,8 @@ module RuboCop
|
|
92
93
|
return if allowed_only_before_style?(node)
|
93
94
|
end
|
94
95
|
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
def autocorrect(node)
|
99
|
-
lambda do |corrector|
|
96
|
+
message = message(node)
|
97
|
+
add_offense(node, message: message) do |corrector|
|
100
98
|
line = range_by_whole_lines(node.source_range)
|
101
99
|
|
102
100
|
corrector.insert_before(line, "\n") unless previous_line_empty?(node.first_line)
|
@@ -38,23 +38,22 @@ module RuboCop
|
|
38
38
|
# x: y
|
39
39
|
# )
|
40
40
|
#
|
41
|
-
class EmptyLinesAroundArguments <
|
41
|
+
class EmptyLinesAroundArguments < Base
|
42
42
|
include RangeHelp
|
43
|
+
extend AutoCorrector
|
43
44
|
|
44
45
|
MSG = 'Empty line detected around arguments.'
|
45
46
|
|
46
47
|
def on_send(node)
|
47
48
|
return if node.single_line? || node.arguments.empty?
|
48
49
|
|
49
|
-
extra_lines(node)
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
def autocorrect(node)
|
54
|
-
lambda do |corrector|
|
55
|
-
extra_lines(node) { |range| corrector.remove(range) }
|
50
|
+
extra_lines(node) do |range|
|
51
|
+
add_offense(range) do |corrector|
|
52
|
+
corrector.remove(range)
|
53
|
+
end
|
56
54
|
end
|
57
55
|
end
|
56
|
+
alias on_csend on_send
|
58
57
|
|
59
58
|
private
|
60
59
|
|
@@ -60,9 +60,10 @@ module RuboCop
|
|
60
60
|
# def do_something
|
61
61
|
# end
|
62
62
|
#
|
63
|
-
class EmptyLinesAroundAttributeAccessor <
|
63
|
+
class EmptyLinesAroundAttributeAccessor < Base
|
64
64
|
include RangeHelp
|
65
65
|
include AllowedMethods
|
66
|
+
extend AutoCorrector
|
66
67
|
|
67
68
|
MSG = 'Add an empty line after attribute accessor.'
|
68
69
|
|
@@ -73,11 +74,7 @@ module RuboCop
|
|
73
74
|
next_line_node = next_line_node(node)
|
74
75
|
return unless require_empty_line?(next_line_node)
|
75
76
|
|
76
|
-
add_offense(node)
|
77
|
-
end
|
78
|
-
|
79
|
-
def autocorrect(node)
|
80
|
-
lambda do |corrector|
|
77
|
+
add_offense(node) do |corrector|
|
81
78
|
range = range_by_whole_lines(node.source_range)
|
82
79
|
|
83
80
|
corrector.insert_after(range, "\n")
|
@@ -21,8 +21,9 @@ module RuboCop
|
|
21
21
|
# # ...
|
22
22
|
#
|
23
23
|
# end
|
24
|
-
class EmptyLinesAroundBeginBody <
|
24
|
+
class EmptyLinesAroundBeginBody < Base
|
25
25
|
include EmptyLinesAroundBody
|
26
|
+
extend AutoCorrector
|
26
27
|
|
27
28
|
KIND = '`begin`'
|
28
29
|
|
@@ -30,10 +31,6 @@ module RuboCop
|
|
30
31
|
check(node, nil)
|
31
32
|
end
|
32
33
|
|
33
|
-
def autocorrect(node)
|
34
|
-
EmptyLineCorrector.correct(node)
|
35
|
-
end
|
36
|
-
|
37
34
|
private
|
38
35
|
|
39
36
|
def style
|
@@ -21,8 +21,9 @@ module RuboCop
|
|
21
21
|
# foo do |bar|
|
22
22
|
# # ...
|
23
23
|
# end
|
24
|
-
class EmptyLinesAroundBlockBody <
|
24
|
+
class EmptyLinesAroundBlockBody < Base
|
25
25
|
include EmptyLinesAroundBody
|
26
|
+
extend AutoCorrector
|
26
27
|
|
27
28
|
KIND = 'block'
|
28
29
|
|
@@ -31,10 +32,6 @@ module RuboCop
|
|
31
32
|
|
32
33
|
check(node, node.body, adjusted_first_line: first_line)
|
33
34
|
end
|
34
|
-
|
35
|
-
def autocorrect(node)
|
36
|
-
EmptyLineCorrector.correct(node)
|
37
|
-
end
|
38
35
|
end
|
39
36
|
end
|
40
37
|
end
|
@@ -64,8 +64,9 @@ module RuboCop
|
|
64
64
|
# # ...
|
65
65
|
# end
|
66
66
|
# end
|
67
|
-
class EmptyLinesAroundClassBody <
|
67
|
+
class EmptyLinesAroundClassBody < Base
|
68
68
|
include EmptyLinesAroundBody
|
69
|
+
extend AutoCorrector
|
69
70
|
|
70
71
|
KIND = 'class'
|
71
72
|
|
@@ -78,10 +79,6 @@ module RuboCop
|
|
78
79
|
def on_sclass(node)
|
79
80
|
check(node, node.body)
|
80
81
|
end
|
81
|
-
|
82
|
-
def autocorrect(node)
|
83
|
-
EmptyLineCorrector.correct(node)
|
84
|
-
end
|
85
82
|
end
|
86
83
|
end
|
87
84
|
end
|
@@ -58,8 +58,9 @@ module RuboCop
|
|
58
58
|
#
|
59
59
|
# do_something2
|
60
60
|
# end
|
61
|
-
class EmptyLinesAroundExceptionHandlingKeywords <
|
61
|
+
class EmptyLinesAroundExceptionHandlingKeywords < Base
|
62
62
|
include EmptyLinesAroundBody
|
63
|
+
extend AutoCorrector
|
63
64
|
|
64
65
|
MSG = 'Extra empty line detected %<location>s the `%<keyword>s`.'
|
65
66
|
|
@@ -73,10 +74,6 @@ module RuboCop
|
|
73
74
|
check_body(body)
|
74
75
|
end
|
75
76
|
|
76
|
-
def autocorrect(node)
|
77
|
-
EmptyLineCorrector.correct(node)
|
78
|
-
end
|
79
|
-
|
80
77
|
private
|
81
78
|
|
82
79
|
def check_body(node)
|
@@ -20,8 +20,9 @@ module RuboCop
|
|
20
20
|
# # ...
|
21
21
|
#
|
22
22
|
# end
|
23
|
-
class EmptyLinesAroundMethodBody <
|
23
|
+
class EmptyLinesAroundMethodBody < Base
|
24
24
|
include EmptyLinesAroundBody
|
25
|
+
extend AutoCorrector
|
25
26
|
|
26
27
|
KIND = 'method'
|
27
28
|
|
@@ -30,10 +31,6 @@ module RuboCop
|
|
30
31
|
end
|
31
32
|
alias on_defs on_def
|
32
33
|
|
33
|
-
def autocorrect(node)
|
34
|
-
EmptyLineCorrector.correct(node)
|
35
|
-
end
|
36
|
-
|
37
34
|
private
|
38
35
|
|
39
36
|
def style
|
@@ -44,18 +44,15 @@ module RuboCop
|
|
44
44
|
# # ...
|
45
45
|
# end
|
46
46
|
# end
|
47
|
-
class EmptyLinesAroundModuleBody <
|
47
|
+
class EmptyLinesAroundModuleBody < Base
|
48
48
|
include EmptyLinesAroundBody
|
49
|
+
extend AutoCorrector
|
49
50
|
|
50
51
|
KIND = 'module'
|
51
52
|
|
52
53
|
def on_module(node)
|
53
54
|
check(node, node.body)
|
54
55
|
end
|
55
|
-
|
56
|
-
def autocorrect(node)
|
57
|
-
EmptyLineCorrector.correct(node)
|
58
|
-
end
|
59
56
|
end
|
60
57
|
end
|
61
58
|
end
|
@@ -67,10 +67,11 @@ module RuboCop
|
|
67
67
|
# variable =
|
68
68
|
# if true
|
69
69
|
# end
|
70
|
-
class EndAlignment <
|
70
|
+
class EndAlignment < Base
|
71
71
|
include CheckAssignment
|
72
72
|
include EndKeywordAlignment
|
73
73
|
include RangeHelp
|
74
|
+
extend AutoCorrector
|
74
75
|
|
75
76
|
def on_class(node)
|
76
77
|
check_other_alignment(node)
|
@@ -100,14 +101,12 @@ module RuboCop
|
|
100
101
|
end
|
101
102
|
end
|
102
103
|
|
103
|
-
def autocorrect(node)
|
104
|
-
AlignmentCorrector.align_end(processed_source,
|
105
|
-
node,
|
106
|
-
alignment_node(node))
|
107
|
-
end
|
108
|
-
|
109
104
|
private
|
110
105
|
|
106
|
+
def autocorrect(corrector, node)
|
107
|
+
AlignmentCorrector.align_end(corrector, processed_source, node, alignment_node(node))
|
108
|
+
end
|
109
|
+
|
111
110
|
def check_assignment(node, rhs)
|
112
111
|
# If there are method calls chained to the right hand side of the
|
113
112
|
# assignment, we let rhs be the receiver of those method calls before
|
@@ -17,8 +17,9 @@ module RuboCop
|
|
17
17
|
# :a,
|
18
18
|
# :b]
|
19
19
|
#
|
20
|
-
class FirstArrayElementLineBreak <
|
20
|
+
class FirstArrayElementLineBreak < Base
|
21
21
|
include FirstElementLineBreak
|
22
|
+
extend AutoCorrector
|
22
23
|
|
23
24
|
MSG = 'Add a line break before the first element of a ' \
|
24
25
|
'multi-line array.'
|
@@ -29,10 +30,6 @@ module RuboCop
|
|
29
30
|
check_children_line_break(node, node.children)
|
30
31
|
end
|
31
32
|
|
32
|
-
def autocorrect(node)
|
33
|
-
EmptyLineCorrector.insert_before(node)
|
34
|
-
end
|
35
|
-
|
36
33
|
private
|
37
34
|
|
38
35
|
def assignment_on_same_line?(node)
|
@@ -16,8 +16,9 @@ module RuboCop
|
|
16
16
|
# {
|
17
17
|
# a: 1,
|
18
18
|
# b: 2 }
|
19
|
-
class FirstHashElementLineBreak <
|
19
|
+
class FirstHashElementLineBreak < Base
|
20
20
|
include FirstElementLineBreak
|
21
|
+
extend AutoCorrector
|
21
22
|
|
22
23
|
MSG = 'Add a line break before the first element of a ' \
|
23
24
|
'multi-line hash.'
|
@@ -27,10 +28,6 @@ module RuboCop
|
|
27
28
|
# If it doesn't, Style/FirstMethodArgumentLineBreak will handle it
|
28
29
|
check_children_line_break(node, node.children) if node.loc.begin
|
29
30
|
end
|
30
|
-
|
31
|
-
def autocorrect(node)
|
32
|
-
EmptyLineCorrector.insert_before(node)
|
33
|
-
end
|
34
31
|
end
|
35
32
|
end
|
36
33
|
end
|
@@ -20,8 +20,9 @@ module RuboCop
|
|
20
20
|
# # ignored
|
21
21
|
# method foo, bar,
|
22
22
|
# baz
|
23
|
-
class FirstMethodArgumentLineBreak <
|
23
|
+
class FirstMethodArgumentLineBreak < Base
|
24
24
|
include FirstElementLineBreak
|
25
|
+
extend AutoCorrector
|
25
26
|
|
26
27
|
MSG = 'Add a line break before the first argument of a ' \
|
27
28
|
'multi-line method argument list.'
|
@@ -35,18 +36,13 @@ module RuboCop
|
|
35
36
|
#
|
36
37
|
# ...then each key/value pair is treated as a method 'argument'
|
37
38
|
# when determining where line breaks should appear.
|
38
|
-
|
39
|
-
|
40
|
-
end
|
39
|
+
last_arg = args.last
|
40
|
+
args.concat(args.pop.children) if last_arg&.hash_type? && !last_arg&.braces?
|
41
41
|
|
42
42
|
check_method_line_break(node, args)
|
43
43
|
end
|
44
44
|
alias on_csend on_send
|
45
45
|
alias on_super on_send
|
46
|
-
|
47
|
-
def autocorrect(node)
|
48
|
-
EmptyLineCorrector.insert_before(node)
|
49
|
-
end
|
50
46
|
end
|
51
47
|
end
|
52
48
|
end
|