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 |