IntroductionForcheck 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 InterfaceThe 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 AnalysisDuring 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 InformationOptionally 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 StructureAt 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 dependenciesForcheck composes a dependency tree of all used or specific modules. Needless repetitions of sub-trees are suppressed.
Global Program AnalysisForcheck 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 InformationOptionally 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 ReportThe 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 filesAll 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.
LibrarianAn utility is supplied to remove program units from the library file, to compress it or to list the program units stored.
Compiler EmulationsForcheck 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 ForcheckThe 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.
DocumentationForcheck 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|