class Flogger

Public Class Methods

new(folders) click to toggle source
# File lib/merge_reviewer/flogger.rb, line 6
def initialize(folders)
  flogger = FlogCLI.new(FlogCLI.parse_options(["-b", "-g"]))
  flogger.flog(folders)
  
  file = Tempfile.new('flog-output')
  flogger.report(file)
  file.rewind
  @results = build_file_flog_score(file)
end

Public Instance Methods

build_file_flog_score(file) click to toggle source
# File lib/merge_reviewer/flogger.rb, line 47
def build_file_flog_score(file)
  mapper = {}
  file.each_line do |line|
    mapper = line_to_parts(line, mapper)
  end
  mapper
end
get_class_flog_total(class_name) click to toggle source
# File lib/merge_reviewer/flogger.rb, line 21
def get_class_flog_total(class_name)
  @class_flog_scores[class_name]
end
line_to_parts(line, mapper) click to toggle source
# File lib/merge_reviewer/flogger.rb, line 25
def line_to_parts(line, mapper)   
  line.strip!
  return mapper if line.empty?
  if line.match(/(\d+\.\d+):\s(.+)\stotal/)
    class_score, class_name = $1.to_f, $2
    set_class_flog_total(class_name, class_score)
  elsif line.match(/(\d+\.\d+):\s+(.+)#(.+)\s+(.+):(\d+)/)
    method_score, class_name, method_name, method_path, line_number = $1.to_f, $2, $3, $4, $5
    mapper[method_path] ||= {
      class_name: class_name, 
      class_score: get_class_flog_total(class_name), 
      problems: []
    }
    mapper[method_path][:problems] << {
      method_score: method_score,
      method_name: method_name,
      line_number: line_number
    }
  end
  mapper
end
set_class_flog_total(class_name, score) click to toggle source
# File lib/merge_reviewer/flogger.rb, line 16
def set_class_flog_total(class_name, score)
  @class_flog_scores ||= {}
  @class_flog_scores[class_name] = score
end