Sha256: be82d1a73bae649e3dcaa9e7bd92f32a8a69aed132cf44ab0f8ca4db84597952

Contents?: true

Size: 1.22 KB

Versions: 44

Compression:

Stored size: 1.22 KB

Contents

begin
  require 'flog'
  require 'yaml'

  class Float
    def round_to(n)
      (self * 10**n).round.to_f * 10**-n
    end
  end

  config    = YAML.load_file(File.expand_path('../../../config/flog.yml', __FILE__)).freeze
  threshold = config.fetch('threshold').to_f.round_to(1)

  # original code by Marty Andrews:
  # http://blog.martyandrews.net/2009/05/enforcing-ruby-code-quality.html
  desc 'Analyze for code complexity'
  task :flog do
    flog = Flog.new
    flog.flog Array(config.fetch('path', 'lib'))

    totals = flog.totals.select  { |name, score| name[-5, 5] != '#none' }.
                         map     { |name, score| [ name, score.round_to(1) ] }.
                         sort_by { |name, score| score }

    max = totals.last[1]
    unless max >= threshold
      raise "Adjust flog score down to #{max}"
    end

    bad_methods = totals.select { |name, score| score > threshold }
    if bad_methods.any?
      bad_methods.reverse_each do |name, score|
        puts '%8.1f: %s' % [ score, name ]
      end

      raise "#{bad_methods.size} methods have a flog complexity > #{threshold}"
    end
  end
rescue LoadError
  task :flog do
    abort 'Flog is not available. In order to run flog, you must: gem install flog'
  end
end

Version data entries

44 entries across 44 versions & 6 rubygems

Version Path
response-0.0.2 tasks/metrics/flog.rake
mutant-0.2.20 tasks/metrics/flog.rake
mutant-0.2.17 tasks/metrics/flog.rake
mutant-0.2.16 tasks/metrics/flog.rake
mutant-0.2.15 tasks/metrics/flog.rake
mutant-0.2.14 tasks/metrics/flog.rake
mutant-0.2.13 tasks/metrics/flog.rake
mutant-0.2.12 tasks/metrics/flog.rake
mutant-0.2.11 tasks/metrics/flog.rake
mutant-0.2.9 tasks/metrics/flog.rake
mutant-0.2.8 tasks/metrics/flog.rake
mutant-0.2.7 tasks/metrics/flog.rake
mutant-0.2.6 tasks/metrics/flog.rake
mutant-0.2.5 tasks/metrics/flog.rake
mutant-0.2.4 tasks/metrics/flog.rake
mutant-0.2.3 tasks/metrics/flog.rake
mutant-0.2.2 tasks/metrics/flog.rake
mutant-0.2.1 tasks/metrics/flog.rake
mutant-0.2.0 tasks/metrics/flog.rake
fragrant-0.0.5 vendor/bundle/ruby/1.9.1/gems/virtus-0.5.2/tasks/metrics/flog.rake