lib/attractor/calculators/base_calculator.rb~ in attractor-2.1.0 vs lib/attractor/calculators/base_calculator.rb~ in attractor-2.2.0
- old
+ new
@@ -1,54 +1,52 @@
# frozen_string_literal: true
-require 'churn/calculator'
-require 'csv'
-require 'date'
-require 'flog'
-require 'listen'
+require "churn/calculator"
-require 'attractor/value'
+require "attractor/value"
module Attractor
# calculates churn and complexity
class BaseCalculator
- def initialize(file_prefix: '', file_extension: 'rb', minimum_churn_count: 3)
+ attr_reader :type
+
+ def initialize(file_prefix: "", ignores: "", file_extension: "rb", minimum_churn_count: 3, start_ago: "5y")
@file_prefix = file_prefix
@file_extension = file_extension
@minimum_churn_count = minimum_churn_count
+ @start_date = Date.today - Attractor::DurationParser.new(start_ago).duration
+ @ignores = ignores
end
def calculate
churn = ::Churn::ChurnCalculator.new(
file_extension: @file_extension,
file_prefix: @file_prefix,
minimum_churn_count: @minimum_churn_count,
- start_date: Date.today - 365 * 5
+ start_date: @start_date,
+ ignores: @ignores
).report(false)
churn[:churn][:changes].map do |change|
complexity, details = yield(change)
- # flogger = Flog.new(all: true)
- # flogger.flog(change[:file_path])
- # complexity = flogger.total_score
- # details = flogger.totals
- Value.new(file_path: change[:file_path],
- churn: change[:times_changed],
- complexity: complexity,
- details: details,
- history: git_history_for_file(file_path: change[:file_path]))
+ value = Value.new(file_path: change[:file_path],
+ churn: change[:times_changed],
+ complexity: complexity,
+ details: details,
+ history: git_history_for_file(file_path: change[:file_path]))
+ value
end
end
private
def git_history_for_file(file_path:, limit: 10)
history = `git log --oneline -n #{limit} -- #{file_path}`
history.split("\n")
- .map do |log_entry|
+ .map do |log_entry|
log_entry.partition(/\A(\S+)\s/)
- .map(&:strip)
- .reject(&:empty?)
+ .map(&:strip)
+ .reject(&:empty?)
end
end
end
end