== 1.2.7 (in development) === Major Changes * 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 === Minor Changes * 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 http://wiki.github.com/kevinrutherford/reek for further details. == 1.2.6 (2009-11-28) === Minor Changes * Corrected display of module methods to use # (#56) == 1.2.5 (2009-11-19) === Minor Changes * Ignores ruby_parser errors and pretends the offending file was empty == 1.2.4 (2009-11-17) === Major Changes * The -f, -c and -s options for formatting smell warnings have been removed === Minor Changes * ControlCouple now warns about parameters defaulted to true/false == 1.2.3 (2009-11-2) === Minor Changes * 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' == 1.2.1 (2009-10-02) === Minor Changes * New smell: Class Variable See http://wiki.github.com/kevinrutherford/reek for details == 1.2 2009-09-20 === Major Changes * 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' === Minor Changes * Reek's RDoc is now hosted at http://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 http://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 == 1.1.3 2009-05-19 === Minor Changes * No longer depends directly on the sexp_processor gem === Fixes * LargeClass now relies only on the given source code (fixed #26) == 1.1.2 2009-05-18 === Major Enhancements * Switched from ParseTree to ruby_parser for source code parsing * 'MyClass.should_not reek' now only possible if ParseTree gem installed == 1.1.1 2009-05-08 === Minor enhancements * 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 == 1.1.0 2009-04-10 === Minor enhancements * Now possible to write 'MyClass.should_not reek' (fixed #33) === Fixes * Now counts attr assignments ([]= etc) in feature envy calculations * Doesn't attempt to find *.reek files when reading code from stdin == 1.0.1 2009-04-06 === Fixes * Dir[...].to_source now creates a Report that can be browsed (fixed #36) == 1.0.0 2009-04-05 === Major enhancements * 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 === Minor enhancements * Smells in singleton methods are now analysed * Uncommunicative parameter names in blocks now reported * Modules and blocks now reflected in scope of smell reports === Fixes * Corrected false reports of long arg lists to yield * A method can now be a UtilityFunction only when it includes a call == 0.3.1 2008-11-17 === Minor enhancements * 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 == 0.3.0 2008-11-02 === Minor enhancements * 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 === Fixes * Fixed: Returns exit status 2 when smells are reported * Fixed: no longer claims an empty method is a Utility Function == 0.2.3 2008-09-22 * 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 == 0.2.2 2008-09-15 * Tweaks: * Fixed --version! == 0.2.1 2008-09-14 * Tweaks: * Now works from the source code, instead of requiring each named file * Added integration tests that run reek on a couple of gems == 0.2.0 2008-09-10 * Minor enhancements: * Added --help, --version options * Added --sort option to sort the report by smell or by code location == 0.1.1 2008-09-09 * 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 == 0.1.0 2008-09-09 * 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 == 0.0.1 2008-09-08 * 1 major enhancement: * Initial release