class Attractor::Suggester

makes suggestions for refactorings

Attributes

values[RW]

Public Class Methods

new(values) click to toggle source
# File lib/attractor/suggester.rb, line 8
def initialize(values)
  @values = values || []
end

Public Instance Methods

suggest(threshold = 95) click to toggle source
# File lib/attractor/suggester.rb, line 12
def suggest(threshold = 95)
  products = @values.map { |val| val.churn * val.complexity }
  products.extend(DescriptiveStatistics)
  quantile = products.percentile(threshold.to_i)

  @values.select { |val| val.churn * val.complexity > quantile }
    .sort_by { |val| val.churn * val.complexity }.reverse
end