class RuboCop::RSpec::DescriptionExtractor::CodeObject

Decorator of a YARD code object for working with documented rspec cops

def abstract?

def abstract?
  yardoc.tags.any? { |tag| tag.tag_name.eql?('abstract') }
end

def class_documentation?

def class_documentation?
  yardoc.type.equal?(:class)
end

def configuration

Returns:
  • (Hash) -
def configuration
  { cop_name => { 'Description' => description } }
end

def cop_name

def cop_name
  Object.const_get(documented_constant).cop_name
end

def cop_subclass?

def cop_subclass?
  # YARD superclass resolution is a bit flaky: All classes loaded before
  # RuboCop::Cop::WorkaroundCop are shown as having RuboCop::Cop as
  # superclass, while all the following classes are listed as having
  # RuboCop::Cop::RSpec::Cop as their superclass.
  COP_CLASS_NAMES.include?(yardoc.superclass.path)
end

def description

def description
  yardoc.docstring.split("\n\n").first.to_s
end

def documented_constant

def documented_constant
  yardoc.to_s
end

def initialize(yardoc)

def initialize(yardoc)
  @yardoc = yardoc
end

def rspec_cop?

Returns:
  • (Boolean) -
def rspec_cop?
  class_documentation? &&
    rspec_cop_namespace? &&
    cop_subclass? &&
    !abstract?
end

def rspec_cop_namespace?

def rspec_cop_namespace?
  documented_constant.start_with?(RSPEC_NAMESPACE)
end