class RuboCop::Cop::RSpec::NamedSubject

end
it { should be_valid }
subject(:user) { described_class.new }
RSpec.describe Foo do
# also good
end
end
expect(user.valid?).to be(true)
it ‘is valid’ do
subject(:user) { described_class.new }
RSpec.describe Foo do
# good
end
end
expect(subject.valid?).to be(true)
it ‘is valid’ do
subject { described_class.new }
RSpec.describe User do
# bad
@example
Give ‘subject` a descriptive name if you reference it directly

def on_block(node)

def on_block(node)
  return unless rspec_block?(node)
  subject_usage(node) do |subject_node|
    add_offense(subject_node, :selector)
  end
end

def subject_usage(node, &block)

def subject_usage(node, &block)
  return unless node.instance_of?(Node)
  unnamed_subject(node, &block)
  node.children.each do |child|
    subject_usage(child, &block)
  end
end