rubocop 0.48.1 → 0.49.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +4 -3
- data/config/default.yml +397 -357
- data/config/disabled.yml +29 -29
- data/config/enabled.yml +366 -326
- data/lib/rubocop.rb +85 -70
- data/lib/rubocop/ast/builder.rb +4 -1
- data/lib/rubocop/ast/node.rb +2 -2
- data/lib/rubocop/ast/node/and_node.rb +1 -1
- data/lib/rubocop/ast/node/args_node.rb +24 -0
- data/lib/rubocop/ast/node/block_node.rb +107 -0
- data/lib/rubocop/ast/node/case_node.rb +1 -1
- data/lib/rubocop/ast/node/ensure_node.rb +1 -1
- data/lib/rubocop/ast/node/for_node.rb +1 -1
- data/lib/rubocop/ast/node/if_node.rb +1 -1
- data/lib/rubocop/ast/node/mixin/parameterized_node.rb +74 -0
- data/lib/rubocop/ast/node/or_node.rb +1 -1
- data/lib/rubocop/ast/node/pair_node.rb +1 -1
- data/lib/rubocop/ast/node/resbody_node.rb +1 -1
- data/lib/rubocop/ast/node/send_node.rb +36 -57
- data/lib/rubocop/ast/node/super_node.rb +42 -0
- data/lib/rubocop/ast/node/until_node.rb +1 -1
- data/lib/rubocop/ast/node/when_node.rb +1 -1
- data/lib/rubocop/ast/node/while_node.rb +1 -1
- data/lib/rubocop/cli.rb +10 -0
- data/lib/rubocop/config.rb +23 -7
- data/lib/rubocop/config_loader.rb +19 -3
- data/lib/rubocop/cop/badge.rb +1 -1
- data/lib/rubocop/cop/bundler/duplicated_gem.rb +2 -2
- data/lib/rubocop/cop/commissioner.rb +1 -1
- data/lib/rubocop/cop/cop.rb +10 -0
- data/lib/rubocop/cop/{style → layout}/access_modifier_indentation.rb +33 -3
- data/lib/rubocop/cop/{style → layout}/align_array.rb +16 -1
- data/lib/rubocop/cop/{style → layout}/align_hash.rb +1 -1
- data/lib/rubocop/cop/{style → layout}/align_parameters.rb +29 -1
- data/lib/rubocop/cop/{style → layout}/block_end_newline.rb +10 -5
- data/lib/rubocop/cop/{style → layout}/case_indentation.rb +64 -1
- data/lib/rubocop/cop/{style → layout}/closing_parenthesis_indentation.rb +2 -2
- data/lib/rubocop/cop/{style → layout}/comment_indentation.rb +1 -1
- data/lib/rubocop/cop/{style → layout}/dot_position.rb +1 -1
- data/lib/rubocop/cop/{style → layout}/else_alignment.rb +1 -1
- data/lib/rubocop/cop/{style → layout}/empty_line_after_magic_comment.rb +1 -1
- data/lib/rubocop/cop/{style → layout}/empty_line_between_defs.rb +1 -1
- data/lib/rubocop/cop/{style → layout}/empty_lines.rb +1 -1
- data/lib/rubocop/cop/{style → layout}/empty_lines_around_access_modifier.rb +2 -7
- data/lib/rubocop/cop/{style → layout}/empty_lines_around_begin_body.rb +1 -1
- data/lib/rubocop/cop/{style → layout}/empty_lines_around_block_body.rb +2 -4
- data/lib/rubocop/cop/{style → layout}/empty_lines_around_class_body.rb +1 -1
- data/lib/rubocop/cop/{style → layout}/empty_lines_around_exception_handling_keywords.rb +1 -1
- data/lib/rubocop/cop/{style → layout}/empty_lines_around_method_body.rb +1 -1
- data/lib/rubocop/cop/{style → layout}/empty_lines_around_module_body.rb +1 -1
- data/lib/rubocop/cop/{style → layout}/end_of_line.rb +1 -1
- data/lib/rubocop/cop/{style → layout}/extra_spacing.rb +1 -1
- data/lib/rubocop/cop/{style → layout}/first_array_element_line_break.rb +1 -1
- data/lib/rubocop/cop/{style → layout}/first_hash_element_line_break.rb +1 -1
- data/lib/rubocop/cop/{style → layout}/first_method_argument_line_break.rb +1 -1
- data/lib/rubocop/cop/{style → layout}/first_method_parameter_line_break.rb +1 -1
- data/lib/rubocop/cop/{style → layout}/first_parameter_indentation.rb +1 -1
- data/lib/rubocop/cop/{style → layout}/indent_array.rb +1 -1
- data/lib/rubocop/cop/{style → layout}/indent_assignment.rb +1 -1
- data/lib/rubocop/cop/{style → layout}/indent_hash.rb +2 -2
- data/lib/rubocop/cop/{style → layout}/indent_heredoc.rb +3 -3
- data/lib/rubocop/cop/{style → layout}/indentation_consistency.rb +1 -1
- data/lib/rubocop/cop/{style → layout}/indentation_width.rb +10 -12
- data/lib/rubocop/cop/{style → layout}/initial_indentation.rb +1 -1
- data/lib/rubocop/cop/{style → layout}/leading_comment_space.rb +1 -1
- data/lib/rubocop/cop/{style → layout}/multiline_array_brace_layout.rb +1 -1
- data/lib/rubocop/cop/{style → layout}/multiline_assignment_layout.rb +1 -1
- data/lib/rubocop/cop/{style → layout}/multiline_block_layout.rb +21 -36
- data/lib/rubocop/cop/{style → layout}/multiline_hash_brace_layout.rb +5 -1
- data/lib/rubocop/cop/{style → layout}/multiline_method_call_brace_layout.rb +1 -1
- data/lib/rubocop/cop/{style → layout}/multiline_method_call_indentation.rb +3 -3
- data/lib/rubocop/cop/{style → layout}/multiline_method_definition_brace_layout.rb +1 -1
- data/lib/rubocop/cop/{style → layout}/multiline_operation_indentation.rb +6 -5
- data/lib/rubocop/cop/{style → layout}/rescue_ensure_alignment.rb +1 -1
- data/lib/rubocop/cop/{style → layout}/space_after_colon.rb +2 -2
- data/lib/rubocop/cop/{style → layout}/space_after_comma.rb +2 -2
- data/lib/rubocop/cop/{style → layout}/space_after_method_name.rb +1 -1
- data/lib/rubocop/cop/{style → layout}/space_after_not.rb +1 -1
- data/lib/rubocop/cop/{style → layout}/space_after_semicolon.rb +2 -2
- data/lib/rubocop/cop/{style → layout}/space_around_block_parameters.rb +7 -5
- data/lib/rubocop/cop/{style → layout}/space_around_equals_in_parameter_default.rb +1 -1
- data/lib/rubocop/cop/{style → layout}/space_around_keyword.rb +1 -1
- data/lib/rubocop/cop/{style → layout}/space_around_operators.rb +6 -2
- data/lib/rubocop/cop/{style → layout}/space_before_block_braces.rb +6 -2
- data/lib/rubocop/cop/{style → layout}/space_before_comma.rb +1 -1
- data/lib/rubocop/cop/{style → layout}/space_before_comment.rb +1 -1
- data/lib/rubocop/cop/{style → layout}/space_before_first_arg.rb +4 -2
- data/lib/rubocop/cop/{style → layout}/space_before_semicolon.rb +1 -1
- data/lib/rubocop/cop/{style → layout}/space_in_lambda_literal.rb +1 -1
- data/lib/rubocop/cop/{style → layout}/space_inside_array_percent_literal.rb +1 -1
- data/lib/rubocop/cop/{style → layout}/space_inside_block_braces.rb +3 -4
- data/lib/rubocop/cop/{style → layout}/space_inside_brackets.rb +1 -1
- data/lib/rubocop/cop/{style → layout}/space_inside_hash_literal_braces.rb +1 -1
- data/lib/rubocop/cop/{style → layout}/space_inside_parens.rb +1 -1
- data/lib/rubocop/cop/{style → layout}/space_inside_percent_literal_delimiters.rb +8 -7
- data/lib/rubocop/cop/{style → layout}/space_inside_range_literal.rb +1 -1
- data/lib/rubocop/cop/{style → layout}/space_inside_string_interpolation.rb +1 -1
- data/lib/rubocop/cop/{style → layout}/tab.rb +1 -1
- data/lib/rubocop/cop/{style → layout}/trailing_blank_lines.rb +1 -1
- data/lib/rubocop/cop/{style → layout}/trailing_whitespace.rb +2 -2
- data/lib/rubocop/cop/lint/ambiguous_block_association.rb +1 -1
- data/lib/rubocop/cop/lint/ambiguous_operator.rb +4 -4
- data/lib/rubocop/cop/lint/debugger.rb +0 -15
- data/lib/rubocop/cop/lint/duplicate_methods.rb +2 -1
- data/lib/rubocop/cop/lint/rescue_type.rb +81 -0
- data/lib/rubocop/cop/lint/script_permission.rb +42 -0
- data/lib/rubocop/cop/lint/useless_access_modifier.rb +1 -1
- data/lib/rubocop/cop/message_annotator.rb +23 -13
- data/lib/rubocop/cop/metrics/block_length.rb +1 -1
- data/lib/rubocop/cop/mixin/array_min_size.rb +59 -0
- data/lib/rubocop/cop/mixin/configurable_enforced_style.rb +10 -11
- data/lib/rubocop/cop/mixin/def_node.rb +1 -1
- data/lib/rubocop/cop/mixin/empty_lines_around_body.rb +1 -1
- data/lib/rubocop/cop/mixin/enforce_superclass.rb +36 -0
- data/lib/rubocop/cop/mixin/hash_alignment.rb +1 -1
- data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +7 -3
- data/lib/rubocop/cop/mixin/space_before_punctuation.rb +1 -1
- data/lib/rubocop/cop/performance/caller.rb +41 -0
- data/lib/rubocop/cop/performance/compare_with_block.rb +60 -14
- data/lib/rubocop/cop/performance/double_start_end_with.rb +2 -2
- data/lib/rubocop/cop/performance/redundant_merge.rb +2 -0
- data/lib/rubocop/cop/rails/action_filter.rb +1 -3
- data/lib/rubocop/cop/rails/application_job.rb +32 -0
- data/lib/rubocop/cop/rails/application_record.rb +32 -0
- data/lib/rubocop/cop/rails/blank.rb +9 -3
- data/lib/rubocop/cop/rails/output_safety.rb +59 -15
- data/lib/rubocop/cop/rails/present.rb +9 -3
- data/lib/rubocop/cop/rails/relative_date_constant.rb +35 -4
- data/lib/rubocop/cop/rails/reversible_migration.rb +82 -18
- data/lib/rubocop/cop/rails/save_bang.rb +7 -2
- data/lib/rubocop/cop/rails/skips_model_validations.rb +7 -0
- data/lib/rubocop/cop/registry.rb +4 -3
- data/lib/rubocop/cop/security/eval.rb +9 -3
- data/lib/rubocop/cop/style/and_or.rb +1 -1
- data/lib/rubocop/cop/style/block_delimiters.rb +11 -17
- data/lib/rubocop/cop/style/braces_around_hash_parameters.rb +1 -1
- data/lib/rubocop/cop/style/collection_methods.rb +1 -3
- data/lib/rubocop/cop/style/conditional_assignment.rb +1 -1
- data/lib/rubocop/cop/style/copyright.rb +2 -2
- data/lib/rubocop/cop/style/documentation_method.rb +1 -1
- data/lib/rubocop/cop/style/each_for_simple_loop.rb +2 -1
- data/lib/rubocop/cop/style/each_with_object.rb +10 -6
- data/lib/rubocop/cop/style/empty_case_condition.rb +2 -2
- data/lib/rubocop/cop/style/for.rb +4 -5
- data/lib/rubocop/cop/style/format_string.rb +49 -0
- data/lib/rubocop/cop/style/format_string_token.rb +141 -0
- data/lib/rubocop/cop/style/hash_syntax.rb +1 -1
- data/lib/rubocop/cop/style/identical_conditional_branches.rb +2 -2
- data/lib/rubocop/cop/style/if_unless_modifier_of_if_unless.rb +1 -1
- data/lib/rubocop/cop/style/inverse_methods.rb +10 -1
- data/lib/rubocop/cop/style/lambda.rb +9 -9
- data/lib/rubocop/cop/style/line_end_concatenation.rb +4 -0
- data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +3 -3
- data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +1 -2
- data/lib/rubocop/cop/style/method_name.rb +8 -2
- data/lib/rubocop/cop/style/mixin_grouping.rb +41 -3
- data/lib/rubocop/cop/style/multiline_block_chain.rb +7 -11
- data/lib/rubocop/cop/style/multiple_comparison.rb +77 -0
- data/lib/rubocop/cop/style/next.rb +11 -22
- data/lib/rubocop/cop/style/parallel_assignment.rb +10 -19
- data/lib/rubocop/cop/style/percent_literal_delimiters.rb +2 -2
- data/lib/rubocop/cop/style/self_assignment.rb +4 -0
- data/lib/rubocop/cop/style/single_line_block_params.rb +23 -17
- data/lib/rubocop/cop/style/symbol_array.rb +24 -13
- data/lib/rubocop/cop/style/symbol_proc.rb +4 -0
- data/lib/rubocop/cop/style/ternary_parentheses.rb +1 -1
- data/lib/rubocop/cop/style/unneeded_interpolation.rb +4 -0
- data/lib/rubocop/cop/style/word_array.rb +33 -53
- data/lib/rubocop/cop/style/yoda_condition.rb +78 -0
- data/lib/rubocop/cop/team.rb +1 -14
- data/lib/rubocop/cop/util.rb +16 -0
- data/lib/rubocop/formatter/simple_text_formatter.rb +0 -11
- data/lib/rubocop/node_pattern.rb +52 -52
- data/lib/rubocop/options.rb +25 -0
- data/lib/rubocop/path_util.rb +17 -1
- data/lib/rubocop/result_cache.rb +8 -7
- data/lib/rubocop/rspec/expect_offense.rb +167 -0
- data/lib/rubocop/rspec/shared_examples.rb +0 -8
- data/lib/rubocop/rspec/support.rb +1 -0
- data/lib/rubocop/runner.rb +12 -2
- data/lib/rubocop/target_finder.rb +5 -0
- data/lib/rubocop/version.rb +1 -1
- metadata +101 -72
data/lib/rubocop/cop/badge.rb
CHANGED
@@ -5,7 +5,7 @@ module RuboCop
|
|
5
5
|
# Identifier of all cops containing a department and cop name.
|
6
6
|
#
|
7
7
|
# All cops are identified by their badge. For example, the badge
|
8
|
-
# for `RuboCop::Cop::
|
8
|
+
# for `RuboCop::Cop::Layout::Tab` is `Layout/Tab`. Badges can be
|
9
9
|
# parsed as either `Department/CopName` or just `CopName` to allow
|
10
10
|
# for badge references in source files that omit the department
|
11
11
|
# for RuboCop to infer.
|
@@ -54,13 +54,13 @@ module RuboCop
|
|
54
54
|
.values
|
55
55
|
end
|
56
56
|
|
57
|
-
def register_offense(node, gem_name,
|
57
|
+
def register_offense(node, gem_name, line_of_first_occurrence)
|
58
58
|
line_range = node.loc.column...node.loc.last_column
|
59
59
|
|
60
60
|
add_offense(
|
61
61
|
node,
|
62
62
|
source_range(processed_source.buffer, node.loc.line, line_range),
|
63
|
-
format(MSG, gem_name,
|
63
|
+
format(MSG, gem_name, line_of_first_occurrence)
|
64
64
|
)
|
65
65
|
end
|
66
66
|
end
|
@@ -34,7 +34,7 @@ module RuboCop
|
|
34
34
|
|
35
35
|
callback_methods.each do |callback|
|
36
36
|
next unless method_defined?(callback)
|
37
|
-
class_eval <<-EOS, __FILE__, __LINE__
|
37
|
+
class_eval <<-EOS, __FILE__, __LINE__ + 1
|
38
38
|
def #{callback}(node)
|
39
39
|
@callbacks[:"#{callback}"] ||= @cops.select do |cop|
|
40
40
|
cop.respond_to?(:"#{callback}")
|
data/lib/rubocop/cop/cop.rb
CHANGED
@@ -81,6 +81,16 @@ module RuboCop
|
|
81
81
|
given_names.include?(department.to_s)
|
82
82
|
end
|
83
83
|
|
84
|
+
# List of cops that should not try to autocorrect at the same
|
85
|
+
# time as this cop
|
86
|
+
#
|
87
|
+
# @return [Array<RuboCop::Cop::Cop>]
|
88
|
+
#
|
89
|
+
# @api public
|
90
|
+
def self.autocorrect_incompatible_with
|
91
|
+
[]
|
92
|
+
end
|
93
|
+
|
84
94
|
def initialize(config = nil, options = nil)
|
85
95
|
@config = config || Config.new
|
86
96
|
@options = options || { debug: false }
|
@@ -2,9 +2,38 @@
|
|
2
2
|
|
3
3
|
module RuboCop
|
4
4
|
module Cop
|
5
|
-
module
|
5
|
+
module Layout
|
6
6
|
# Modifiers should be indented as deep as method definitions, or as deep
|
7
7
|
# as the class/module keyword, depending on configuration.
|
8
|
+
#
|
9
|
+
# @example
|
10
|
+
# # EnforcedStyle: indent (default)
|
11
|
+
#
|
12
|
+
# # bad
|
13
|
+
# class Plumbus
|
14
|
+
# private
|
15
|
+
# def smooth; end
|
16
|
+
# end
|
17
|
+
#
|
18
|
+
# # good
|
19
|
+
# class Plumbus
|
20
|
+
# private
|
21
|
+
# def smooth; end
|
22
|
+
# end
|
23
|
+
#
|
24
|
+
# # EnforcedStyle: outdent
|
25
|
+
#
|
26
|
+
# # bad
|
27
|
+
# class Plumbus
|
28
|
+
# private
|
29
|
+
# def smooth; end
|
30
|
+
# end
|
31
|
+
#
|
32
|
+
# # good
|
33
|
+
# class Plumbus
|
34
|
+
# private
|
35
|
+
# def smooth; end
|
36
|
+
# end
|
8
37
|
class AccessModifierIndentation < Cop
|
9
38
|
include AutocorrectAlignment
|
10
39
|
include ConfigurableEnforcedStyle
|
@@ -28,8 +57,9 @@ module RuboCop
|
|
28
57
|
end
|
29
58
|
|
30
59
|
def on_block(node)
|
31
|
-
|
32
|
-
|
60
|
+
return unless node.class_constructor?
|
61
|
+
|
62
|
+
check_body(node.body, node)
|
33
63
|
end
|
34
64
|
|
35
65
|
private
|
@@ -2,9 +2,24 @@
|
|
2
2
|
|
3
3
|
module RuboCop
|
4
4
|
module Cop
|
5
|
-
module
|
5
|
+
module Layout
|
6
6
|
# Here we check if the elements of a multi-line array literal are
|
7
7
|
# aligned.
|
8
|
+
#
|
9
|
+
# @example
|
10
|
+
# # bad
|
11
|
+
# a = [1, 2, 3
|
12
|
+
# 4, 5, 6]
|
13
|
+
# array = ['run',
|
14
|
+
# 'forrest',
|
15
|
+
# 'run']
|
16
|
+
#
|
17
|
+
# # good
|
18
|
+
# a = [1, 2, 3
|
19
|
+
# 4, 5, 6]
|
20
|
+
# a = ['run',
|
21
|
+
# 'forrest',
|
22
|
+
# 'run']
|
8
23
|
class AlignArray < Cop
|
9
24
|
include AutocorrectAlignment
|
10
25
|
|
@@ -2,9 +2,37 @@
|
|
2
2
|
|
3
3
|
module RuboCop
|
4
4
|
module Cop
|
5
|
-
module
|
5
|
+
module Layout
|
6
6
|
# Here we check if the parameters on a multi-line method call or
|
7
7
|
# definition are aligned.
|
8
|
+
#
|
9
|
+
# @example
|
10
|
+
#
|
11
|
+
# # EnforcedStyle: with_first_parameter
|
12
|
+
#
|
13
|
+
# # good
|
14
|
+
#
|
15
|
+
# foo :bar,
|
16
|
+
# :baz
|
17
|
+
#
|
18
|
+
# # bad
|
19
|
+
#
|
20
|
+
# foo :bar,
|
21
|
+
# :baz
|
22
|
+
#
|
23
|
+
# @example
|
24
|
+
#
|
25
|
+
# # EnforcedStyle: with_fixed_indentation
|
26
|
+
#
|
27
|
+
# # good
|
28
|
+
#
|
29
|
+
# foo :bar,
|
30
|
+
# :baz
|
31
|
+
#
|
32
|
+
# # bad
|
33
|
+
#
|
34
|
+
# foo :bar,
|
35
|
+
# :baz
|
8
36
|
class AlignParameters < Cop
|
9
37
|
include AutocorrectAlignment
|
10
38
|
include OnMethodDef
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
module RuboCop
|
4
4
|
module Cop
|
5
|
-
module
|
5
|
+
module Layout
|
6
6
|
# This cop checks whether the end statement of a do..end block
|
7
7
|
# is on its own line.
|
8
8
|
#
|
@@ -28,17 +28,18 @@ module RuboCop
|
|
28
28
|
MSG = 'Expression at %d, %d should be on its own line.'.freeze
|
29
29
|
|
30
30
|
def on_block(node)
|
31
|
+
return if node.single_line?
|
32
|
+
|
31
33
|
end_loc = node.loc.end
|
32
|
-
do_loc = node.loc.begin # Actually it's either do or {.
|
33
|
-
return if do_loc.line == end_loc.line # Ignore one-liners.
|
34
34
|
|
35
35
|
# If the end is on its own line, there is no offense
|
36
36
|
return if end_loc.source_line =~ /^\s*#{end_loc.source}/
|
37
37
|
|
38
|
-
|
39
|
-
add_offense(node, end_loc, msg)
|
38
|
+
add_offense(node, end_loc)
|
40
39
|
end
|
41
40
|
|
41
|
+
private
|
42
|
+
|
42
43
|
def autocorrect(node)
|
43
44
|
lambda do |corrector|
|
44
45
|
indentation = indentation_of_block_start_line(node)
|
@@ -46,6 +47,10 @@ module RuboCop
|
|
46
47
|
end
|
47
48
|
end
|
48
49
|
|
50
|
+
def message(node)
|
51
|
+
format(MSG, node.loc.end.line, node.loc.end.column + 1)
|
52
|
+
end
|
53
|
+
|
49
54
|
def indentation_of_block_start_line(node)
|
50
55
|
match = /\S.*/.match(node.loc.begin.source_line)
|
51
56
|
match.begin(0)
|
@@ -2,11 +2,74 @@
|
|
2
2
|
|
3
3
|
module RuboCop
|
4
4
|
module Cop
|
5
|
-
module
|
5
|
+
module Layout
|
6
6
|
# This cop checks how the *when*s of a *case* expression
|
7
7
|
# are indented in relation to its *case* or *end* keyword.
|
8
8
|
#
|
9
9
|
# It will register a separate offense for each misaligned *when*.
|
10
|
+
#
|
11
|
+
# @example
|
12
|
+
# # If Layout/EndAlignment is set to keyword style (default)
|
13
|
+
# # *case* and *end* should always be aligned to same depth,
|
14
|
+
# # and therefore *when* should always be aligned to both -
|
15
|
+
# # regardless of configuration.
|
16
|
+
#
|
17
|
+
# # bad for all styles
|
18
|
+
# case n
|
19
|
+
# when 0
|
20
|
+
# x * 2
|
21
|
+
# else
|
22
|
+
# y / 3
|
23
|
+
# end
|
24
|
+
#
|
25
|
+
# # good for all styles
|
26
|
+
# case n
|
27
|
+
# when 0
|
28
|
+
# x * 2
|
29
|
+
# else
|
30
|
+
# y / 3
|
31
|
+
# end
|
32
|
+
#
|
33
|
+
# @example
|
34
|
+
# # if EndAlignment is set to other style such as
|
35
|
+
# # start_of_line (as shown below), then *when* alignment
|
36
|
+
# # configuration does have an effect.
|
37
|
+
#
|
38
|
+
# # EnforcedStyle: case (default)
|
39
|
+
#
|
40
|
+
# # bad
|
41
|
+
# a = case n
|
42
|
+
# when 0
|
43
|
+
# x * 2
|
44
|
+
# else
|
45
|
+
# y / 3
|
46
|
+
# end
|
47
|
+
#
|
48
|
+
# # good
|
49
|
+
# a = case n
|
50
|
+
# when 0
|
51
|
+
# x * 2
|
52
|
+
# else
|
53
|
+
# y / 3
|
54
|
+
# end
|
55
|
+
#
|
56
|
+
# # EnforcedStyle: end
|
57
|
+
#
|
58
|
+
# # bad
|
59
|
+
# a = case n
|
60
|
+
# when 0
|
61
|
+
# x * 2
|
62
|
+
# else
|
63
|
+
# y / 3
|
64
|
+
# end
|
65
|
+
#
|
66
|
+
# # good
|
67
|
+
# a = case n
|
68
|
+
# when 0
|
69
|
+
# x * 2
|
70
|
+
# else
|
71
|
+
# y / 3
|
72
|
+
# end
|
10
73
|
class CaseIndentation < Cop
|
11
74
|
include AutocorrectAlignment
|
12
75
|
include ConfigurableEnforcedStyle
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
module RuboCop
|
4
4
|
module Cop
|
5
|
-
module
|
5
|
+
module Layout
|
6
6
|
# This cops checks the indentation of hanging closing parentheses in
|
7
7
|
# method calls, method definitions, and grouped expressions. A hanging
|
8
8
|
# closing parenthesis means `)` preceded by a line break.
|
@@ -75,7 +75,7 @@ module RuboCop
|
|
75
75
|
end
|
76
76
|
|
77
77
|
def fixed_parameter_indentation?
|
78
|
-
config.for_cop('
|
78
|
+
config.for_cop('Layout/AlignParameters')['EnforcedStyle'] ==
|
79
79
|
'with_fixed_indentation'
|
80
80
|
end
|
81
81
|
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
module RuboCop
|
4
4
|
module Cop
|
5
|
-
module
|
5
|
+
module Layout
|
6
6
|
# This cops checks the alignment of else keywords. Normally they should
|
7
7
|
# be aligned with an if/unless/while/until/begin/def keyword, but there
|
8
8
|
# are special cases when they should follow the same rules as the
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
module RuboCop
|
4
4
|
module Cop
|
5
|
-
module
|
5
|
+
module Layout
|
6
6
|
# Access modifiers should be surrounded by blank lines.
|
7
7
|
class EmptyLinesAroundAccessModifier < Cop
|
8
8
|
include AccessModifierNode
|
@@ -23,7 +23,7 @@ module RuboCop
|
|
23
23
|
send_line = node.loc.line
|
24
24
|
previous_line = processed_source[send_line - 2]
|
25
25
|
next_line = processed_source[send_line]
|
26
|
-
line =
|
26
|
+
line = range_by_whole_lines(node.source_range)
|
27
27
|
|
28
28
|
unless previous_line_empty?(previous_line)
|
29
29
|
corrector.insert_before(line, "\n")
|
@@ -37,11 +37,6 @@ module RuboCop
|
|
37
37
|
|
38
38
|
private
|
39
39
|
|
40
|
-
def line_range(node)
|
41
|
-
range_between(node.source_range.begin_pos - node.loc.column,
|
42
|
-
node.source_range.end_pos)
|
43
|
-
end
|
44
|
-
|
45
40
|
def previous_line_ignoring_comments(processed_source, send_line)
|
46
41
|
processed_source[0..send_line - 2].reverse.find do |line|
|
47
42
|
!comment_line?(line)
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
module RuboCop
|
4
4
|
module Cop
|
5
|
-
module
|
5
|
+
module Layout
|
6
6
|
# This cops checks if empty lines around the bodies of blocks match
|
7
7
|
# the configuration.
|
8
8
|
#
|
@@ -31,9 +31,7 @@ module RuboCop
|
|
31
31
|
KIND = 'block'.freeze
|
32
32
|
|
33
33
|
def on_block(node)
|
34
|
-
|
35
|
-
|
36
|
-
check(node, body)
|
34
|
+
check(node, node.body)
|
37
35
|
end
|
38
36
|
end
|
39
37
|
end
|