class RuboCop::Cop::Style::ConstantName

for certain the type of value that would be assigned to a constant.
To avoid false positives, it ignores cases in which we cannot know
SCREAMING_SNAKE_CASE.
This cop checks whether constant names are written using

def on_casgn(node)

def on_casgn(node)
  _scope, const_name, value = *node
  # We cannot know the result of method calls like
  # NewClass = something_that_returns_a_class
  # It's also ok to assign a class constant another class constant
  # SomeClass = SomeOtherClass
  return if value && %i[send block const].include?(value.type)
  add_offense(node, :name) if const_name !~ SNAKE_CASE
end