class MetricFu::FlogGenerator
Public Class Methods
metric()
click to toggle source
# File lib/metric_fu/metrics/flog/generator.rb, line 6 def self.metric :flog end
Public Instance Methods
analyze()
click to toggle source
# File lib/metric_fu/metrics/flog/generator.rb, line 19 def analyze @method_containers = {} @flogger.calculate @flogger.each_by_score do |full_method_name, score, operators| container_name = full_method_name.split("#").first path = @flogger.method_locations[full_method_name] if @method_containers[container_name] @method_containers[container_name].add_method(full_method_name, operators, score, path) @method_containers[container_name].add_path(path) else mc = MethodContainer.new(container_name, path) mc.add_method(full_method_name, operators, score, path) @method_containers[container_name] = mc end end end
emit()
click to toggle source
# File lib/metric_fu/metrics/flog/generator.rb, line 10 def emit parse_options = FlogCLI.parse_options [ "--all", options[:continue] ? "--continue" : nil, ].compact @flogger = FlogCLI.new parse_options @flogger.flog *files_to_flog end
per_file_info(out)
click to toggle source
# File lib/metric_fu/metrics/flog/generator.rb, line 43 def per_file_info(out) @method_containers.each_pair do |_klass, container| container.methods.each_pair do |_method_name, data| next if data[:path].nil? file, line = data[:path].split(":") out[file][line] << { type: :flog, description: "Score of %.2f" % data[:score] } end end end
to_h()
click to toggle source
# File lib/metric_fu/metrics/flog/generator.rb, line 36 def to_h sorted_containers = @method_containers.values.sort_by(&:highest_score).reverse { flog: { total: @flogger.total_score, average: @flogger.average, method_containers: sorted_containers.map(&:to_h) } } end
Private Instance Methods
files_to_flog()
click to toggle source
# File lib/metric_fu/metrics/flog/generator.rb, line 57 def files_to_flog options[:dirs_to_flog].flatten.map do |p| if File.directory? p then Dir[File.join(p, '**/*.{rb,rake}')] else p end end.flatten end