#30 ✓resolved
Kevin Rutherford

provide matchers for rspec

Reported by Kevin Rutherford | March 26th, 2009 @ 09:10 AM

Provide one or matchers for rspec, so that users can write examples such as this:


"def simple?() true; end".should_not smell
"def x() y + z; end".should smell_of(:UncommunicativeName, /x/)
File("example.rb").should_not smell

There's also the possibility of something such as


Dir["lib/**/*.rb"].should smell_of(:FeatureEnvy)

which may require some notion of a multi-report.

Comments and changes to this ticket

  • Kevin Rutherford

    Kevin Rutherford March 26th, 2009 @ 09:11 AM

    • State changed from “new” to “open”
  • Kevin Rutherford

    Kevin Rutherford March 26th, 2009 @ 09:44 AM

    Code such as

    
    "def x() y + z; end".should smell_of(:UncommunicativeName, /x/)
    

    would check that the report contained an instance of UncommunicativeName, and that it's warning message matched /x/.

    The names are camel case because FeatureEnvy, for example, is the name of a class of smell :)

  • Kevin Rutherford

    Kevin Rutherford March 26th, 2009 @ 09:49 AM

    So I envisage usages such as this:

    
    it 'should recognise different bad names' do
      code = "def x(z) y + z; end"
      code.should smell_of(:UncommunicativeName, /x/, /method/)
      code.should smell_of(:UncommunicativeName, /y/, /variable/)
      code.should smell_of(:UncommunicativeName, /z/, /parameter/)
    end
    

    (This will allow me to rewrite most of Reek's own examples; I don't expect general users to make much use of it.)

  • Kevin Rutherford

    Kevin Rutherford March 29th, 2009 @ 08:56 AM

    Peeled off the Dir part into #32, because it requires a bit of a rethink about design of reports and such.

  • Kevin Rutherford

    Kevin Rutherford March 29th, 2009 @ 10:14 AM

    • State changed from “open” to “resolved”

    Resolved at tag v0.3.1.3, except for Dir matchers (see #32).

Please Sign in or create a free account to add a new ticket.

With your very own profile, you can contribute to projects, track your activity, watch tickets, receive and update tickets through your email and much more.

New ticket Create new ticket

Create your profile

Help contribute to this project by taking a few moments to create your personal profile. Create your profile ยป

Defects and feature requests for Reek, the Ruby code smell detector

People watching this ticket

Pages