class MetricFu::FlogGrapher
Attributes
flog_average[RW]
labels[RW]
top_five_percent_average[RW]
Public Class Methods
metric()
click to toggle source
# File lib/metric_fu/metrics/flog/grapher.rb, line 6 def self.metric :flog end
new()
click to toggle source
Calls superclass method
# File lib/metric_fu/metrics/flog/grapher.rb, line 10 def initialize super @flog_average = [] @labels = {} @top_five_percent_average = [] end
Public Instance Methods
data()
click to toggle source
# File lib/metric_fu/metrics/flog/grapher.rb, line 29 def data [ ["average", @flog_average.join(",")], ["top 5% average", @top_five_percent_average.join(",")] ] end
get_metrics(metrics, date)
click to toggle source
# File lib/metric_fu/metrics/flog/grapher.rb, line 17 def get_metrics(metrics, date) if metrics && metrics[:flog] @top_five_percent_average.push(calc_top_five_percent_average(metrics)) @flog_average.push(metrics[:flog][:average]) @labels.update(@labels.size => date) end end
output_filename()
click to toggle source
# File lib/metric_fu/metrics/flog/grapher.rb, line 36 def output_filename "flog.js" end
title()
click to toggle source
# File lib/metric_fu/metrics/flog/grapher.rb, line 25 def title "Flog: code complexity" end
Private Instance Methods
calc_top_five_percent_average(metrics)
click to toggle source
# File lib/metric_fu/metrics/flog/grapher.rb, line 42 def calc_top_five_percent_average(metrics) return calc_top_five_percent_average_legacy(metrics) if metrics[:flog][:pages] method_scores = metrics[:flog][:method_containers].inject([]) do |method_scores, container| method_scores += container[:methods].values.map { |v| v[:score] } end method_scores.sort!.reverse! number_of_methods_that_is_five_percent = (method_scores.size * 0.05).ceil total_for_five_percent = method_scores[0...number_of_methods_that_is_five_percent].inject(0) { |total, score| total += score } if number_of_methods_that_is_five_percent == 0 0.0 else total_for_five_percent / number_of_methods_that_is_five_percent.to_f end end
calc_top_five_percent_average_legacy(metrics)
click to toggle source
# File lib/metric_fu/metrics/flog/grapher.rb, line 61 def calc_top_five_percent_average_legacy(metrics) methods = metrics[:flog][:pages].inject([]) { |methods, page| methods << page[:scanned_methods] } methods.flatten! methods = methods.sort_by { |method| method[:score] }.reverse number_of_methods_that_is_five_percent = (methods.size * 0.05).ceil total_for_five_percent = methods[0...number_of_methods_that_is_five_percent].inject(0) { |total, method| total += method[:score] } if number_of_methods_that_is_five_percent == 0 0.0 else total_for_five_percent / number_of_methods_that_is_five_percent.to_f end end