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 March 26th, 2009 @ 09:11 AM
- State changed from new to open
-
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 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 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 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.
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 <a href="http://wiki.github.com/kevinrutherford/reek">Reek</a>, the Ruby code smell detector