class FlogGauntlet

def score_for dir

def score_for dir
  # files = `find #{dir} -name \\*.rb | grep -v gen.*templ`.split(/\n/)
  files = Dir["**/*.rb"].reject { |f| f =~ /gen.*templ|gemspec.rb/ }
  flogger = Flog.new
  flogger.flog_files files
  methods = flogger.totals.reject { |k,v| k =~ /\#none$/ }
  n = 20
  topN = Hash[*methods.sort_by { |k,v| -v }.first(n).flatten]
  {
    :max     => methods.values.max,
    :total   => flogger.total_score,
    :size    => methods.size,
    :average => flogger.average,
    :stddev  => flogger.stddev,
    :methods => topN,
  }
rescue SyntaxError => e
  warn e.inspect + " at " + e.backtrace.first(5).join(', ') if $v
  $syntax_error.dup
rescue => e
  warn e.inspect + " at " + e.backtrace.first(5).join(', ') if $v
  $misc_error.dup
end