This list is intended to be comprehensive, but we do make errors. If you don't see a metric you want,
it may be named differently, or we may have it but forgot to add it to this list, or we may need to add it.
E-mail us and we can sort it out for you.
| Understand API Metric Name and Description | Project | File |
Function or Program Unit | Class | Common Name |
|
| AvgCyclomatic -- Average cyclomatic complexity for all nested functions or methods. | | ACFJPV | | CJP | |
| AvgCyclomaticModified -- Average modified cyclomatic complexity for all nested functions or methods. | | ACFJPV | | CJP | |
| AvgCyclomaticStrict -- Average strict cyclomatic complexity for all nested functions or methods. | | ACJ | | CJP | |
| AvgEssential -- Average essential cyclomatic complexity for all nested functions or methods. | | ACFJ | | CJ | |
| AvgLine -- Average number of lines for all nested functions or methods. | | ACFPV | | CJ | |
| AvgLineBlank -- Average number of blank for all nested functions or methods. | | ACFPV | | CJ | |
| AvgLineCode -- Average number of lines containing source code for all nested functions or methods. | | ACFPV | | CJ | |
| AvgLineComment -- Average number of lines containing comment for all nested functions or methods. | | ACFPV | | CJ | |
| CountClassBase -- Number of immediate base classes. | | | | CJ | IFANIN |
| CountClassCoupled -- Number of other classes coupled to. Coupling means using a type, data, or member from that class. Any number of couplings to a given class counts as 1 towards the metric total. | | | | CJ | CBO, Coupling between Object classes |
| CountClassDerived -- Number of immediate subclasses. (i.e. the number of classes one level down the inheritance tree from this class). | | | | CJ | NOC, Number Of Children |
| CountDeclClass -- Number of classes. | CJ | CJ | | | |
| CountDeclClassMethod -- Number of class methods. | | | | CJ | |
| CountDeclClassVariable -- Number of class variables. | | | | CJ | |
| CountDeclFile -- Number of files. Note that this doesn't count files brought in via includes unless they are also defined in the Understand project file. | ACFJPV | | | | |
| CountDeclFileCode -- Number of code files. | C | | | | |
| CountDeclFileHeader -- Number of header files. | C | | | | |
| CountDeclFunction -- Number of functions. | CJ | CJ | | | |
| CountDeclInstanceMethod -- Number of instance methods. | | | | CJ | NIM |
| CountDeclInstanceVariable -- Number of instance variables. | | | | CJ | NIV |
| CountDeclInstanceVariablePrivate -- Number of private instance variables. | | | | C | |
| CountDeclInstanceVariableProtected -- Number of protected instance variables. | | | | C | |
| CountDeclInstanceVariablePublic -- Number of public instance variables. | | | | C | |
| CountDeclLibunit -- Number of library units. A "library unit" in Ada is a top-level (not nested) Ada program unit. | A | | | | |
| CountDeclMethod -- Number of local (not inherited) methods. | | | | CJ | WMC |
| CountDeclMethodAll -- Number of methods, including inherited ones. | | | | CJ | RFC, Response For Class |
| CountDeclMethodConst -- Number of local const methods. | | | | C | |
| CountDeclMethodDefault -- Number of local default visibility methods. | | | | J | |
| CountDeclMethodFriend -- Number of local (not inherited) friend methods. | | | | C | NFM |
| CountDeclMethodPrivate -- Number of local (not inherited) private methods. | | | | CJ | NPRM |
| CountDeclMethodProtected -- Number of local protected methods. | | | | CJ | |
| CountDeclMethodPublic -- Number of local (not inherited) public methods. | | | | CJ | NPM |
| CountDeclModule -- Number of modules. | FP | FPV | F | | |
| CountDeclProgUnit -- Number of program units. | F | F | | | |
| CountDeclSubprogram -- Number of subprograms. | FPV | FPV | FPV | V | |
| CountInput -- The number of inputs a function uses. Inputs include parameters and global variables that are used in the function. Of the two general approachs to calculating FANIN (informational versus structural) ours is the informational approach. | | | CJ | | FANIN |
| CountLine -- Number of all lines. | ACFJPV | ACFJPV | ACFJPV | ACJV | NL |
| CountLineBlank -- Number of blank lines. | ACFJPV | ACFJPV | ACFJPV | ACJV | BLOC |
| CountLineCode -- The number of lines that contain source code. Note that a line can contain source and a comment and thus count towards multiple metrics. For Classes this is the sum of the CountLineCode for the member functions of the class. | ACFJPV | ACFJPV | ACFJPV | ACJV | LOC |
| CountLineCodeDecl -- Number of lines containing declarative source code. Note that a line can be declarative and executable - int i =0; for instance. | AC | AC | AC | AC | |
| CountLineCodeExe -- Number of lines containing executable source code. | AC | AC | AC | AC | |
| CountLineComment -- Number of lines containing comment. This can overlap with other code counting metrics. For instance int j = 1; // comment has a comment, is a source line, is an executable source line, and a declarative source line. | ACFJPV | ACFJPV | ACFJPV | ACJV | CLOC |
| CountLineInactive -- This is the number of lines that are inactive from the view of the preprocessor. In other words, they are on the FALSE side of a #if or #ifdef preprocessor directive. | C | C | C | C | |
| CountLinePreprocessor -- Number of preprocessor lines. | C | C | C | C | |
| CountOutput -- The number of outputs that are SET. This can be parameters or global variables. Of the two general approachs to calculating FANOUT (informational versus structural) ours is the informational approach. | | | CJ | | FANOUT |
| CountPath -- Number of unique paths though a body of code, not counting abnormal exits or gotos. | | | CFJ | A | NPATH |
| CountSemicolon -- Number of semicolons. | ACJ | ACJ | ACJ | AJ | |
| CountStmt -- Number of declarative plus executable statements. | ACFJV | ACFJPV | ACFJPV | ACJV | |
| CountStmtDecl -- Number of declarative statements. Note that there can be overlap here with executable statements - int i = 0; for instance. | ACFJPV | ACFJPV | ACFJPV | ACJV | |
| CountStmtEmpty -- Number of empty statements.Note that there can be overlap here with executable statements - int i = 0; for instance. | C | C | C | C | |
| CountStmtExe -- Number of executable statements.Note that there can be overlap with declarative statements (int i = 0; ) | ACFJPV | ACFJPV | ACFJPV | ACJ | |
| Cyclomatic -- Cyclomatic complexity as per the original NIST paper on the subject. Edges - Nodes + Connected Components. | | | ACFJPV | A | |
| CyclomaticModified -- Modified cyclomatic complexity.The Cyclomatic Complexity except that each decision in a multi-decision structure (switch in C/Java, Case in Ada, computed Goto and arithmetic if in FORTRAN) statement is not counted and instead the entire multi-way decision structure counts as 1 | | | ACFJPV | A | |
| CyclomaticStrict -- Strict cyclomatic complexity. The Cyclomatic Complexity with logical conjunction and logical and in conditional expressions also adding 1 to the complexity for each of their occurrences. | | | ACJPV | A | |
| Essential -- Essential complexity. | | | ACFJ | A | ev(G) |
| Knots -- Measure of overlapping jumps. | | | AC | A | |
| MaxCyclomatic -- Maximum cyclomatic complexity of all nested functions or methods. | | CJ | | CJ | |
| MaxCyclomaticModified -- Maximum modified cyclomatic complexity of all nested functions or methods. | | CJ | | CJ | |
| MaxCyclomaticStrict -- Maximum strict cyclomatic complexity of all nested functions or methods. | | CJ | | CJ | |
| MaxEssentialKnots -- Maximum Knots after structured programming constructs have been removed. | | | AC | A | |
| MaxInheritanceTree -- The depth of a class within the inheritance hierarchy is the maximum number of nodes from the class node to the root of the inheritance tree. The root node has a DIT of 0. The deeper within the hierarchy, the more methods the class can inherit, increasing its complexity. | | | | CJ | DIT |
| MaxNesting -- Maximum nesting level of control constructs (if, while, for, switch, etc.) in the function. | | | ACFJPV | A | |
| MinEssentialKnots -- Minimum Knots after structured programming constructs have been removed. | | | AC | A | |
| RatioCommentToCode -- Ratio of number of comment lines to number of code lines.Note that because some lines are both code and comment, this could easily yield percentages higher than 100 | ACFJPV | ACJPV | ACFJPV | ACJV | |
| PercentLackOfCohesion -- 100% minus average cohesion for class data members. Calculates what percentage of class methods use a given class instance | | | | CJ | |
| SumCyclomatic -- Sum of cyclomatic complexity of all nested functions or methods. | | CJ | | CJ | WMC |
| SumCyclomaticModified -- Sum of modified cyclomatic complexity of all nested functions or methods. | | CJ | | CJ | |
| SumCyclomaticStrict -- Sum of strict cyclomatic complexity of all nested functions or methods. | | CJ | | CJ | |
| SumEssential -- Sum of essential complexity of all nested functions or methods. | | CJ | | CJ | |