Class: RuboCop::Cop::Style::StaticClass
- Extended by:
- AutoCorrector
- Includes:
- ProjectIndexHelp, RangeHelp, VisibilityHelp
- Defined in:
- lib/rubocop/cop/style/static_class.rb
Overview
Checks for places where classes with only class methods can be replaced with a module. Classes should be used only when it makes sense to create instances out of them.
When AllCops/UseProjectIndex is enabled and the rubydex gem is
installed, classes that are subclassed anywhere in the project are
not reported, since converting them to modules would break their
subclasses.
Constant Summary collapse
- MSG =
'Prefer modules to classes with only class methods.'
Constants included from VisibilityHelp
VisibilityHelp::VISIBILITY_SCOPES
Constants included from RangeHelp
RangeHelp::BYTE_ORDER_MARK, RangeHelp::NOT_GIVEN
Constants included from ProjectIndexHelp
ProjectIndexHelp::BUILTIN_DOCUMENT_URI, ProjectIndexHelp::FILE_URI_PREFIX, ProjectIndexHelp::WINDOWS_DRIVE_PREFIX
Constants inherited from Base
Instance Attribute Summary
Attributes inherited from Base
#config, #processed_source, #project_index
Instance Method Summary collapse
Methods included from AutoCorrector
Methods included from ProjectIndexHelp
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_new_investigation, #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
cop_dir_for, #exclude_limit, read_limits
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
Constructor Details
This class inherits a constructor from RuboCop::Cop::Base
Instance Method Details
#on_class(class_node) ⇒ Object
59 60 61 62 63 64 65 66 67 |
# File 'lib/rubocop/cop/style/static_class.rb', line 59 def on_class(class_node) return if class_node.parent_class return unless class_convertible_to_module?(class_node) return if subclassed_in_project?(class_node) add_offense(class_node) do |corrector| autocorrect(corrector, class_node) end end |