class RuboCop::Cop::Dependency::OverBoundary
Check not to refer constants over dependency boundaries which given from ‘Rules` config.
@example
# Rules: # - BannedConsts: Foo # FromNamespacePatterns: # - \ABar(\W|\z) class Bar # Bad. Cannot refer Foo from Bar namespace Foo end
Public Instance Methods
on_const(node)
click to toggle source
# File lib/rubocop/cop/dependency/over_boundary.rb, line 20 def on_const(node) const_name = node.const_name current_namespace = node .each_ancestor(:class, :module) .map { |a| a.defined_module_name } .reverse.join('::') if cop_config['Rules'] .select { |rule| Array(rule['BannedConsts']).include?(const_name) } .any? { |rule| Array(rule['FromNamespacePatterns']).any? { |from_pattern| Regexp.new(from_pattern).match?(current_namespace) } } add_offense(node, message: "Const `#{const_name}` cannot use from namespace `#{current_namespace}`.") end end