Terug naar de homepage van Forcheck
Product description
Forcheck is a static analyzer for programs coded in Fortran. It operates on the Fortran source code of the program. It analyses the individual program units (main program, modules, external procedures, block data's) and verifies the entire program integrity. It produces extensive documentation. Forcheck supports Fortran 66, Fortran 77, Fortran 90, Fortran 95, Fortran 2003, HPF, Fortran 2008 and many language extensions of various compilers.
Human Interface
The Windows and Linux implementations provide an integrated development environment. As an alternative you can enter the filenames of files to be analyzed and options using the commandline interface, by question and answer, or by specifying a command-file. The human interface of each implementation is specifically designed to conform to the host operating system. Options can be specified to tune the analysis and output. On-line documentation is supplied.
Program-unit Analysis
During program-unit analysis Forcheck verifies the syntax and the static semantics of the program unit as precisely as can reasonably be done during static analysis. Optionally the syntax can be verified for conformance to the Fortran 77, Fortran 90, Fortran 95, Fortran 2003, or Fortran 2008 standard. Obsolescent Fortran 90, Fortran 95, Fortran 2003, or Fortran 2008 syntax can be flagged. Forcheck signals undefined variables, data type conflicts, illegal transfer of control, inconsistent usage of procedures, illegal usage of intrinsic procedures, extensions of common-blocks through equivalences, and many other anomalies.
Program-unit Information
Optionally Forcheck lists the source code and composes cross-reference tables for all syntactic elements: program and procedure entries, named constants, labels, variables, derived types, referenced procedures, common blocks, and external input/output. For all of these items the data types and operation codes (actions performed) are presented. Warnings are given for illegally used, for potential unintentional usage and for unused items, e.g. 'unreferenced', or 'variable, initialized in DATA statement, changed'. Moreover unreferenced modules, common blocks and include files are listed.
Reference Structure
At wish Forcheck composes a hierarchical call-tree of all referenced procedures for all or specified roots. Recursive references are flagged. To keep the output as compact and clearly structured as possible, needless repetitions of sub-trees are suppressed. Unreferenced procedures with their references are presented in separate trees.
Module dependencies
Forcheck composes a dependency tree of all used or specific modules. Needless repetitions of sub-trees are suppressed.
Global Program Analysis
Forcheck verifies the type of all referenced procedures and the argument lists. Besides inspection of the number of arguments and argument data types, Forcheck informs you if an argument is a constant, expression, or occurs more than once in the actual argument list, while a new value is assigned to the dummy argument in the procedure. You are also informed whether an actual array or character datum is shorter than the dummy or if the ranks of noncharacter arrays differ. The consistency of common blocks is verified for data types and length. If the number, data type, data type length, array rank or array size in the various occurrences of a common block differ, you will be informed. When analyzing a complete program Forcheck signals unreferenced and unassigned common-block elements and public module variables.
Global Program Information
Optionally Forcheck lists all analyzed program units and procedures with the names of the files in which they are stored and page numbers of the source code listings. Cross-reference tables can be constructed for referenced procedures, modules, public module variables and derived types, common blocks, common-block elements, include files and external input/output, with types and operation codes.
Final Report
The metrics of each program unit, module procedure and the integral program is presented. The analysis is concluded by a summary of all messages presented, and a list with the number of messages given.
Library files
All global information, gathered during program-unit analysis, can be stored in (indexed) library files. If a program unit is modified, or a new program unit is constructed, the global information of this modified, or new program unit is replaced in, or added to a library file. The interface of the program unit with the rest of the program will be verified using these library files. When referring to library files, Forcheck keeps track of the versions of the program units. Each time you store the global program-unit information of a specific program unit in a library file its version number is updated. The version number is displayed on the source code listings and the program cross-references. For the program analysis you can specify the library files or program units to be included or referenced.
An utility is supplied to remove program units from the library file, to compress it or to list the program units stored.
Compiler Emulations
Forcheck supports most language extensions of many compilers. By activating a specific configuration file you can instruct Forcheck to emulate the compiler of your choice. This is most useful for host-target program development.
Tuning Forcheck
The destination of Forcheck output and the page-size can be determined by the user during command-line entry. The actual output presented can be specified using command-line options. Forcheck can be tuned to your specific needs by adapting the configuration file used. The syntax extensions and intrinsic procedures you want Forcheck to accept can be specified in this configuration file. The severity level of each syntax message can be adjusted or a message can be suppressed entirely. The way Forcheck numbers lines or statements can be selected.
Forcheck is accompanied by an installation guide and an extensive user's guide. For the PC windows implementation the installation guide and user's guide have been integrated. In the user's guide the operation of Forcheck is explained. All options are documented, examples are presented. Moreover we clarify what Forcheck exactly verifies and what its limitations are. The syntax messages are listed and elucidated. All Fortran extensions that Forcheck accepts are listed. A glossary and index are included. Online help is provided.
previous page top page