Class: Ea::Lint::Rules::DuplicateNameRule

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

Overview

Two classes with the same name in the same package.

Instance Method Summary collapse

Methods inherited from LintRule

name

Instance Method Details

#check(model) ⇒ Object



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

def check(model)
  classes = (model.collections[:objects] || [])
             .select { |o| o.object_type == "Class" }
  grouped = classes.group_by { |c| [c.package_id, c.name] }
  grouped.flat_map do |(pkg_id, name), group|
    next [] if group.size == 1

    group.map do |klass|
      offense(entity_id: klass.object_id,
              entity_name: klass.name,
              message: "Duplicate class name '#{name}' in package #{pkg_id} " \
                       "(#{group.size} occurrences)")
    end
  end
end