Skip to content

Commit

Permalink
Merge pull request #8824 from koic/fix_an_error_for_layout_class_length
Browse files Browse the repository at this point in the history
Fix an error for `Metrics/ClassLength`
  • Loading branch information
koic committed Oct 2, 2020
2 parents 04b9f9e + 109ac27 commit f3af4e2
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 5 deletions.
9 changes: 7 additions & 2 deletions lib/rubocop/cop/metrics/class_length.rb
Expand Up @@ -39,8 +39,13 @@ def on_class(node)
end

def on_casgn(node)
_scope, _name, block_node = *node
check_code_length(node) if block_node.class_definition?
if node.parent&.assignment?
block_node = node.parent.children[1]
else
_scope, _name, block_node = *node
end

check_code_length(block_node) if block_node.class_definition?
end

private
Expand Down
20 changes: 17 additions & 3 deletions spec/rubocop/cop/metrics/class_length_spec.rb
Expand Up @@ -174,7 +174,7 @@ class Test
it 'registers an offense' do
expect_offense(<<~RUBY)
Foo = Class.new do
^^^ Class has too many lines. [6/5]
^^^^^^^^^^^^ Class has too many lines. [6/5]
a = 1
a = 2
a = 3
Expand All @@ -190,7 +190,7 @@ class Test
it 'registers an offense' do
expect_offense(<<~RUBY)
Foo = ::Class.new do
^^^ Class has too many lines. [6/5]
^^^^^^^^^^^^^^ Class has too many lines. [6/5]
a = 1
a = 2
a = 3
Expand All @@ -206,7 +206,21 @@ class Test
it 'registers an offense' do
expect_offense(<<~RUBY)
Foo = Struct.new(:foo, :bar) do
^^^ Class has too many lines. [6/5]
^^^^^^^^^^^^^^^^^^^^^^^^^ Class has too many lines. [6/5]
a = 1
a = 2
a = 3
a = 4
a = 5
a = 6
end
RUBY
end

it 'registers an offense when inspecting or equals (`||=`) for consntant' do
expect_offense(<<~RUBY)
Foo ||= Struct.new(:foo, :bar) do
^^^^^^^^^^^^^^^^^^^^^^^^^ Class has too many lines. [6/5]
a = 1
a = 2
a = 3
Expand Down

0 comments on commit f3af4e2

Please sign in to comment.