This is an old revision of the document!
Names | Definitions | |
---|---|---|
ACAIC | Ancestor Class-Attribute Import Coupling | |
ACMIC | Ancestors Class-Method Import Coupling | |
AID | Average Inheritance Depth of an entity | |
ANA | Count the average number of classes from which a class inherits informations | |
CAM | Computes the relatedness among methods of the class based upon the parameter list of the methods | |
CBO | Coupling Between Objects of one entity | |
CBOingoing | Coupling Between Objects of one entity (in-going coupling only, towards the entity) | |
CBOoutgoing | Coupling Between Objects of one entity (out-going coupling only, from the entity) | |
CIS | Counts the number of public methods in a class | |
CLD | Class to Leaf Depth of an entity. | |
cohesionAttributes | Percentage of fields (declared and inherited) used by the declared methods of one entity | |
connectivity | Number of couples of methods that use each other | |
CP | Number of packages that depend on the package containing entity | |
DAM | Returns the ratio of the number of private(protected) Attributes to the total number of Attributes declared in a class | |
DCAEC | Returns the DCAEC (Descendants Class-Attribute Export Coupling) of one entity | |
DCCdesign | Number of classes that a class is directly related to (by attribute and parameter declarations) | |
DCCimplementation | Number of classes that a class is directly related to (by attribute declarations and message passing) | |
DCMEC | Returns the DCMEC (Descendants Class-Method Export Coupling) of one entity | |
DIT | Returns the DIT (Depth of inheritance tree) of an entity. | |
DSC | Total number of classes in a model | |
EIC | Number of inheritance relationships in which superclasses are in external packages | |
EIP | Number of inheritance relationships where the superclass is in the package containing entity and the subclass is in another package | |
FanOut | Number of methods and fields used by one entity | |
ICHClass | Compute the complexity of an entity as the sum of the complexities of its declared and inherited methods | |
IR | Number of calls from the methods of an entity to the methods and fields declared in its super-entities | |
LCOM1 | Returns the LCOM (Lack of COhesion in Methods) of an entity | |
LCOM2 | Returns the LCOM (Lack of COhesion in Methods) of an entity | |
LCOM5 | Returns the LCOM (Lack of COhesion in Methods) of an entity | |
LOC | Returns the numbre of line of code in the methods of an entity | |
McCabe | Returns the sum of the cyclomatic complexities of the operations of an entity | |
MFA | Ratio of the number of methods inherited by a class to the number of methods accessible by member methods of the class | |
MLOCsum | Returns the numbre of line of code in the methods of an entity. Same as LOC | |
MOA | Count the number of data declarations whose types are user defined classes | |
NAD | number of attributes declared | |
NADextended | Number of attributes declared in a class and in its member classes | |
NCM | Returns the NCM (Number of Changed Methods) of an entity. | |
NCP | the number of classes package containing entity | |
NMA | Returns the NMA (Number of New Methods) of an entity | |
NMD | number of methods declared | |
NMDextended | Number of methods declared in the class and in its member classes | |
NMI | Number of methods inherited by an entity | |
NMO | Number of methods overridden by an entity | |
NOA | Number of ancestors of an entity | |
NOC | Number of children of an entity | |
NOD | Number of descendents of an entity | |
NOF | ||
NOH | Number of class hierarchies in a model | |
NOM | Numer of all methods defined in an entity | |
NOP | Number of parents of an entity | |
NOParam | Number of parameters of the methods of an entity | |
NOPM | Count of the Methods that can exhibit polymorphic behavior | |
NOTC | Number of invocations of JUnit assert methods that occur in the code of a test case | |
NOTI | Number of transitive invocation among methods of a class. See the Law of Demeter for a definition | |
NPrM | Number protected members of an entity | |
oneWayCoupling | Coupling between objects of an entity (outgoing only). Same as CBOoutgoing | |
PIIR | The number of inheritance relationships existing between classes in the package containing entity | |
PP | The number of provider packages of the package containing entity | |
REIP | EIP divided by the sum of PIIR and EIP | |
RFC | Response for class: number of methods of an entity and of methods of other entities that are invoked by the methods of the entity | |
RFCextended | Response for class: number of methods of an entity and of methods of other entities that are invoked by the methods of the entity plus number of methods declared by that entity | |
RFP | the number of class references from classes belonging to other packages to classes belonging to the package containing entity | |
RPII | PIIR divided by the sum of PIIR and EIP. | |
RRFP | RFP divided by the sum of RFP and the number of internal class references | |
RRTP | RTP divided by the sum of RTP and the number of internal class references | |
RTP | The number of class references from classes in the package containing entity to classes in other packages | |
SIX | Returns the SIX (Specialisation IndeX) of an entity | |
TestCaseLOC | Number of lines of code of all the methods of a test case | |
TLOC | Number of lines of code of all the methods of an entity. Same as LOC | |
VGSum | McCabe Complexity: Number of points of decision + 1. Same as McCabe | |
WMC1 | Weight of an entity considering the complexity of each of its method as being 1. (Default constructors are considered even if not explicitely declared) | |
WMCinvocations | Weight of an entity considering the complexity of each of its method as being the numbers of invocations that they perform. (Default constructors are considered even if not explicitely declared). | |
WMCmccabe | Weight of an entity considering the complexity of each of its method as being their McCabe cyclomatic complexity. (Default constructors are considered even if not explicitely declared). |
Computing POM metrics using PADL is made easy by the helper class pom.helper.MetricsGenerator
. After having installed CPL, PADL, and POM, just go into the POM Tests
project and have a look at this class. It provides a main method with snippets of code to call one of the three methods:
computeMetricsFromDirectory
computeMetricsFromEclipse
computeMetricsFromJARs
which can be used to compute automatically metrics from various input sources. Also have a look at the constant array listing the metrics that must be computed or avoided: METRICS_TO_AVOID
and METRICS_TO_COMPUTE
.