.. _messages-identifiers:
=========================
Messages identifiers
=========================
Description
~~~~~~~~~~~~
This documentation is automatically extracted from :file:aslint.base_checkers
This module defines the generic objects to check source files.
There are several classes for each type of checking and derivated classes
for each type of error or warning.
There is a convenient class CheckList to register the messages to check for
a type of checking and source type (it simply avoids import *
or to forget
to register a check, use checkers_from_context too).
A warning or error message is an instance of one of these classes.
All the messages for a source file are stored in a MsgList object (if the
same error is raised twice, there will be two objects of the same class
in the MsgList store).
An instance of the Report class allows to store the MsgList instances for
all the checked source files.
Each message has a unique identifier. This is compulsory to be registered in
a CheckList object and a good practice at all.
The docstring of each message contains a short description on the first line,
and then a longer description that gives the developer some possibilities
to suppress it.
The messages identifiers are as 'Xijnn' and follow the following rules.
The 'X' letter means:
- 'E' as 'Error': this is an error, we cannot pass over (for example because
the compiler stops).
- 'C' as 'Convention': this could be a warning but we consider that it must
not occur in the source files. So it is as worse as 'E' and can not be
tolerated.
- 'W' as 'Warning': this is a warning. Good practices should fix it but in
some cases, it cannot be removed and has to be tolerated.
- 'R' as 'Refactoring': this could be use in future to detect or mark code
that needs refactoring.
- 'I' as 'Information': just an information, a recommendation (disabled
warnings are reported as 'I').
The first digit 'i' defines the type of checking:
- 0: check of fortran source files using a compiler
- 1: check of fortran source files using textual analysis
- 2: check of testcase files
- 3: check of C source files
- 4: check of python source files
- 5: check of data files (material and geometrical data)
- 6: check of catalog files (command and elements)
- 9: check of filenames
The second digit 'j' defines the type of error/warning:
- 0: language/syntax errors
- 1: arguments passing
- 2: types
- 3: declarations
- 4: standard conformance
- 5: coding conventions
First two digits for special categories:
- 88: disabled, hidden messages
- 99: sentinels messages
The last two digits 'nn' are the number of the message in this subtype.
Example: 'E0102' is an error (E) reported by the compiler (0) concerning the
argument passing (1) and this is a message (02) is this category.
To list all the registered messages (and check the unicity of the ids), run
the unittest test_messages
of __init__.py
of the aslint package:
.. code-block:: sh
cd $HOME/dev/codeaster/devtools/lib/aslint python _test_aslint.py -doc TestAslint.build_messages_doc
List of messages
~~~~~~~~~~~~~~~~
E0001
Unclassifiable statement
E0002
Invalid character
E0003
Invalid unit
C0004
Line truncated
C0005
Invalid X descriptor
E0006
Invalid form of statement
W0007
Missing continous character '&'
E0101
Type mismatch
I0102
Procedure called with an implicit interface
This message is only used to "ignore" this before that the interface
have been added.
E0103
Rank mismatch
W0104
Dummy argument
E0105
Too few elements in argument
E0106
Too many arguments
E0107
Not enough arguments
C0108
Uninitialized variable
C0109
Maybe uninitialized variable
W0202
Possible change of value in conversion
E0203
No implicit type
W0204
Operands of comparison operator mismatch
W0205
Same variable used for IN and OUT argument
The same variable is used for an input and an output argument.
W0206
Problem of alignment of variables
E0301
Duplicate external declaration
W0302
Unused variable
W0303
Unused parameter
W0304
Unused label
C0305
Symbol used before being typed
E0306
Expected another dimension in array declaration
W0307
Unused (function) parameter
C0308
Call with an implicit interface
An explicit interface must be defined to call an external subprogram.
You must add the corresponding include statement for this subprogram.
C0401
Nonconforming tab character
W0402
Character will be truncated
C0403
Character is truncated
C0404
Obsolescent feature
Source code may not work unaltered with modern compilers.
See http://fortranwiki.org/fortran/show/Modernizing+Old+Fortran
``DATA`` statements should be replaced by adding the ``PARAMETER`` attribute. Example:: character(len=3) :: tchar(2) data tchar /'AAA', 'BBB'/ replaced by:: character(len=3), parameter :: tchar(2) = (/'AAA', 'BBB'/)
W0405
Equivalence between different types
E0406
Missing comma
C0407
Nonstandard type declaration
C0408
Deprecated Hollerith constant
W0409
Deleted feature
C0410
Unexpected type for array index
C0411
Real array index
C0412
Double complex
W0413
Equality/inequality comparison for floating-point numbers
It is unsafe to rely on exact floating-point comparisons. Slight variations
in rounding can change the outcome of such comparisons, leading to
non-convergence or other unexpected behavior.
It is relevant only if the variables have been assigned with the same value.
Prefer use: abs(a-b) < abs((a+b)/2)*r8prem() to test equality with a small
tolerance.
We should only compare to r8vide() or other assigned numbers.
C0414
Unary operator following arithmetic operator
The same code may be compiled differently by different compilers.
Example: d1=a**-2*b
gets interpretted as d1=a**(-2*b)
by ifort but
as d1=(a**-2)*b
by gfortran.
C1001
implicit none
C1002
Unauthorized statement
These statements should not be used: stop, return, intrinsic, entry,
dimension, equivalence, include.
Prefer use '#include' instead of the 'include' fortran statement.
W1003
Unrecommended statement
These statements should not be used: utalrm, allocate, deallocate.
ALLOCATE/DEALLOCATE should be replaced by AS_ALLOCATE/AS_DEALLOCATE.
C1004
Summary with GPL is required
The copyright and GPL summary are required. Even if there is an external
copyright, it must mention www.code-aster.org
C1005
EDF R&D Copyright not found
Even if there is a copyright to another company than EDF R&D, the source
has been changed for Code_Aster conformance and version management.
Example:
- Copyright 2008 Company ABC - Copyright 2008-2013 EDF R&D www.code-aster.org
W1006
Another Copyright than EDF
E1007
Filename used more than once
A filename must not be used several times.
E1008
Interface file is required for each subroutine
An interface is required for each fortran subroutine or function.
For a xxxx.F90
file, a file defining the interface must exist in
include/<subdirectory>/xxxx.h
.
The modules must be named xxxx_module.F90
(or xxxx_type.F90
for
the definition of types).
E1009
Interface without a fortran subroutine
An interface (.h) exists for a fortran subroutine that does not exist.
C1010
Numbered subroutine out of range
Developpers must not add 'te', 'op' or 'lc' subroutines out of the
predefined range: 'te' <= 600, 'op' < 200, 'lc' <= 100.
C1301
Expected another dimension in array declaration
Size of arrays must be explicitly declared: 'array(0:)' is not tolerated,
use 'array(0:N)' instead.
C1302
Double precision type not allowed
'double precision' should be replaced by 'real(kind=8)'.
Ref. http://fortranwiki.org/fortran/show/Real+precision
W1303
Character variable too long
Character variables size must not exceed 256 characters.
W1304
Unrecommended declaration of integer/logical
Integer and logical variables should not be declared with an explicit range.
Do not use 'integer(kind=...)', just 'integer' or 'logical'.
W1305
Unrecommended declaration of real/complex
Real and complex variables should be declared with an explicit range and
in most case, it should be 'real(kind=8)' or 'complex(kind=8)'.
W1306
Automatic arrays
Automatic arrays must be used with care of their size.
W1307
Variable name too long
The maximum length for a variable name is 16.
C1308
Missing interface file
An include statement is required for each called subroutine.
The included file should define the interface of the subroutine.
This checking must be run from 'src' to find include files correctly.
The interface can also be provided by a module but the USE statement that
renames the symbols (=>) is not supported.
C1309
Interface mismatch
The subroutine and its interface must have the same arguments.
The arguments must have the same name because it is required with
optional arguments.
The declaration of the arguments must be stricly identical.
C1310
Uninitialized pointer
Pointers must be initialized to 'null()'.
C1311
Subroutine name too long
The maximum length for a subroutine name is 32.
C1312
Unrecommended IF statement before macros, use if (...) then ... end if
The syntax without then
(also called "logical if") is considered archaic
and may cause unexpected error when a macro is replaced by several
statements (only the first one is really under the condition).
Ref.: http://en.wikibooks.org/wiki/Fortran/Fortran_control
C1313
Kind value of real/complex is required
Real and complex variables must be declared with an explicit range and
in most case, it should be 'real(kind=8)' or 'complex(kind=8)'.
C1401
Nonstandard syntax
C1402
Nonstandard type declaration
'real*8' and similar declarations must no longer be used.
Ref. http://fortranwiki.org/fortran/show/Real+precision
W1403
No executable statement
W1501
More than 500 lines
W1502
More than 19 continuation lines
C1503
No subroutine, function or module defined
If you defined a module, it must be named.
W1504
More than 20 arguments
C1505
Declaration with continuation line
For readibility the declarations must not be continued. This is only allowed
for the declarations of constant arrays (with parameter
attribute).
C1506
Inline comment
I1507
Label only before continue or format
For loop, use do/end do.
I1508
Recommendation: 3 digits max. for labels
C1509
Line too long
Lines must not be too long for readability and convention.
Maximum line length is 100 columns in Code_Aster fortran source files.
C1511
Invalid character, unexpected tabulation '\t'
Tabulation character is not allowed.
C1512
ASSERT must be on a single line
The fortran preprocessor does not always support macros on several lines.
It depends on the preprocessor version.
C1513
Compilation directives are not recommended
Compilation directives must only be used for strong reasons.
E2001
Data file not found
The datafile referenced in the export file does not exist
C2002
Size of datafiles too big
E2003
Invalid export file
Required parameters: memory_limit, time_limit, testlist.
testlist must contain verification or validation, and, sequential or parallel. Additional name lists are accepted: seism, performance.
C2004
File not used by any testcase
A file is in the directory of the testcases but it is not used by any
testcase.
W2005
Unrecommended keyword in a command file
This keyword should not be used in a testcase: TOLE_MACHINE.
C2006
Summary with GPL is required
The copyright and GPL summary are required. Even if there is an external
copyright, it must mention www.code-aster.org
C2007
EDF R&D Copyright not found
Even if there is a copyright to another company than EDF R&D, the source
has been changed for Code_Aster conformance and/or version management.
Example:
- Copyright 2008 Company ABC - Copyright 2008-2013 EDF R&D www.code-aster.org
C2008
Invalid character, unexpected tabulation '\t'
Tabulation character is not allowed.
C2009
Testcase resources are too big
Time limit must be less than 300 s, memory limit less than 1024 MB in 'src'.
This error can be ignored in the 'validation' repository".
W2010
Testcase in the submit list removed
A testcase is in the list of the testcases passed during the submit but this
testcase does not exist anymore. Please contact the administrator to remove
the testcase from the list.
C2011
Required keyword in a command file
A testcase must use one of operators DEBUT or POURSUITE and the keyword
CODE.
W2012
Unrecommended value assigned to a keyword in a command file
This value should be assigned wit care in this repository.
C2013
Duplicated data files
Datafiles can be shared between testcases through the .export definition.
Do not add the same file several times.
C2014
Same as RequiredKeyword for branch 'v11'
C2015
Invalid filename for a testcase
C2055
Unrecommended keyword in a command file
This keyword should not be used in a testcase: TOLE_MACHINE.
C3001
Line too long
Lines must not be too long for readability and convention.
Maximum line length is 100 columns in C.
C3002
Summary with GPL is required
The copyright and GPL summary are required. Even if there is an external
copyright, it must mention www.code-aster.org
C3003
EDF R&D Copyright not found
Even if there is a copyright to another company than EDF R&D, the source
has been changed for Code_Aster conformance and/or version management.
Example:
- Copyright 2008 Company ABC - Copyright 2008-2013 EDF R&D www.code-aster.org
W3004
Another Copyright than EDF
C3005
Invalid character, unexpected tabulation '\t'
Tabulation character is not allowed.
C4001
Line too long
Lines must not be too long for readability and convention.
Maximum line length is 80 columns in python
(see http://www.python.org/dev/peps/pep-0008).
C4002
Summary with GPL is required
The copyright and GPL summary are required. Even if there is an external
copyright, it must mention www.code-aster.org
C4003
EDF R&D Copyright not found
Even if there is a copyright to another company than EDF R&D, the source
has been changed for Code_Aster conformance and/or version management.
Example:
- Copyright 2008 Company ABC - Copyright 2008-2013 EDF R&D www.code-aster.org
W4004
Another Copyright than EDF
C4005
Encoding definition is required in the first or second line
Conforming to PEP0263, the encoding of the source file must be defined
by placing a magic comment as first or second line of the file
(see http://www.python.org/dev/peps/pep-0263/).
C4006
Invalid character, unexpected tabulation '\t'
Tabulation character is not allowed.
W5001
Unexpected filename
Only this suffix are allowed: '.datg'
W5002
Unexpected filename
Only this suffix is allowed: '.mater'
C5003
Encoding definition is required in the first or second line
Conforming to PEP0263, the encoding of the source file must be defined
by placing a magic comment as first or second line of the file
(see http://www.python.org/dev/peps/pep-0263/).
C5004
Summary with GPL is required
The copyright and GPL summary are required. Even if there is an external
copyright, it must mention www.code-aster.org
C5005
EDF R&D Copyright not found
Even if there is a copyright to another company than EDF R&D, the source
has been changed for Code_Aster conformance and/or version management.
Example:
- Copyright 2008 Company ABC - Copyright 2008-2013 EDF R&D www.code-aster.org
W5006
Another Copyright than EDF
C5007
Summary with GPL is required
The copyright and GPL summary are required. Even if there is an external
copyright, it must mention www.code-aster.org
C5008
EDF R&D Copyright not found
Even if there is a copyright to another company than EDF R&D, the source
has been changed for Code_Aster conformance and/or version management.
Example:
- Copyright 2008 Company ABC - Copyright 2008-2013 EDF R&D www.code-aster.org
W5009
Another Copyright than EDF
C5010
Invalid character, unexpected tabulation '\t'
Tabulation character is not allowed.
C6001
Invalid encoding, expecting ascii
'cata' files must be encoded in ascii.
C6002
Summary with GPL is required
The copyright and GPL summary are required. Even if there is an external
copyright, it must mention www.code-aster.org
C6003
EDF R&D Copyright not found
Even if there is a copyright to another company than EDF R&D, the source
has been changed for Code_Aster conformance and/or version management.
Example:
- Copyright 2008 Company ABC - Copyright 2008-2013 EDF R&D www.code-aster.org
C6004
Invalid character, unexpected tabulation '\t'
Tabulation character is not allowed.
C6005
Summary with GPL is required
The copyright and GPL summary are required. Even if there is an external
copyright, it must mention www.code-aster.org
C6006
EDF R&D Copyright not found
Even if there is a copyright to another company than EDF R&D, the source
has been changed for Code_Aster conformance and/or version management.
Example:
- Copyright 2008 Company ABC - Copyright 2008-2013 EDF R&D www.code-aster.org
C6008
Invalid character, unexpected tabulation '\t'
Tabulation character is not allowed.
W6009
Another Copyright than EDF
W6010
Another Copyright than EDF
C8501
Invalid encoding, expecting utf-8
Source files must be encoded in utf-8 (or ascii).
C8502
Invalid end of line, expecting '\n' not '\r\n'
C8503
Copyright is out of date, must be updated to the current year
See fix_copyright
tool (use --help option for details).
I8801
Person in charge
The person in charge of this module will be notified if one submit a request
for integration of these changes.
C8802
Invalid address for the person in charge
The email address must not contain space and must have a '@'.
C8882
Obsolete syntax: please remove this line from the old source manager
This is an obsolete marker not used anymore
Must be removed.
C8883
Obsolete syntax: please remove this line from the old source manager
This is the obsolete format to store the modification date.
Must be removed.
C8884
Obsolete format of disabled message
This is the obsolete format to disable conformance warnings.
Must be removed.
C8885
Obsolete syntax: please use 'person_in_charge: email@domain.com'
This is the obsolete format to declare the person in charge.
Must be removed.
I8886
Messages hidden for header files
W8888
Disabled message(s)
Used to disable a warning that can not be removed in a special case
W8889
New disabled message(s)
If you added or changed one, please check if it can be removed instead
of disabled.
W9001
Change not authorized on this file
Some files can not be changed by developers, contact an administrator if
you must change one.
C9002
Unsupported extension
Only these extensions are allowed for testcases: .comm, .com[0-9], .py,
.data, .datg, .export, .mail, .mgib, .mmed, .msh, .msup, .[0-9]+
C9003
Unused or missing messages
All error messages must be called in a source file and all messages called
must exist.
W9004
Requirements missed to check spelling of messages (supv002a will fail)
The testcase supv002a checks the spelling of error messages.
It requires aspell
and the dictionnaries
$ASTER_ROOT/share/codeaster/code_aster_dict.aspell.per
and
code_aster_cata.aspell.per
.
Dictionnaries files can be built using
$HOME/dev/codeaster/devtools/bin/maint/make_code_aster_dict --installdir=$ASTER_ROOT/share/codeaster
C9005
Permission of source files must be rw-r--r--
Use $HOME/dev/codeaster/devtools/bin/fix_permission to fix that.
C9006
Reserved filename
These patterns are reserved to identify fortran types and modules
definition : xxxx_type.F90
for public types, xxxx_module.F90
for modules.
E9990
Error
E9991
Error
W9992
Warning
W9993
Warning