Skip to content

Latest commit

 

History

History
32 lines (30 loc) · 1.76 KB

File metadata and controls

32 lines (30 loc) · 1.76 KB

Antipattern-Analyzer for Meta-Models

Currently supported Metrics:

  • Number of Classes
  • Counting Complexity (number of all attributes, references, supertyp relations and operations)
  • Conversion to a Hypergraph
    • counting nodes
    • counting hyperedes
    • calculating entropy

Currently supported Anti-Pattern:

  • Class Has More Than One ID see here
  • Malformed Multiplicity Element
    • complete, triggers on [*,y] or [x,y] with x > y
    • restricted, triggers only on [x,y] with x > y
  • Unnamed Element see here
    • complete, an ENamedElement has null or empty string as name
    • only not Packages, an ENamedElement which is not an EPackage has null or empty string as name
  • Enumeration Has Attributes see here
    • an EEnumeration has an EAttribute as one of its contents
  • Reference Has No Type see here
    • slightly variation only for EReference and EAttribute
    • excluding e.g. EOperations which are ETypedElements but might represent a procedure/"void"
    • element has no type
  • Diamond Inheritance
    • DiamondBottom -> DiamondLeft -> DiamondTop
    • DiamondBottom -> DiamondRight -> DiamondTop
    • -> DiamondBottom triggers the antipattern
  • Class Not In Package Contained
    • an EClass is not contained in any EPackage
  • Multiple Possible Containers
    • an instance of an EClass can be contained in multiple different containers (not at the same time though)