class FlayTask

Attributes

dirs[RW]

What directories to operate on. Sensible defaults.

name[RW]

The name of the task. Defaults to :flay

threshold[RW]

Threshold to fail the task at. Default 200.

verbose[RW]

Verbosity of output. Defaults to rake’s trace (-t) option.

Public Class Methods

new(name = :flay, threshold = 200, dirs = nil) { |self| ... } click to toggle source

Creates a new FlayTask instance with given name, threshold, and dirs.

# File lib/flay_task.rb, line 28
def initialize name = :flay, threshold = 200, dirs = nil
  @name      = name
  @dirs      = dirs || %w(app bin lib spec test)
  @threshold = threshold
  @verbose   = Rake.application.options.trace

  yield self if block_given?

  @dirs.reject! { |f| ! File.directory? f }

  define
end

Public Instance Methods

define() click to toggle source

Defines the flay task.

# File lib/flay_task.rb, line 44
def define
  desc "Analyze for code duplication in: #{dirs.join(", ")}"
  task name do
    require "flay"
    flay = Flay.run(dirs)
    flay.report if verbose

    raise "Flay total too high! #{flay.total} > #{threshold}" if
      flay.total > threshold
  end
  self
end