Module: RspecSprint::Fixers::LetItBe::Report

Defined in:
lib/rspec_sprint/fixers/let_it_be/report.rb

Overview

候補と factory プロファイルから「factory time 削減の上限割合」を出す。上限値: 候補が参照する factory の top_level_time を「全てこの候補で消える」と仮定した最大値。実際にどの call site がホットかは集計データから特定できないため(設計 Open Question 1)、これは upper bound であって実収量ではない。

Defined Under Namespace

Classes: Result

Class Method Summary collapse

Class Method Details

.build(candidates:, factories:, let_bang_count: 0) ⇒ Object



15
16
17
18
19
20
21
22
23
# File 'lib/rspec_sprint/fixers/let_it_be/report.rb', line 15

def build(candidates:, factories:, let_bang_count: 0)
  denominator = factories.sum { |f| f.top_level_time.to_f }
  referenced = candidates.map { |c| c.factory_name.to_s }.uniq
  numerator = factories
    .select { |f| referenced.include?(f.name.to_s) }
    .sum { |f| f.top_level_time.to_f }
  share = denominator.zero? ? 0.0 : numerator / denominator
  Result.new(candidates: candidates, upper_bound_share: share, let_bang_count: let_bang_count)
end