class FlogTask
A rake front-end for flog, allowing task creation with options for verbosity, reporting, and a failure threshold.
Attributes
dirs[RW]
What directories to operate on. Sensible defaults.
method[RW]
Method to use to score. Defaults to :total_score
name[RW]
The name of the task. Defaults to :flog
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 = :flog, threshold = 200, dirs = nil, method = nil, methods_only = false) { |self| ... }
click to toggle source
Creates a new FlogTask
instance with given name
, threshold
, dirs
, and method
.
# File lib/flog_task.rb, line 37 def initialize name = :flog, threshold = 200, dirs = nil, method = nil, methods_only = false @name = name @dirs = dirs || %w(app bin lib spec test) @threshold = threshold @method = method || :total_score @verbose = Rake.application.options.trace @methods_only = methods_only yield self if block_given? @dirs.reject! { |f| ! File.directory? f } define end
Public Instance Methods
define()
click to toggle source
Defines the flog task.
# File lib/flog_task.rb, line 55 def define desc "Analyze for code complexity in: #{dirs.join(', ')}" task name do require "flog_cli" flog = FlogCLI.new :continue => true, :quiet => true, :methods => @methods_only expander = PathExpander.new dirs, "**/*.{rb,rake}" files = expander.process flog.flog(*files) desc, score = flog.send method desc, score = "total", desc unless score # total only returns a number flog.report if verbose raise "Flog score for #{desc} is too high! #{score} > #{threshold}" if score > threshold end self end