class RuboCop::Cop::Style::ClassLength
The maximum allowed length is configurable.
Comment lines can optionally be ignored.
This cop checks if the length a class exceeds some maximum value.
def code_length(node)
def code_length(node) class_body_line_numbers = line_range(node).to_a[1...-1] target_line_numbers = class_body_line_numbers - line_numbers_of_inner_classes(node) target_line_numbers.reduce(0) do |length, line_number| source_line = processed_source[line_number] next length if irrelevant_line(source_line) length + 1 end end
def line_numbers_of_inner_classes(node)
def line_numbers_of_inner_classes(node) line_numbers = Set.new on_node([:class, :module], node) do |inner_node| next if inner_node.eql?(node) line_range = line_range(inner_node) line_numbers.merge(line_range) end line_numbers.to_a end
def message
def message 'Class definition is too long. [%d/%d]' end
def on_class(node)
def on_class(node) check(node) end