History.rdoc
=== 4.8.0 / 2023-09-28
* 2 minor enhancements:
* Added ability to pass down option overrides through Flog.run.
* Removed ancient File.binread alias.
* 1 bug fix:
* Added missing rdoc.
=== 4.7.0 / 2023-07-18
* 3 minor enhancements:
* Extend flog to process complex numbers. (petergoldstein)
* Only penalize magic numbers if they're not assigned to a const (excludes 0/-1).
* Renamed :lit_fixnum to :magic_number.
=== 4.6.6 / 2022-07-03
* 1 minor enhancement:
* Added support for to_proc w/ hash(?!?). (t-kinoshita)
* 2 bug fixes:
* Removed to_proc_normal (eg &:sym/call) as benchmarks are much better.
* ruby3: Fixed anonymous block pass. (prtngn)
=== 4.6.5 / 2022-04-09
* 1 minor enhancement:
* Changed :iter scoring from branch to block_call (same score).
* 1 bug fix:
* Fixed support for ruby 3 (only affected block_pass / to_proc_normal).
=== 4.6.4 / 2019-12-14
* 2 minor enhancements:
* Added basic support for safe_call (nic-potter).
* Added extra complexity penalty to safe_call processing.
=== 4.6.3 / 2019-09-14
* 1 minor enhancement:
* Removed --18 and --19 options to cmdline. No real value anymore.
* 2 bug fixes:
* Fixed some sexp access under STRICT_SEXP=2.
* Fixed option / arg processing bug that caused a hang (reading from stdin).
=== 4.6.2 / 2018-02-14
* 1 bug fix:
* Don't process stdin if cmdline args expand to nothing.
=== 4.6.1 / 2017-02-08
* 1 bug fix:
* Fixed max line number in range report. AKA I'm an idiot.
=== 4.6.0 / 2017-02-01
* 2 minor enhancements:
* Bumped dependency on sexp_processor to 4.8 and up.
* Include new Sexp#line_max info for in_method so DSLs can record line span.
=== 4.5.0 / 2017-01-19
* 3 minor enhancements:
* Added -t=N and --threshold N processing to FlogCLI.
* Added tweakable threshold to Flog (still defaults to 60%).
* Renamed Flog::THRESHOLD to Flog::DEFAULT_THRESHOLD (but kept an alias around).
=== 4.4.1 / 2017-01-13
* 1 bug fix:
* Fixed scoring of Rational lits.
=== 4.4.0 / 2016-05-16
* 1 minor enhancement:
* Switched to path_expander to deal with cmdline args. See path_expander for details.
=== 4.3.2 / 2015-01-30
* 1 bug fix:
* Fixed rdoc url (phiggins)
=== 4.3.1 / 2015-01-09
* 1 bug fix:
* Fixed to_proc_normal scoring on ruby 2.2+. (teoljungberg)
=== 4.3.0 / 2014-07-18
* 1 minor enhancement:
* Added methods_only param to FlogTask. (jocranford)
=== 4.2.1 / 2014-05-29
* 2 bug fixes:
* Fixed grouping by class name. (guilhermesimoes)
* Removed dead rubyforge setting in Rakefile
=== 4.2.0 / 2013-10-18
* 3 minor enhancements:
* Added --extended / -e to put file:line output on next line (for rubymine & friends)
* Extracted MethodBasedSexpProcessor and pushed up to sexp_processor gem.
* Updated dependency on sexp_processor to ~> 4.4.
=== 4.1.2 / 2013-09-05
* 2 bug fixes:
* Don't even record a score if method stack is empty and user used --methods-only.
* Fixed Flog task's default method. (jasonrobertfox)
=== 4.1.1 / 2013-07-11
* 1 minor enhancement:
* Added max_method to delegators.
* 1 bug fix:
* Fixed FlogTask to use FlogCLI. (envygeeks)
=== 4.1.0 / 2013-05-10
* 3 minor enhancements:
* Cleaned up tests by adding assert_hash_in_epsilon. yay!
* Fixed method_location is now cleared on #reset. (makaroni4)
* to_proc_normal is now penalized based on RUBY_VERSION. Scores were benchmarked.
* 1 bug fix:
* Fixed code/home urls in readme/gem.
=== 4.0.0 / 2013-04-18
* 1 major enhancement:
* Renamed Flog#methods to #method_scores. (makaroni4)
* 4 minor enhancements:
* Added accessors for methods, scores. Now available for CIs! (makaroni4)
* Refactored calculations down to 2 methods: total_score and totals. (makaroni4)
* Refactored to #calculate, #threshold. (makaroni4)
* Track stack of nested sclass scopes for parser (pithyless)
=== 3.2.3 / 2013-03-21
* 1 bug fix:
* Don't blow up if a path doesn't exist or isn't readable.
=== 3.2.2 / 2013-01-22
* 1 bug fix:
* Fixed stupid error when run on empty file.
=== 3.2.1 / 2012-12-19
* 1 bug fix:
* Relaxed (and fixed) the ruby_parser dependency.
=== 3.2.0 / 2012-12-18
* 4 minor enhancements:
* Ensure rake/tasklib is loaded when defining FlogTask. (ferrous26)
* Fixed reporting / recording of methods in singleton class blocks. (mihu)
* Refactored error handling code to flog_ruby. Calls flog_ruby! for actual work
* Refactored ruby processing code to flog_ruby!
* 1 bug fix:
* Fixed flogging of || iters. (JacobNinja)
=== 3.1.0 / 2012-11-16
* 4 minor enhancements:
* --quiet option is now false by default, and changed to silence parse warnings.
* Added max_score and max_method. (aselder)
* FlogTask can now take a method to use to figure out score, allowing for total or max_score.
* Switched to capturing RubyParser::SyntaxError (RP 3.0 change).
* 2 bug fixes:
* Avoid redefined warning for File::RUBY19. (svendahlstrand)
* Fixed flog to default to RubyParser if not specified. Allows cleaner programmatic access.
=== 3.0.0 / 2012-11-02
* 1 minor enhancement:
* Added a timeout handler to skip when RubyParser times out on a large file
* 1 bug fix:
* Fixed handling of plain literals in masgn in args.
=== 3.0.0.b3 / 2012-10-22
* 4 minor enhancements:
* Added .rake as a supported extension.
* Create a new parser for every file, preventing state barkification
* Extended DSL support to include hash args (eg task :blah => :dep).
* Extended DSL support to report nested names (eg namespace(blah)::task#woot)
=== 3.0.0.b2 / 2012-08-07
* 1 bug fix:
* Fix for sexp structure changes (no arglists).
=== 3.0.0.b1 / 2012-07-26
* 4 minor enhancements:
* Added --18 and --19 flags to specify parser. Defaults to hybrid.
* Explicitly use Ruby18Parser to remove deprecation warnings.
* Modified processor to deal with cleaner sexps from RP 3.x.
* Use File.binread (File.read in 1.8) to bypass encoding errors
* 2 bug fixes:
* Cleaned up some 1.9 warnings.
* Fixed failing tests against ruby_parser 3
=== 2.5.3 / 2011-09-21
* 1 minor enhancement:
* class_stack now always pushes on symbols or strings for class names.
* 1 bug fix:
* Fixed klass_name returning an ugly mix of sexps and strings.
=== 2.5.2 / 2011-08-11
* 1 minor enhancement:
* Improved parse error output. (impurist)
=== 2.5.1 / 2011-02-18
* 3 minor enhancements:
* Added RegexpError to error handler.
* Improved error output and suggest --continue
* Record the flog score for the full class name, not just suffix. (dkubb)
* 1 bug fix:
* Fixed block_pass when passed a multi-level const (xavier)
=== 2.5.0 / 2010-09-01
* 1 major enhancement:
* Added plugin system. Define a module under Flog to extend it.
* 3 minor enhancements:
* Added special case penalty for wtf to_proc: blah(&b = proc {...}) (benjaminb)
* Improved tests and test coverage.
* Unfactored & refactored report code. Much cleaner and more maintainable now.
* 2 bug fixes:
* Fixed API change for FlogTask (andreacampi)
* Fixed bad edgecase handler for block_pass (benjaminb)
=== 2.4.0 / 2009-12-15
* 4 minor enhancements:
* Cleaned method_name to return "#method" or "::method".
* DSL reporting now handles regexp literals for 'method' names (Marty Andrews)
* Improved tests for process_iter's myriad complexities.
* More doco!
* 1 bug fix:
* Fixed DSL reporting excluding solo-blocks. (eg a single rake task)
=== 2.3.0 / 2009-12-09
* 1 major enhancement:
* Added file:line info to the flog report (Marty Andrews)
* 13 minor enhancements:
* Added .autotest.
* Deleted pre-gauntlet scripts.
* Flog#method_name now at least tries show when it is a class method.
* Flog.parse_options now takes args directly.
* Removed Flog#increment_total_score_by.
* Removed Flog#output_summary.
* Removed Flog#process_attrset.
* Removed Flog#record_method_score.
* Removed Flog#summarize_method.
* Removed Flog::default_options.
* Renamed Flog#analyze_list to process_until_empty.
* Renamed Flog#options to #option
* Rewrote entire test suite (3100 lines down!). Cleaner and less brittle.
=== 2.2.0 / 2009-08-14
* 1 minor enhancement:
* #mass pushed up to sexp_processor
* 5 bug fixes:
* --group didn't use canonical class name.
* Fixed bin/flog to use flog, not flog_files (removed in last rev)
* Fixed crasher when processing a block with empty goalposts.
* Switching to ruby_parser broke ERB syntax error handling. (imccoy)
* skip empty files instead of crashing. yay?
=== 2.1.2 / 2009-06-24
* 1 bug fix:
* Fixed dependency spec on ruby_parser. (jan)
=== 2.1.1 / 2009-06-23
* 2 minor enhancements:
* Added mass accessor for gauntlet and other automated processors
* Switched from ParseTree to ruby_parser. Only 3x slower\! :(
=== 2.1.0 / 2009-03-16
* 5 minor enhancements:
* Added --group to aggregate and sort by class scores.
* Added flog_task.rb
* Made -q default, removed -n.
* Made report output more readable and processable.
* Moved option processing from bin/flog to lib/flog.rb for better testing.
* 1 bug fix:
* removed extra attr_readers for total and average. doh
=== 2.0.0 / 2009-01-20
* 1 major enhancement:
* Pulled in and merged Rick Bradley's awesome flame project into flog.
* 1 minor enhancement:
* Added gauntlet plugin
* 1 bug fix:
* "hugh sasse".split(/\s/).map{|x|x.capitalize}.join(" ") # :-)
=== 1.2.0 / 2008-10-22
* 14 minor enhancements:
* Added -c flag to continue dispite errors.
* Added -m to only report code in methods (skips #none).
* Added -n flag to give NO method details (summary only)
* Added -n to skip method details... pussies should learn grep.
* Added -q to quiet method details (total per method only)
* Added avg & stddev to total.
* Added avg score per method to report.
* Added lots of doco from contributors. Thanks Hugh Sasse!
* Fixed class names when const2/3.
* Fixed unified ruby changes
* Refactored flog with help from flay.
* Refactored get_source_index
* Refactored into gem_updater.rb and cleaned up.
* Works with new incremental rubygems, albiet slower than before.
=== 1.1.0 / 2007-08-21
* 3 major enhancements:
* Added assignments and branches and a lot of other stuff. rad.
* Added process_iter section for DSL style blocks (rake tasks etc).
* Made Flog usable as a library.
* 12 minor enhancements:
* Added -a flag to turn off threshold culling for other tools.
* Added -s for summarizing the score.
* Added -v feedback to know what file you're flogging.
* Added branching penalty so tons of nested conditionals get beat down.
* Added send (3).
* Capture and ignore SyntaxErrors from template/generator code. Stupid DHH.
* Report can now take an IO object.
* block_args now penalizes all non-benign forms of block_pass.
* Added usage to bin/flog. Moved -I processing to bin/flog.
* Added unpack.rb and update_scores.rb at base level (not installed)
* Added scoring for block_pass.
* Converted totals to use distance formula on ABC's.
* 3 bug fixes:
* Ran flog on every latest gem available. Found a bunch of problems.
* Use a stack for both class/module and method accounting.
* block_args weren't processing the arg
=== 1.0.2 / 2007-08-01
* 1 bug fix:
* stupid rubygems bin wrapper... *sigh*
=== 1.0.1 / 2007-08-01
* 1 bug fix:
* New Rule: NEVER release new software when exhausted: Fixed dependency list.
=== 1.0.0 / 2007-08-01
* 1 major enhancement:
* Birthday!