Smell detectors can be configured or disabled in code comments
** Comment with :reek:smell_name disables the named smell for a class, module or method ** Comment with :reek:smell_name:{…} for more detailed configuration
Additional config file(s) can be specified:
** on the command-line using -c ** via Reek::Rake::Task in the rakefile
Duplication can be configured to ignore specific calls
IrresponsibleModule now reports scoped module names correctly (#66)
NestedIterators is now more configurable:
** Option to specify permitted nesting depth (#14) ** Option to ignore certain iterator methods
UtilityFunction no longer reported when local method called in param initializer (#60)
Spaces removed from smell class names in report output
Masked smells are no longer reported
** the -a command-line option has been removed ** some methods on Examiner are now deprecated
DataClump no longer needs infinite memory for large classes (#57 again)
Number of masked smells is no longer shown in report headers
Masked smells are no longer listed in –yaml reports
DataClump no longer needs infinite memory for large classes (#57)
DataClump reports the names of the offending methods in the YAML report
UncommunicativeMethodName now accepts operator names (+, -, …)
Uncommunicative Name now warns about uppercase letters in method & var names
Fixed crash on a case statement with no condition (#58)
New option –yaml reports smells in YAML format
Now require ‘reek/rake/task’ to use the rake task
Now require ‘reek/spec’ to use the Rspec matchers
Developer API completely revised and documented
New smell: Irresponsible Module (has no meaningful comment)
ControlCouple no longer checks arguments yielded to blocks
FeatureEnvy and UtilityFunction are now subclasses of a new smell: LowCohesion
NestedIterators now reports the nesting depth
Fixed problem checking for UtilityFunctions in Object
Improved detection of invalid config files
Invalid config files are now ignored
Non-existent files are now ignored
See wiki.github.com/kevinrutherford/reek for further details.
Corrected display of module methods to use # (#56)
Ignores ruby_parser errors and pretends the offending file was empty
The -f, -c and -s options for formatting smell warnings have been removed
ControlCouple now warns about parameters defaulted to true/false
New smell: Attribute (disabled by default)
Expanded DataClump to check modules (#9)
Fixed LargeClass to ignore inner classes and modules
Fixed LargeClass to ignore singleton methods
Removed support for MyClass.should_not reek due to ParseTree EOL
Removed internal requiring of ‘rubygems’
New smell: Class Variable
See wiki.github.com/kevinrutherford/reek for details
Reek passes all its tests under ruby 1.8.6, 1.8.7 and 1.9.1 (fixed #16)
New smell – Data Clump:
** Looks within a class for 3 or more methods taking the same 2 or more parameters
New smell – Simulated Polymorphism:
** Currently only performs basic check for multiple tests of same value
Reek’s output reports are now formatted differently:
** Reek is no longer silent about smell-free source code ** Output now reports on all files examined, even if they have no smells ** Smell warnings are indented in the report; file summary headers are not ** Reports for multiple sources are run together; no more blank lines ** Reports in spec matcher failures are quiet (fixed #38)
The smells masked by *.reek config files can now be seen:
** The header for each source file now counts masked smells ** The –show-all (-a) option shows masked warnings in the report
The spec matchers are now accessed by requiring ‘reek/adapters/spec’
Reek’s RDoc is now hosted at rdoc.info/projects/kevinrutherford/reek
If a dir is passed on the command-line all */.rb files below it are examined (fixed #41)
Duplication warnings now report the number of identical calls
FeatureEnvy no longer ignores :self when passed as a method parameter
LargeClass is disabled when checking in-memory classes (fixed #28)
LongParameterList accepts upto 5 parameters for initialize methods
Several changes to the LongMethod counting algorithm:
** LongMethod now counts statements deeper into each method (fixed #25) ** LongMethod no longer counts control structures, only their contained stmts ** See wiki.github.com/kevinrutherford/reek/long-method for details
UncommunicativeName warns about any name ending in a number (fixed #18)
UtilityFunction has been relaxed somewhat:
** no longer reports methods that call ‘super’ (fixed #39) ** no longer reports simple helper methods ** can be configured based on number of calls out
Now reports an error for corrupt config files
Empty config files are ignored
Smells can be configured with scope-specific overrides for any config item
No longer depends directly on the sexp_processor gem
LargeClass now relies only on the given source code (fixed #26)
Switched from ParseTree to ruby_parser for source code parsing
‘MyClass.should_not reek’ now only possible if ParseTree gem installed
LargeClass now also warns about any class with > 9 instance variables (fixed #6)
Now depends on ruby2ruby, to display code better
Duplication notices more repeated method calls
Smells within blocks are now reported better
Now possible to write ‘MyClass.should_not reek’ (fixed #33)
Now counts attr assignments ([]= etc) in feature envy calculations
Doesn’t attempt to find *.reek files when reading code from stdin
Dir.to_source now creates a Report that can be browsed (fixed #36)
Use *.reek files in source tree to configure Reek’s behaviour
Added -f option to configure report format
–sort_order replaced by -f, -c and -s
Matchers provided for rspec; eg. foo.should_not reek
Smells in singleton methods are now analysed
Uncommunicative parameter names in blocks now reported
Modules and blocks now reflected in scope of smell reports
Corrected false reports of long arg lists to yield
A method can now be a UtilityFunction only when it includes a call
Uncommunicative Name now checks instance variables more thoroughly
Uncommunicative Name now warns about names of the form ‘x2’
Added check for duplicated calls within a method
Reduced scope of Feature Envy warnings to cover only overuse of lvars
Added rdoc comments explaining what each smell is about
Chained iterators are no longer mis-reported as nested
New smell: first naive checks for Control Couple
reek now only checks sources passed on the command line
Code snippets can be supplied on the commandline
Added headings and warnings count when smells in multiple files
Added Reek::RakeTask to run reek from rakefiles
Fixed: Returns exit status 2 when smells are reported
Fixed: no longer claims an empty method is a Utility Function
Minor enhancements:
Only reports Feature Envy when the method isn’t a Utility Function
General improvements to assessing Feature Envy
Tweaks:
Fixed: coping with parameterless yield call
Fixed: copes with :self as an expression
Fixed: displaying the receiver of many more kinds of Feature Envy
Fixed: Large Class calculation for Object
Tweaks:
Fixed –version!
Tweaks:
Now works from the source code, instead of requiring each named file
Added integration tests that run reek on a couple of gems
Minor enhancements:
Added –help, –version options
Added –sort option to sort the report by smell or by code location
Some tweaks:
Fixed report printing for Feature Envy when the receiver is a block
Fixed: successive iterators reported as nested
Fixed: Long Method now reports the total length of the method
Fixed: each smell reported only once
1 minor enhancement:
Added a check for nested iterators within a method
Some tweaks:
Begun adding some rdoc
Split some of the specs into more meaningful chunks
Updated the rakefile so that rcov is no longer the default
1 major enhancement:
Initial release
Generated with the Darkfish Rdoc Generator 2.