Sha256: 9dfac69a2e2f28fa2d10d53359ee78f279bebb8dade44b73a40980e6a678b02f
Contents?: true
Size: 1.5 KB
Versions: 2
Compression:
Stored size: 1.5 KB
Contents
# frozen_string_literal: true require 'churn/calculator' require 'csv' require 'date' require 'flog' require 'listen' require 'attractor/value' module Attractor # calculates churn and complexity class BaseCalculator def initialize(file_prefix: '', file_extension: 'rb', minimum_churn_count: 3) @file_prefix = file_prefix @file_extension = file_extension @minimum_churn_count = minimum_churn_count 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 ).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])) 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| log_entry.partition(/\A(\S+)\s/) .map(&:strip) .reject(&:empty?) end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
attractor-2.1.0 | lib/attractor/calculators/base_calculator.rb~ |
attractor-2.0.5 | lib/attractor/calculators/base_calculator.rb~ |