Sha256: f133f20a6b60f9671b2c2c38c7f05300eadfecb4381440f4fbac9830ac691023

Contents?: true

Size: 1.65 KB

Versions: 8

Compression:

Stored size: 1.65 KB

Contents

class FlayHotspot < MetricFu::Hotspot
  include MetricFu::HotspotScoringStrategies

  COLUMNS = %w{flay_reason flay_matching_reason}

  def columns
    COLUMNS
  end

  def name
    :flay
  end

  def map(row)
    MetricFu::HotspotScoringStrategies.present(row)
  end

  def reduce(scores)
    MetricFu::HotspotScoringStrategies.sum(scores)
  end

  def score(metric_ranking, item)
    MetricFu::HotspotScoringStrategies.percentile(metric_ranking, item)
  end

  def generate_records(data, table)
    return if data==nil
    Array(data[:matches]).each do |match|
      problems  = match[:reason]
      matching_reason = problems.gsub(/^[0-9]+\) /,'').gsub(/\:[0-9]+/,'')
      files     = []
      locations = []
      match[:matches].each do |file_match|
        file_path = file_match[:name].sub(%r{^/},'')
        locations << "#{file_path}:#{file_match[:line]}"
        files     << file_path
      end
      files = files.uniq
      files.each do |file|
        table << {
          "metric" => self.name,
          "file_path" => file,
          "flay_reason" => problems+" files: #{locations.join(', ')}",
          "flay_matching_reason" => matching_reason
        }
      end
    end
  end

  def present_group(group)
    occurences = group.size
    "found #{occurences} code duplications"
  end

  def present_group_details(group)
    occurences = group.size
    message = "found #{occurences} code duplications<br/>"
    group.each do |item|
      problem    = item.data["flay_reason"]
      problem    = problem.gsub(/^[0-9]*\)/,'')
      problem    = problem.gsub(/files\:/,' <br>&nbsp;&nbsp;&nbsp;files:')
      message << "* #{problem}<br/>"
    end
    message
  end

end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
metric_fu-4.4.0 lib/metric_fu/metrics/flay/flay_hotspot.rb
metric_fu-4.3.1 lib/metric_fu/metrics/flay/flay_hotspot.rb
metric_fu-4.3.0 lib/metric_fu/metrics/flay/flay_hotspot.rb
metric_fu-4.2.1 lib/metric_fu/metrics/flay/flay_hotspot.rb
metric_fu-4.2.0 lib/metric_fu/metrics/flay/flay_hotspot.rb
metric_fu-4.1.3 lib/metric_fu/metrics/flay/flay_hotspot.rb
metric_fu-4.1.2 lib/metric_fu/metrics/flay/flay_hotspot.rb
metric_fu-4.1.1 lib/metric_fu/metrics/flay/flay_hotspot.rb