class Gitlab::Dangerfiles::Weightage::Reviewers

Weights after (current multiplier of 2)

------------------------------——————————–+ | reviewer type | weight(times in reviewer pool) | ------------------------------——————————–+ | reduced capacity reviewer | 1 | | reviewer | 2 | | hungry reviewer | 4 | | reduced capacity traintainer | 3 | | traintainer | 6 | | hungry traintainer | 8 | ------------------------------——————————–+

@api private

Constants

DEFAULT_REVIEWER_WEIGHT
TRAINTAINER_WEIGHT

Attributes

reviewers[R]
traintainers[R]

Public Class Methods

new(reviewers, traintainers) click to toggle source
# File lib/gitlab/dangerfiles/weightage/reviewers.rb, line 26
def initialize(reviewers, traintainers)
  @reviewers = reviewers
  @traintainers = traintainers
end

Public Instance Methods

execute() click to toggle source
# File lib/gitlab/dangerfiles/weightage/reviewers.rb, line 31
def execute
  # TODO: take CODEOWNERS into account?
  # https://gitlab.com/gitlab-org/gitlab/issues/26723

  weighted_reviewers + weighted_traintainers
end

Private Instance Methods

add_weighted_reviewer(reviewers, reviewer, weight) click to toggle source
# File lib/gitlab/dangerfiles/weightage/reviewers.rb, line 54
def add_weighted_reviewer(reviewers, reviewer, weight)
  if reviewer.reduced_capacity
    reviewers.fill(reviewer, reviewers.size, weight)
  elsif reviewer.hungry
    reviewers.fill(reviewer, reviewers.size, weight * Gitlab::Dangerfiles::Weightage::CAPACITY_MULTIPLIER + DEFAULT_REVIEWER_WEIGHT)
  else
    reviewers.fill(reviewer, reviewers.size, weight * Gitlab::Dangerfiles::Weightage::CAPACITY_MULTIPLIER)
  end
end
weighted_reviewers() click to toggle source
# File lib/gitlab/dangerfiles/weightage/reviewers.rb, line 42
def weighted_reviewers
  reviewers.each_with_object([]) do |reviewer, total_reviewers|
    add_weighted_reviewer(total_reviewers, reviewer, Gitlab::Dangerfiles::Weightage::BASE_REVIEWER_WEIGHT)
  end
end
weighted_traintainers() click to toggle source
# File lib/gitlab/dangerfiles/weightage/reviewers.rb, line 48
def weighted_traintainers
  traintainers.each_with_object([]) do |reviewer, total_traintainers|
    add_weighted_reviewer(total_traintainers, reviewer, TRAINTAINER_WEIGHT)
  end
end