class MetricAdapter::FlogAdapter

Attributes

flog[R]

Public Class Methods

new(flog) click to toggle source
# File lib/adapters/flog_adapter.rb, line 5
def initialize(flog)
  @flog = flog
end

Public Instance Methods

metrics() click to toggle source
# File lib/adapters/flog_adapter.rb, line 9
def metrics
  metrics = []
  
  flog.each_by_score do |signature, score|
    if locatable?(signature)
      metrics << create_metric(signature, score)
    end
  end
  
  metrics
end

Private Instance Methods

create_metric(signature, score) click to toggle source
# File lib/adapters/flog_adapter.rb, line 23
def create_metric(signature, score)
  location = method_location(signature)
  message  = "Flog: #{score.round(2)}"

  metric = Metric.new(location, signature, message)
  metric.score = score

  metric
end
locatable?(signature) click to toggle source

Flog will report on code that is not in a class or method, all of this top level code may be spread out across multiple files, so we can're report on that code's location.

# File lib/adapters/flog_adapter.rb, line 41
def locatable?(signature)
  !!flog.method_locations[signature]
end
method_location(signature) click to toggle source
# File lib/adapters/flog_adapter.rb, line 33
def method_location(signature)
  path = flog.method_locations[signature]
  Location.new(path)
end