rubocop 0.48.1 → 0.49.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 +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
|