class MetricAdapter::FlayAdapter

Attributes

flay[R]

Public Class Methods

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

Public Instance Methods

metrics() click to toggle source
# File lib/adapters/flay_adapter.rb, line 9
def metrics
  metrics = flay.hashes.map do |hash_key, nodes|
    nodes.permutation(2).map do |node_a, node_b|
      create_metric(hash_key, node_a, node_b)
    end
  end

  metrics.flatten
end

Private Instance Methods

create_metric(hash_key, node_a, node_b) click to toggle source
# File lib/adapters/flay_adapter.rb, line 21
def create_metric(hash_key, node_a, node_b)
  is_identical = flay.identical[hash_key]
  similarity   = is_identical ? "identical" : "similar"
  score = flay.masses[hash_key]
  
  message = "Flay: #{score}, #{similarity} to #{node_location(node_b)}"
  # TODO: generate signatures from locations
  signature = ""
  
  metric = Metric.new(node_location(node_a), signature, message)
  metric.score = score
  metric
end
node_location(node) click to toggle source
# File lib/adapters/flay_adapter.rb, line 35
def node_location(node)
  Location.new(node.file, node.line)
end