FORCHECK can analyse separate program units, a set of program units and an entire program. FORCHECK first analyses the separate program units, then it constructs a call-tree. In the last phase the consistency of the set of analysed program units or the entire program is verified. Below you can read what FORCHECK actually does in each of its analyses phases.
Program-unit analysis
During the program-unit analysis Forcheck verifies the syntax as precisely as possible during static analysis. FORCHECK:
- performs full syntax and type-checking
- flags unused, unreferenced and undefined items
- verifies constructs
- indicates truncation and loss of precision
- compares argument lists
- verifies EQUIVALENCE lists and accounts for the definition status
- detects extension of common blocks through EQUIVALENCE
- validates compliance to Fortran 77, Fortran 90, Fortran 95, Fortran 2003, or Fortran 2008
- flags depricated and obsolescent Fortran 90, Fortran 95, Fortran 2003, or Fortran 2008 syntax
- supports many Fortran extensions of all popular compilers
- no limit to the number of source lines or subprograms
Forcheck signals more programming flaws than most compilers do, such as unreferenced items, illegal usage of data types, undefined variables, loss of precision, transfer of control into DO-loops, IF-THEN-ELSE blocks, WHERE or CASE constructs. When applying the "rigorous" option Forcheck additionally warns for potentially dangerous and less portable constructs. You can tune Forcheck to accept specific Fortran extensions.
During program-unit analysis FORCHECK can generate a source-code listing and program-unit cross-references in which all messages of this part of the analysis are presented.
Global program analysis
In the global program analysis FORCHECK verifies the references of all subprograms with its argument lists, common blocks, and include files.
- Verification of subprogram references
FORCHECK verifies the consistency of the references to subroutines and functions for subprogram type and function data type. - Verification of argument lists
Besides inspection of the number of arguments and argument data types, Forcheck finds out, if possible, if an argument is an input, output or input/output argument. You're informed if an actual argument is a constant, expression, do-loop variable, or occurs more than once in the actual argument list, while a new value is assigned to the dummy argument in the subprogram. Forcheck also detects if the actual array or character datum is shorter than the dummy. Moreover, if a dummy argument is apparently an input argument, the actual argument must have been defined. - Detection of recursive I/O and subprogram references
FORCHECK detects recursive I/O attemps and subprogram references. - Consistency of common blocks
The consistency of common blocks is verified for data type and length. If the number, type, or rank of the objects in the various occurrences of a common block differ, you will be informed. When analyzing the entire program Forcheck flags unreferenced and undefined common-block objects. - Verification of public module variables
When analyzing the entire program Forcheck flags unreferenced, undefined, not allocated and not associated public module variables. - Consistent usage of include files
FORCHECK verifies if common blocks are consistently included from the same include files.
During the global program analysis FORCHECK can compose global cross-reference listings of all global items. This includes subprograms, common-blocks, modules, include files, i/o units. Even individual common-block objects and public module variables can be cross-referenced.
| previous page | top page |
| Forcheck
Contact |
|

