IFS Fortran Standard
List of rules:
L1 : implicit none
L2 : use module, only
L3 : global variables
L4 : new language features
L5 : argument INTENT
L6 : OPTIONAL argument position
L7 : OPTIONAL argument keyword usage
L8 : copying allocatable arrays
L9 : interfaces for routines
L10 : declaration syntax
L11 : array syntax
L12 : array declarations in NPROMA routines
L13 : array declarations in parallel routines
L14 : notations
L15 : dummy/actual array dimensions
L16 : INTENT attribute in NPROMA routines
L17 : Pointers in NPROMA routines
L18 : Design of NPROMA routines
L19 : Design of derived types
I1 : naming of variables, subroutines, modules
I2 : KIND specification
I3 : derived types in modules
I4 : Excessively long interfaces
I5 : MPL and message passing
I6 : MPL and string argument
I7 : DRHOOK instrumentation
SC1 : horizontal indexing
SC2 : horizontal looping
SC3 : function calls from inside KPROMA loops
SC4 : no horizontal indirection
S1 : END IF / ENDIF
S2: order of argument declarations
S3 : line continuation
S4: no unqualified END statements
S5 : unused variables
S6 : no TABS
Coding norms 2011 rules
R1 : Encapsulation rules
R2 : Subroutine length
R3 : Cosmetic changes
R4 : Unused variables
R5 : Variable name suffixes
R6 : Array syntax
R7 : Cut-n-paste
R8 : LECMWF variable
R9 : LELAM variable
R10 : LFI or GRIB
R11 : message passing
R12 : Derived types in a module
R13 : Code must be threadsafe
R14 : Abnormal termination
R15 : The save statement
R16 : argument passing characteristics
R17 : SELECT CASE
R18 : include interfaces
R19 : number of arguments to routines
R20 : names of variables
R21 : Name prefixes and suffixes
R22 : Aladin routine names
R23 : NULOUT & NULERR usage
R24 : universal constants
R25 : MPL string argument
R26 : code structure and file location
R27 : namelist usage
R28 : DATA statement
R29 : F90 free format
R30 : consistent style
R31 : no TAB usage
R32 : IMPLICIT NONE
R33 : no hard-coded array dimensions
R34 : “::” notation
R35 : mandatory KIND specification
R36 : USE, ONLY
R37 : PARAMETER wherever possible
R38 : variable name prefixes
R39 : banned statements
R40 : no implicit array sizing
R41 : automatic and allocatable arrays
R42 : deallocation of allocatables
R43 : comparison operators
R44 : value comparisons
R45 : argument intents are compulsory
R46 : order of optional arguments
R47 : ENDIF / END IF
R48 : removal of dead code
IFS Fortran Standard
Coding norms 2011 rules
R13 : Code must be threadsafe
View page source
R13 : Code must be threadsafe
¶
status
: not a lintable rule, and should be enforced via testing!