List of Metrics
- Class metrics
- NumAttr : Size : The number of attributes in the class.
- NumOps : Size : The number of operations in a class.
- NumPubOps : Size : The number of public operations in a class.
- Setters : Size : The number of operations with a name starting with 'set'.
- Getters : Size : The number of operations with a name starting with 'get', 'is', or 'has'.
- NOC : Inheritance : The number of children of the class (UML Generalization).
- NumDesc : Inheritance : The number of descendents of the class (UML Generalization).
- NumAnc : Inheritance : The number of ancestors of the class.
- OpsInh : Inheritance : The number of inherited operations.
- AttrInh : Inheritance : The number of inherited attributes.
- NumAssEl_P : Coupling : The number of associated elements in the same package.
- NumAssEl_M : Coupling : The number of associated elements in the same model.
- Connectors : Complexity : The number of connectors owned by the class.
- Diags : Diagram : The number of times the class appears on a diagram.
- Package metrics
- NumCls : Size : The number of classes in the package.
- NumCls_tc : Size : The number of classes in the package, its subpackages, and so on.
- NumOpsCls : Size : The number of operations in the classes of the package.
- H : Cohesion : Relational cohesion. (H = (R+1) / NumCls)
- Ca : Coupling : Afferent coupling. The number of elements outside this package that depend on classes or interfaces in this package.
- Ce : Coupling : Efferent coupling. The number of elements outside this package that classes or interfaces in this package depend on.
- I : : Instability or ease of change. (I = Ce / (Ca + Ce))
- A : : Abstractness (or generality) of the package. (A = NbAbstractClass / NbClass)
- D : : Distance from the main sequence. (D = (A+I-1)*sqrt(2))
- DN : : Normalized distance D' from the main sequence. (DN = |A+I-1|)
- Nesting : Nesting : Nesting level of the package in the package hierarchy.
- ConnComp : Cohesion : The connected components formed by the classes and interfaces of the package.
- Use case metrics
- NumUseUC : : The number of profile use this use case.
- NumUseUC_Rec : The number of profile use this use case recursively.
- NumLevelUC : : The number of level included.
- NumLevelUC_Rec : The number of level included recursively.
- NumPortletUC : : The number of portlet included.
- NumPortletUC_Rec : The number of portlet included recursively.
- ExtPts : : The number of extension points of the use case.
- Diags : Diagram : The number of times the use case appears on a diagram.
- Profile metrics
- NumUseCase : : The number of use case directly linked.
- NumUseCase_Rec : The number of use case linked recursively.
- NumLevel : : The number of level directly linked.
- NumLevel_Rec : : The number of level linked recursively.
- NumPortlet : : The number of portlet directly linked.
- NumPortlet_Rec : The number of portlet linked recursively.
- NOC : Inheritance : The number of children of the profile.
- NumDesc : Inheritance : The number of descendents of the profile.
- NumAnc : Inheritance : The number of ancestors of the profile.
List of design rules
- Class rules
- AttrNameOvr : Naming : The class defines a property of the same name as an inherited attribute.
- ConcreteSuper : Style : The abstract class has a parent class that is not abstract.
- CyclicInheritance : Inheritance : Class inherits from itself directly or indirectly.
- DepCycle : Style : The class has circular references.
- DescendentRef : Style : The class references a descendent class via associations, UML dependencies, attribute or parameter types.
- DupAttrNames : Correctness : The class has two or more properties with identical names.
- DupOps : Correctness : Class has duplicate operations.
- GodClass : Style : The class has more than 60 attributes and operations.
- Keyword : Naming : Class name is a Java or C++ keyword.
- MultipleInheritance : Inheritance : Use of multiple inheritance - class has more than one parent.
- NoSpec : Completeness : Abstract class has no child classes.
- NotCapitalized : Naming : Class names should start with a capital letter.
- Unnamed : Completeness : Class has no name.
- Unused : Completeness : The class is not used anywhere.
- Property rules
- Capitalized : Naming : Attribute names should start with a lowercase letter.
- Keyword : Naming : Attribute name is a Java or C++ keyword.
- NoType : Completeness : The attribute has no specified type.
- PublicAttr : Style : Non-constant attribute is public.
- Unnamed : Completeness : The attribute has no name.
- Operation rules
- Capitalized : Naming : Operation names should start with a lower case letter.
- DupName : Naming : The operation has two or more parameters with identical names.
- Keyword : Naming : Operation name is a Java or C++ keyword.
- LongParList : Style : The operation has a long parameter list with five or more parameters.
- Unnamed : Completeness : Operation has no name.
- Parameter rules
- Package rules
- Capitalization : Naming : Package name has upper case letters.
- DupClsName : Naming : The package has two or more classes or interfaces with identical names.
- EmptyPackage : Completeness : The package has no contents.
- Keyword : Naming : Package name is a Java or C++ keyword.
- SDP1 : Style : Package violates the Stable-Dependencies Principle (SDP).
- SDP2 : Style : Package violates the Stable-Dependencies Principle (SDP).
- Unnamed : Completeness : Package has no name.
- Association rules
- AggEnds : Correctness : The binary association has two composite or shared aggregation ends.
- LooseEnd : Completeness : The association has one or more ends not connected to a model element.
- NaryAgg : Style : The association has three or more association ends.
- NaryAggEnds : Correctness : The n-ary association has a composite or shared aggregation end.
- NaryNavEnds : Correctness : The n-ary association indicates a navigable association end.
- Associationclass rules
- AssocClass : Style : Avoid association classes.
- Generalization rules
- NoChild : Completeness : The child end of the generalization is not connected to a model element.
- NoParent : Completeness : The parent end of the generalization is not connected to a model element.
- TypeMismatch : Correctness : Parent and child of the generalization are not of the same type.
- Actor rules
- NoAssoc : Completeness : The actor is not associated with any use cases, classes, or subsystems.
- Unnamed : Correctness : The actor has no name.
- Usecase rules
- CyclicIncludes : Correctness : Use case directly or indirectly includes itself.
- DupExPoint : Correctness : The use case has two or more extension points of the same name.
- FunctionalDecomp : Style : Use case both includes and is included in other use cases.
- Unnamed : Correctness : The use case has no name.
- Unused : Completeness : The use case is not used.
