class MetricFu::FlayGenerator

Public Class Methods

metric() click to toggle source
# File lib/metric_fu/metrics/flay/generator.rb, line 3
def self.metric
  :flay
end

Public Instance Methods

analyze() click to toggle source
# File lib/metric_fu/metrics/flay/generator.rb, line 12
def analyze
  @matches = @output.chomp.split("\n\n").map { |m| m.split("\n  ") }
end
calculate_result(matches) click to toggle source

TODO: move into analyze method

# File lib/metric_fu/metrics/flay/generator.rb, line 21
def calculate_result(matches)
  total_score = matches.shift.first.split("=").last.strip
  target = []
  matches.each do |problem|
    reason = problem.shift.strip
    lines_info = problem.map do |full_line|
      name, line = full_line.split(":").map(&:strip)
      { name: name, line: line }
    end
    target << [reason: reason, matches: lines_info]
  end
  {
    total_score: total_score,
    total: "Total Score #{total_score}",
    matches: target.flatten
  }
end
emit() click to toggle source
# File lib/metric_fu/metrics/flay/generator.rb, line 7
def emit
  args =  "#{minimum_duplication_mass} #{dirs_to_flay}"
  @output = run!(args)
end
to_h() click to toggle source
# File lib/metric_fu/metrics/flay/generator.rb, line 16
def to_h
  { flay: calculate_result(@matches) }
end

Private Instance Methods

dirs_to_flay() click to toggle source
# File lib/metric_fu/metrics/flay/generator.rb, line 48
def dirs_to_flay
  options[:dirs_to_flay].join(" ")
end
minimum_duplication_mass() click to toggle source
# File lib/metric_fu/metrics/flay/generator.rb, line 41
def minimum_duplication_mass
  flay_mass = options[:minimum_score]
  return "" unless flay_mass

  "--mass #{flay_mass} "
end