Class: RuboCop::Cop::Lint::ConstantResolution
- Defined in:
- lib/rubocop/cop/lint/constant_resolution.rb
Overview
Check that certain constants are fully qualified.
This is not enabled by default because it would mark a lot of offenses unnecessarily.
Generally, gems should fully qualify all constants to avoid conflicts with the code that uses the gem. Enable this cop without using ‘Only`/`Ignore`
Large projects will over time end up with one or two constant names that are problematic because of a conflict with a library or just internally using the same name a namespace and a class. To avoid too many unnecessary offenses, Enable this cop with ‘Only: [The, Constant, Names, Causing, Issues]`
NOTE: ‘Style/RedundantConstantBase` cop is disabled if this cop is enabled to prevent conflicting rules. Because it respects user configurations that want to enable this cop which is disabled by default.
Constant Summary collapse
- MSG =
'Fully qualify this constant to avoid possibly ambiguous resolution.'
Constants inherited from Base
Instance Attribute Summary
Attributes inherited from Base
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_new_investigation, #on_other_file, #parse, #parser_engine, #ready, #relevant_file?, requires_gem, #string_literals_frozen_by_default?, support_autocorrect?, support_multiple_source?, #target_rails_version, #target_ruby_version
Methods included from ExcludeLimit
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_const(node) ⇒ Object
70 71 72 73 74 |
# File 'lib/rubocop/cop/lint/constant_resolution.rb', line 70 def on_const(node) return if !unqualified_const?(node) || node.parent&.defined_module || node.loc.nil? add_offense(node) end |
#unqualified_const?(node) ⇒ Object
66 67 68 |
# File 'lib/rubocop/cop/lint/constant_resolution.rb', line 66 def_node_matcher :unqualified_const?, <<~PATTERN (const nil? #const_name?) PATTERN |