Terug naar de homepage van Forcheck
Analysis

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:

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