Class: RuboCop::Cop::Style::OneClassPerFile

Inherits:
Base
  • Object
show all
Includes:
RangeHelp
Defined in:
lib/rubocop/cop/style/one_class_per_file.rb

Overview

Checks that each source file defines at most one top-level class or module.

Keeping one class or module per file makes it easier to find and navigate code, and follows the convention used by most Ruby projects.

Classes and modules listed in AllowedClasses are not counted toward the limit. This is useful for small ancillary classes like custom exception classes that logically belong with the main class.

Examples:

# bad
class Foo
end

class Bar
end

# bad
class Foo
end

module Bar
end

# good
class Foo
end

# good
class Foo
  class Bar
  end
end

AllowedClasses: [‘AllowedClass’]

# good
class Foo
end

class AllowedClass
end

Constant Summary collapse

MSG =
'Do not define multiple classes/modules at the top level in a single file.'

Constants included from RangeHelp

RangeHelp::BYTE_ORDER_MARK, RangeHelp::NOT_GIVEN

Constants inherited from Base

Base::RESTRICT_ON_SEND

Instance Attribute Summary

Attributes inherited from Base

#config, #processed_source

Instance Method Summary collapse

Methods inherited from Base

#active_support_extensions_enabled?, #add_global_offense, #add_offense, #always_autocorrect?, autocorrect_incompatible_with, badge, #begin_investigation, #callbacks_needed, callbacks_needed, #config_to_allow_offenses, #config_to_allow_offenses=, #contextual_autocorrect?, #cop_config, cop_name, #cop_name, department, documentation_url, exclude_from_registry, #excluded_file?, #external_dependency_checksum, inherited, #initialize, #inspect, joining_forces, lint?, match?, #message, #offenses, #on_investigation_end, #on_other_file, #parse, #parser_engine, #ready, #relevant_file?, requires_gem, #string_literals_frozen_by_default?, support_autocorrect?, support_multiple_source?, #target_gem_version, #target_rails_version, #target_ruby_version

Methods included from ExcludeLimit

#exclude_limit

Methods included from AutocorrectLogic

#autocorrect?, #autocorrect_enabled?, #autocorrect_requested?, #autocorrect_with_disable_uncorrectable?, #correctable?, #disable_uncorrectable?, #safe_autocorrect?

Methods included from IgnoredNode

#ignore_node, #ignored_node?, #part_of_ignored_node?

Methods included from Util

silence_warnings

Constructor Details

This class inherits a constructor from RuboCop::Cop::Base

Instance Method Details

#on_class(node) ⇒ Object



57
58
59
# File 'lib/rubocop/cop/style/one_class_per_file.rb', line 57

def on_class(node)
  check_top_level(node)
end

#on_module(node) ⇒ Object



61
62
63
# File 'lib/rubocop/cop/style/one_class_per_file.rb', line 61

def on_module(node)
  check_top_level(node)
end

#on_new_investigationObject



53
54
55
# File 'lib/rubocop/cop/style/one_class_per_file.rb', line 53

def on_new_investigation
  @top_level_definitions = []
end