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.
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)
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
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
Generated with the Darkfish Rdoc Generator 2.