Class: Ea::Lint::Rules::OrphanElementRule

Inherits:
LintRule
  • Object
show all
Defined in:
lib/ea/lint/rules/orphan_element.rb

Overview

Class with no parent package (orphan). Usually indicates a modeling accident.

Instance Method Summary collapse

Methods inherited from LintRule

name

Instance Method Details

#check(model) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/ea/lint/rules/orphan_element.rb', line 11

def check(model)
  valid_pkg_ids = (model.collections[:packages] || [])
                    .map(&:package_id).to_set

  (model.collections[:objects] || []).select { |o| o.object_type == "Class" }.map do |klass|
    next unless klass.package_id

    unless valid_pkg_ids.include?(klass.package_id)
      offense(entity_id: klass.object_id,
              entity_name: klass.name,
              message: "Class references missing package_id=#{klass.package_id}")
    end
  end.compact
end