Class/Module Index [+]

Quicksearch

Reek::Spec

Provides matchers for Rspec, making it easy to check code quality.

If you require this module somewhere within your spec (or in your spec_helper), Reek will arrange to update Spec::Runner’s config so that it knows about the matchers defined here.

Examples

Here’s a spec that ensures there are no active code smells in the current project:

describe 'source code quality' do
  Dir['lib/**/*.rb'].each do |path|
    it "reports no smells in #{path}" do
      File.new(path).should_not reek
    end
  end
end

And here’s an even simpler way to do the same:

it 'has no code smells' do
  Dir['lib/**/*.rb'].should_not reek
end

Here’s a simple check of a code fragment:

'def equals(other) other.thing == self.thing end'.should_not reek

To check for specific smells, use something like this:

ruby = 'def double_thing() @other.thing.foo + @other.thing.foo end'
ruby.should reek_of(:Duplication, /@other.thing[^\.]/)
ruby.should reek_of(:Duplication, /@other.thing.foo/)
ruby.should_not reek_of(:FeatureEnvy)

Public Instance Methods

reek() click to toggle source

Returns true if and only if the target source code contains smells.

# File lib/reek/spec/should_reek.rb, line 27
def reek
  ShouldReek.new
end
reek_of(smell_class, *patterns) click to toggle source

Checks the target source code for instances of smell_class, and returns true only if one of them has a report string matching all of the patterns.

# File lib/reek/spec/should_reek_of.rb, line 33
def reek_of(smell_class, *patterns)
  ShouldReekOf.new(smell_class, patterns)
end
reek_only_of(smell_class, *patterns) click to toggle source

As for reek_of, but the matched smell warning must be the only warning of any kind in the target source code’s Reek report.

# File lib/reek/spec/should_reek_only_of.rb, line 33
def reek_only_of(smell_class, *patterns)
  ShouldReekOnlyOf.new(smell_class, patterns)
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.