Class: ArchUnit::Metrics::Assertion::MetricZoneViolation

Inherits:
Common::Assertion::Violation show all
Defined in:
lib/archunit/metrics/assertion/metric_zone.rb

Overview

A file whose abstractness/instability point falls in a discouraged zone.

Constant Summary collapse

ZONES =
%i[pain uselessness].freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(distance_info:, zone:) ⇒ MetricZoneViolation

Returns a new instance of MetricZoneViolation.



17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/archunit/metrics/assertion/metric_zone.rb', line 17

def initialize(distance_info:, zone:)
  unless distance_info.is_a?(Extraction::DistanceInfo)
    raise ArgumentError, 'distance_info must be a DistanceInfo value'
  end
  unless ZONES.include?(zone)
    raise ArgumentError, "unknown architectural zone: #{zone.inspect}"
  end

  @distance_info = distance_info
  @zone = zone
  super()
end

Instance Attribute Details

#distance_infoObject (readonly)

Returns the value of attribute distance_info.



15
16
17
# File 'lib/archunit/metrics/assertion/metric_zone.rb', line 15

def distance_info
  @distance_info
end

#zoneObject (readonly)

Returns the value of attribute zone.



15
16
17
# File 'lib/archunit/metrics/assertion/metric_zone.rb', line 15

def zone
  @zone
end

Instance Method Details

#abstractnessObject



30
31
32
# File 'lib/archunit/metrics/assertion/metric_zone.rb', line 30

def abstractness
  Calculation::Distance.abstractness.calculate(distance_info)
end

#instabilityObject



34
35
36
# File 'lib/archunit/metrics/assertion/metric_zone.rb', line 34

def instability
  Calculation::Distance.instability.calculate(distance_info)
end