Class: SixthSense::Scoring::Aggregator

Inherits:
Object
  • Object
show all
Defined in:
lib/sixth_sense/scoring/aggregator.rb

Constant Summary collapse

AXES =
%i[adequacy redundancy quality].freeze

Instance Method Summary collapse

Constructor Details

#initialize(level:) ⇒ Aggregator

Returns a new instance of Aggregator.



10
11
12
# File 'lib/sixth_sense/scoring/aggregator.rb', line 10

def initialize(level:)
  @level = level
end

Instance Method Details

#analyze(test_file, context) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/sixth_sense/scoring/aggregator.rb', line 14

def analyze(test_file, context)
  analyzer_results = applicable_analyzers.map { |analyzer_class| analyzer_class.new.analyze(test_file, context) }
  axis_scores = AXES.map { |axis| axis_score(axis, analyzer_results) }
  measured_values = axis_scores.select(&:measured?).map(&:value)

  Result::FileReport.new(
    test_file: test_file,
    axis_scores: axis_scores,
    composite: measured_values.empty? ? nil : measured_values.min.round(2),
    level: @level,
    warnings: context.warnings
  )
end