class RuboCop::Cop::ThreadSafety::ClassAndModuleAttributes

end
cattr_accessor :current_user
class User
# bad
@example
They are implemented by class variables, which are not thread-safe.
Avoid mutating class and module attributes.

def defined_in_singleton_class?(node)

def defined_in_singleton_class?(node)
  node.ancestors.each do |ancestor|
    case ancestor.type
    when :def then return false
    when :sclass then return true
    else next
    end
  end
  false
end

def on_send(node)

def on_send(node)
  return unless mattr?(node) || class_attr?(node) ||
                singleton_attr?(node)
  add_offense(node, message: MSG)
end

def singleton_attr?(node)

def singleton_attr?(node)
  (attr?(node) || attr_internal?(node)) &&
    defined_in_singleton_class?(node)
end