Class: RubyMaat::Analysis::Entities

Inherits:
BaseAnalysis show all
Defined in:
lib/ruby_maat/analysis/entities.rb

Overview

Entities analysis - counts revisions per entity

Instance Method Summary collapse

Instance Method Details

#analyze(dataset, options = {}) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/ruby_maat/analysis/entities.rb', line 7

def analyze(dataset, options = {})
  min_revs = options[:min_revs] || 1

  # Group by entity and count revisions manually
  entity_stats = {}

  dataset.to_df.to_a.each do |row|
    entity = row["entity"]
    revision = row["revision"]

    entity_stats[entity] ||= Set.new
    entity_stats[entity] << revision
  end

  # Build results and apply minimum revisions filter
  results = []
  entity_stats.each do |entity, revisions|
    n_revs = revisions.size
    next if n_revs < min_revs

    results << {
      entity: entity,
      "n-revs": n_revs
    }
  end

  # Sort by number of revisions (descending)
  results.sort! { |a, b| b[:"n-revs"] <=> a[:"n-revs"] }

  to_csv_data(results, [:entity, :"n-revs"])
end