Class: ChurnVsComplexity::Delta::MultiChecker

Inherits:
Object
  • Object
show all
Defined in:
lib/churn_vs_complexity/delta/multi_checker.rb

Instance Method Summary collapse

Constructor Details

#initialize(serializer:, factory:, commits:, language:, excluded:) ⇒ MultiChecker

Returns a new instance of MultiChecker.



8
9
10
11
12
13
14
# File 'lib/churn_vs_complexity/delta/multi_checker.rb', line 8

def initialize(serializer:, factory:, commits:, language:, excluded:)
  @serializer = serializer
  @excluded = excluded
  @factory = factory
  @commits = commits
  @language = language
end

Instance Method Details

#check(folder:) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/churn_vs_complexity/delta/multi_checker.rb', line 16

def check(folder:)
  indexed_commits = @commits.map.with_index do |commit, index|
    [commit, index]
  end

  results = []

  concurrency = [CONCURRENCY, indexed_commits.size].min

  concurrency.times.map do |ci|
    Thread.new do
      loop do
        commit, index = indexed_commits.shift
        break if commit.nil?

        result = check_commit(commit:, data_isolation_id: ci, folder:)
        results[index] = result
      end
    end
  end.each(&:join)

  @serializer.serialize(results)
end