Module: Legion::Extensions::Validator::Helpers::QualityGate

Defined in:
lib/legion/extensions/validator/helpers/quality_gate.rb

Constant Summary collapse

WEIGHTS =
{
  completeness: 0.35,
  correctness:  0.35,
  quality:      0.20,
  security:     0.10
}.freeze
DEFAULT_THRESHOLD =
0.8

Class Method Summary collapse

Class Method Details

.passing?(score:, threshold: nil) ⇒ Boolean

Returns:

  • (Boolean)


38
39
40
41
# File 'lib/legion/extensions/validator/helpers/quality_gate.rb', line 38

def passing?(score:, threshold: nil)
  threshold ||= Legion::Settings.dig(:fleet, :validation, :quality_gate_threshold) || DEFAULT_THRESHOLD
  score[:aggregate] >= threshold
end

.score(completeness:, correctness:, quality:, security:) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/legion/extensions/validator/helpers/quality_gate.rb', line 19

def score(completeness:, correctness:, quality:, security:)
  w = Legion::Settings.dig(:fleet, :validation, :quality_weights) || WEIGHTS

  aggregate = (
    (completeness * (w[:completeness] || WEIGHTS[:completeness])) +
    (correctness * (w[:correctness] || WEIGHTS[:correctness])) +
    (quality * (w[:quality] || WEIGHTS[:quality])) +
    (security * (w[:security] || WEIGHTS[:security]))
  ).round(3)

  {
    completeness: completeness,
    correctness:  correctness,
    quality:      quality,
    security:     security,
    aggregate:    aggregate
  }
end