Fortran

Fortran Metrics

Andthen Operators

  • Mnemonic ANTH

  • Description Number of 'andthen' operators

Number of arithmetic if

  • Mnemonic ARIF

  • Description Count number of arithmetic if

Number of comment blocks

  • Mnemonic BCOM

  • Description Number of comment blocks.

Header Blocks Of Comment

  • Mnemonic BHCO

  • Description Number block of comment placed before the beginning of the artefact.

Blank Lines

  • Mnemonic BLAN

  • Description Number of blank lines of code in the source file(s).

Brace Lines

  • Mnemonic BRAC

  • Description Number of lines of code containing only a brace in the source file(s).

Break in Loop

  • Mnemonic BRKL

  • Description Number of 'break' statements in loop in the function

Case Blocks

  • Mnemonic CABL

  • Description Number of 'case' blocks in 'switch' in the function

Case Labels

  • Mnemonic CASE

  • Description Number of 'case' labels in the function

Cyclomatic Complexity

  • Mnemonic CCN

  • Description Number of linearly independent paths in the function control graph.

Control Flow Token

  • Mnemonic CFT

  • Description Number of tokens in the control flow of functions

Call Graph Depth

  • Mnemonic CGDM

  • Description Maximum depth of the call graph.

Comment Lines

  • Mnemonic CLOC

  • Description Number of lines of comments in the source file(s).

Continue Statements

  • Mnemonic CONT

  • Description Number of 'continue' statements in the function

Commented Statements

  • Mnemonic CSTAT

  • Description Number of Commented Statements.

Minimum Number of Cycles

  • Mnemonic CYCL

  • Description Minimum number of call graph cycles in which the function is involved (including recursivity).

Number of declarative statements

  • Mnemonic DECL

  • Description Count number of declarative statements

Default Statement

  • Mnemonic DEFT

  • Description Number of 'default' blocks in 'switch' in the function

Distinct Operands

  • Mnemonic DOPD

  • Description Number of distinct operands: variables and constants ([Halstead,76]: n2)

Distinct Operators

  • Mnemonic DOPT

  • Description Number of distinct operators: language keywords ([Halstead,76]: n1)

Do While Statements

  • Mnemonic DOWH

  • Description Number of 'do...while' statements in the function

Else Statements

  • Mnemonic ELSE

  • Description Number of 'else' statements

For Statements

  • Mnemonic FOR

  • Description Number of 'for' statements in the function

Structures Added

  • Mnemonic SADD

  • Description Number of control structures added since the previous version.

Structures Modified

  • Mnemonic SMOD

  • Description Number of control structures modified since the previous version.

Structures Removed

  • Mnemonic SREM

  • Description Number of control structures removed since the previous version.

Number of Structures

  • Mnemonic SSIZ

  • Description Number of control structures: iterations, selections, sequences

Goto Statements

  • Mnemonic GOTO

  • Description Number of 'goto' statements

Header Lines Of Comment

  • Mnemonic HCOM

  • Description Number of comment lines placed before the beginning of the artefact.

Header Lines Of Code

  • Mnemonic HLOC

  • Description Number of lines between the function or class definition and the first opening brace.

Cloned Code

  • Mnemonic ICC

  • Description Duplicated code in this artefact

Cloned Control Flow Tokens

  • Mnemonic ICFTC

  • Description Number of duplicated tokens in control flow of functions

If Statements

  • Mnemonic IF

  • Description Number of 'if' statements

Line Count

  • Mnemonic LC

  • Description Number of lines.

Loop Statements

  • Mnemonic LOOP

  • Description Number of loop statements in the function

Mixed Lines

  • Mnemonic MLOC

  • Description Number of lines containing both code and comment in the source files.

Maximum Nested Structures

  • Mnemonic NEST

  • Description Maximum number of nested structures

Non-Cyclic Paths

  • Mnemonic PATH

  • Description Number of non-cyclic paths in the function.

Orelse operators

  • Mnemonic OREL

  • Description Number of 'orelse' operators

% of parsed tokens

  • Mnemonic PARSE

  • Description Percent of parsed tokens

Return Statements

  • Mnemonic RETURN

  • Description Number of 'return' statements in the function

Repeated Code Blocks

  • Mnemonic RS

  • Description Duplicated blocks in the function

Skipped Lines of Comment code

  • Mnemonic SKLC

  • Description Skipped Lines of Comment code i.e. lines that match a user defined regular expression to skip lines of comments.

Source Lines Of Code

  • Mnemonic SLOC

  • Description Number of lines of source code in the source file(s).

Executable Statements

  • Mnemonic STAT

  • Description Total number of executable statements.

Switch Statements

  • Mnemonic SWIT

  • Description Number of 'switch' statements in the function

Operand Occurrences

  • Mnemonic TOPD

  • Description Number of occurrences of operands: variables and constants ([Halstead,76]: N2)

Operator Occurrences

  • Mnemonic TOPT

  • Description Number of occurrences of operators: language keywords ([Halstead,76]: N1)

Lines Added

  • Mnemonic LADD

  • Description Number of lines added since the previous version.

Lines Modified

  • Mnemonic LMOD

  • Description Number of lines modified since the previous version.

Lines Removed

  • Mnemonic LREM

  • Description Number of lines removed since the previous version.

Fortran Ruleset

Backward Goto shall not be used

  • Mnemonic BWGOTO

  • Description Backward gotos shall not be used.

Missing Default

  • Mnemonic DEFAULT

  • Description The final clause of a switch statement shall be the default clause (see [MISRA-C:2004]: RULE 15.3).

Use of continue is deprecated (Fortran)

  • Mnemonic NOCONTINUE

  • Description The 'continue' statement is deprecated.

Missing final else

  • Mnemonic ELSEFINAL

  • Description All if ... else if constructs shall be terminated with an else clause (see [MISRA-C:2004]: RULE 14.10).

Incorrect Function Name

  • Mnemonic NAMING_FUNCTION

  • Description Function name does not fit the convention.

Incorrect Module Name

  • Mnemonic NAMING_MODULE

  • Description Module name does not fit the convention.

Incorrect Program Name

  • Mnemonic NAMING_PROGRAM

  • Description Program name does not fit the convention.

Incorrect Subroutine Name

  • Mnemonic NAMING_SUBROUTINE

  • Description Subroutine name does not fit the convention.

Factorizable Classes

  • Mnemonic CAC_CL

  • Description Consider classes refactorization

Factorizable Files

  • Mnemonic CAC_FI

  • Description Consider files refactorization

Factorizable Functions

  • Mnemonic CAC_FN

  • Description Consider functions refactorization

Factorizable Packages

  • Mnemonic CAC_PKG

  • Description Consider packages refactorization

Cloned Classes

  • Mnemonic CC_CL

  • Description There shall be no duplicated classes

Cloned Files

  • Mnemonic CC_FI

  • Description There shall be no duplicated files

Cloned Functions

  • Mnemonic CC_FN

  • Description There shall be no duplicated functions

Cloned Algorithmic

  • Mnemonic CFTC_FN

  • Description There shall be no algorithmic cloning

Continue shall not be used

  • Mnemonic NOCONT

  • Description The 'continue' statement shall not be used (see [MISRA-C:2004]: RULE 14.5).

'cycle' shall not be used

  • Mnemonic NOCYCL

  • Description The 'cycle' statement shall not be used.

FIXME shall not be commited in sources code

  • Mnemonic R_NOFIXME

  • Description FIXME shall not be commited in sources code as it brings confusion regarding code reliability.

GOTO shall not be used

  • Mnemonic NOGOTO

  • Description A unconditional GOTO shall not be used to jump outside the paragraph.

Label out a switch

  • Mnemonic NOLABEL

  • Description A switch label shall only be used when the most closely-enclosing compound statement is the body of a switch statement (see [MISRA-C:2004]: RULE 15.1).

Avoid Duplicated Blocks in Function

  • Mnemonic RS_FN

  • Description There shall be no duplicated parts in functions

'stop' shall not be used

  • Mnemonic NOSTOP

  • Description The 'stop' statement shall not be used.

TODO shall not be commited in sources code

  • Mnemonic R_NOTODO

  • Description TODO shall not be commited in sources code as it brings confusion regarding code reliability.

Missing case in switch

  • Mnemonic ONECASE

  • Description Every switch statement shall have at least one case clause (see [MISRA-C:2004]: RULE 15.5).

Relaxed violation

  • Mnemonic RELAX

  • Description A rule violation is relaxed and justified.

Multiple exits are not allowed

  • Mnemonic RETURN

  • Description A function shall have a single point of exit at the end (see [MISRA-C:2004]: RULE 14.7).

Use of SAVE and DATA

  • Mnemonic SAVE_DATA_USE

  • Description A function must not use the SAVE and DATA statements.

Multiple exit

  • Mnemonic SGLEXIT

  • Description For any iteration statement there shall be at most one 'exit' statement used for loop termination.