-- --
-- S p e c --
-- --
--- Copyright (C) 1996-2004 Free Software Foundation, Inc. --
+-- Copyright (C) 1996-2005 Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
-- current unit. This is useful for code audit purposes, and also may be
-- used to improve code generation in some cases.
+ S_Bind_Return : aliased constant S := "/RETURN_CODES=" &
+ "POSIX " &
+ "!-X1 " &
+ "VMS " &
+ "-X1";
+ -- /RETURN_CODES=POSIX (D)
+ -- /RETURN_CODES=VMS
+ --
+ -- Specifies the style of default exit code returned. Must be used in
+ -- conjunction with and match the Link qualifer with same name.
+ --
+ -- POSIX (D) Return Posix success (0) by default.
+ --
+ -- VMS Return VMS success (1) by default.
+
S_Bind_RTS : aliased constant S := "/RUNTIME_SYSTEM=|" &
"--RTS=|";
-- /RUNTIME_SYSTEM=xxx
S_Bind_Report 'Access,
S_Bind_ReportX 'Access,
S_Bind_Restr 'Access,
+ S_Bind_Return 'Access,
S_Bind_RTS 'Access,
S_Bind_Search 'Access,
S_Bind_Shared 'Access,
-- HIGH A great number of messages are output, most of them not
-- being useful for the user.
+ S_GCC_Nesting : aliased constant S := "/MAX_NESTING=#" &
+ "-gnatyL#";
+ -- /MAX_NESTING=nnn
+ --
+ -- Set maximum level of nesting of constructs (including subprograms,
+ -- loops, blocks, packages, and conditionals).
+ -- The level of nesting must not exceed the given value nnn.
+ -- A value of zero disable this style check (not enabled by default).
+
S_GCC_Noadc : aliased constant S := "/NO_GNAT_ADC " &
"-gnatA";
-- /NO_GNAT_ADC
"SPECS " &
"-gnatys " &
"TOKEN " &
- "-gnatyt ";
+ "-gnatyt " &
+ "XTRA_PARENS " &
+ "-gnatyx ";
-- /NOSTYLE_CHECKS (D)
-- /STYLE_CHECKS[=(keyword,[...])]
--
-- construction of box comments, as shown in
-- the following example:
--
- --
- -- ---------------------------
- -- -- This is a box comment --
- -- -- with two text lines. --
- -- ---------------------------
+ -- ---------------------------
+ -- -- This is a box comment --
+ -- ---------------------------
--
-- END Check end/exit labels.
-- Optional labels on end statements ending
-- debugging purposes or if you need to be sure what version of the
-- compiler you are executing.
+ S_GCC_Verb_Asm : aliased constant S := "/VERBOSE_ASM " &
+ "-S,-verbose_asm,!-c";
+ -- /NOASM (D)
+ -- /ASM
+ --
+ -- Use to cause the assembler source file to be generated, using S as the
+ -- filetype, instead of the object file. This may be useful if you need
+ -- to examine the generated assembly code.
+
S_GCC_Warn : aliased constant S := "/WARNINGS=" &
"DEFAULT " &
"!-gnatws,!-gnatwe " &
S_GCC_List 'Access,
S_GCC_Mapping 'Access,
S_GCC_Mess 'Access,
+ S_GCC_Nesting 'Access,
S_GCC_Noadc 'Access,
S_GCC_Noload 'Access,
S_GCC_Nostinc 'Access,
S_GCC_Upcase 'Access,
S_GCC_Valid 'Access,
S_GCC_Verbose 'Access,
+ S_GCC_Verb_Asm'Access,
S_GCC_Warn 'Access,
S_GCC_WarnX 'Access,
S_GCC_Wide 'Access,
-- /RETURN_CODES=VMS
--
-- Specifies the style of codes returned by
- -- Ada.Command_Line.Set_Exit_Status.
+ -- Ada.Command_Line.Set_Exit_Status. Must be used in conjunction with
+ -- and match the Bind qualifer with the same name.
--
-- POSIX (D) Return Posix compatible exit codes.
--
-- Example:
-- /EXTERNAL_REFERENCE="DEBUG=TRUE"
+ S_List_Files : aliased constant S := "/FILES=@" &
+ "-files=@";
+ -- /FILES=filename
+ --
+ -- Take as arguments the files that are listed in the specified
+ -- text file.
+
S_List_Mess : aliased constant S := "/MESSAGES_PROJECT_FILE=" &
"DEFAULT " &
"-vP0 " &
S_List_Current 'Access,
S_List_Depend 'Access,
S_List_Ext 'Access,
+ S_List_Files 'Access,
S_List_Mess 'Access,
S_List_Nostinc 'Access,
S_List_Object 'Access,
-- Switches for GNAT METRIC --
------------------------------
- S_Metric_Config : aliased constant S := "/CONFIGURATION_PRAGMAS_FILE=<" &
- "-gnatec>";
- -- /CONFIGURATION_PRAGMAS_FILE=file
- --
- -- Specify a configuration pragmas file that need to be taken into account
-
- S_Metric_Current : aliased constant S := "/CURRENT_DIRECTORY " &
- "!-I-";
- -- /CURRENT_DIRECTORY (D)
- --
- -- Look for files in the directory where GNAT METRIC was invoked
- --
- -- /NOCURRENT_DIRECTORY
- --
- -- Do not look for files in the directory where GNAT METRIC was invoked
-
S_Metric_Debug : aliased constant S := "/DEBUG_OUTPUT " &
"-dv";
-- /DEBUG_OUTPUT
+ --
+ -- Generate the debug information
+
+ S_Metric_Direct : aliased constant S := "/DIRECTORY=@" &
+ "-d=@";
+ -- /DIRECTORY=pathname
+ --
+ -- Put the files with detailed metric information into the specified
+ -- directory
S_Metric_Element : aliased constant S := "/ELEMENT_METRICS=" &
"ALL " &
- "!-ed,!-es,!-enl,!-eis," &
- "!-eas,!-eit,!-eat,!-enu " &
+ "!-ed,!-es,!-enl,!-eps," &
+ "!-eas,!-ept,!-eat,!-enu," &
+ "!-ec " &
"DECLARATION_TOTAL " &
"-ed " &
"STATEMENT_TOTAL " &
"LOOP_NESTING_MAX " &
"-enl " &
"INT_SUBPROGRAMS " &
- "-eis " &
+ "-eps " &
"SUBPROGRAMS_ALL " &
"-eas " &
"INT_TYPES " &
- "-eit " &
+ "-ept " &
"TYPES_ALL " &
"-eat " &
"PROGRAM_NESTING_MAX " &
- "-enu";
+ "-enu " &
+ "CONSTRUCT_NESTING_MAX " &
+ "-ec";
-- /ELEMENT_METRICS=(option, option ...)
+ --
+ -- Specifies the element metrics to be computed (if not set, all the
+ -- element metrics are set on, otherwise only specified metrics are
+ -- computed and reported)
+ --
+ -- option may be one of the following:
+ --
+ -- ALL (D) All the element metrics are computed
+ -- DECLARATION_TOTAL Compute the total number of declarations
+ -- STATEMENT_TOTAL Compute the total number of statements
+ -- LOOP_NESTING_MAX Compute the maximal loop nesting level
+ -- INT_SUBPROGRAMS Compute the number of interface subprograms
+ -- SUBPROGRAMS_ALL Compute the number of all the subprograms
+ -- INT_TYPES Compute the number of interface types
+ -- TYPES_ALL Compute the number of all the types
+ -- PROGRAM_NESTING_MAX Compute the maximal program unit nesting level
+ --
+ -- All combinations of element metrics options are allowed.
S_Metric_Ext : aliased constant S := "/EXTERNAL_REFERENCE=" & '"' &
"-X" & '"';
-- Example:
-- /EXTERNAL_REFERENCE="DEBUG=TRUE"
+ S_Metric_Files : aliased constant S := "/FILES=@" &
+ "-files=@";
+ -- /FILES=filename
+ --
+ -- Take as arguments the files that are listed in the specified
+ -- text file.
+
S_Metric_Format : aliased constant S := "/FORMAT_OUTPUT=" &
"DEFAULT " &
"!-x,!-nt,!-sfn " &
"SHORT_SOURCE_FILE_NAME " &
"-sfn";
-- /FORMAT_OUTPUT=(option, option ...)
+ --
+ -- Specifies the details of the tool output
+ --
+ -- option may be one of the following:
+ --
+ -- DEFAULT (D) Generate the text output only, use full
+ -- argument source names in global information
+ -- XML Generate the output in XML format
+ -- NO_TEXT Do not generate the text output (implies XML)
+ -- SHORT_SOURCE_FILE_NAME Use short argument source names in output
S_Metric_Globout : aliased constant S := "/GLOBAL_OUTPUT=@" &
"-og@";
-- /GLOBAL_OUTPUT=filename
+ --
+ -- Put the textual global metric information into the specified file
S_Metric_Line : aliased constant S := "/LINE_METRICS=" &
"ALL " &
"-lb ";
-- /LINE_METRICS=(option, option ...)
+ -- Specifies the line metrics to be computed (if not set, all the line
+ -- metrics are set on, otherwise only specified metrics are computed and
+ -- reported)
+ --
+ -- option may be one of the following:
+ --
+ -- ALL (D) All the line metrics are computed
+ -- LINES_ALL All lines are computed
+ -- CODE_LINES Lines with Ada code are computed
+ -- COMENT_LINES All comment lines are computed
+ -- MIXED_CODE_COMMENTS All lines containing both code and comment are
+ -- computed
+ -- BLANK_LINES Blank lines are computed
+ --
+ -- All combinations of line metrics options are allowed.
+
S_Metric_Mess : aliased constant S := "/MESSAGES_PROJECT_FILE=" &
"DEFAULT " &
"-vP0 " &
S_Metric_Quiet : aliased constant S := "/QUIET " &
"-q";
- -- /QUIET
-
- S_Metric_Search : aliased constant S := "/SEARCH=*" &
- "-I*";
- -- /SEARCH=(directory[,...])
+ -- /NOQUIET (D)
+ -- /QUIET
+ --
+ -- Quiet mode: by default GNAT METRIC outputs to the standard error stream
+ -- the number of program units left to be processed. This option turns
+ -- this trace off.
S_Metric_Suffix : aliased constant S := "/SUFFIX_DETAILS=" & '"' &
"-o" & '"';
-- /SUFFIX_DETAILS=suffix
+ --
+ -- Use the given suffix as the suffix for the name of the file to place
+ -- the detailed metrics into.
S_Metric_Suppress : aliased constant S := "/SUPPRESS=" &
"NOTHING " &
"LOCAL_DETAILS " &
"-nolocal ";
-- /SUPPRESS=(option, option ...)
+ --
+ -- Specifies the metric that should not be computed
+ --
+ -- option may be one of the following:
+ --
+ -- NOTHING (D) Do not suppress computation of any metric
+ -- CYCLOMATIC_COMPLEXITY Do not compute the Cyclomatic Complexity
+ -- ESSENTIAL_COMPLEXITY Do not compute the Essential Complexity
+ -- MAXIMAL_LOOP_NESTING Do not compute the maximal loop nesting
+ -- EXITS_AS_GOTOS Do not count EXIT statements as GOTOs when
+ -- computing the Essential Complexity
+ -- LOCAL_DETAILS Do not compute the detailed metrics for local
+ -- program units
+ --
+ -- All combinations of options are allowed.
S_Metric_Verbose : aliased constant S := "/VERBOSE " &
"-v";
- -- /VERBOSE
+ -- /NOVERBOSE (D)
+ -- /VERBOSE
+ --
+ -- Verbose mode.
S_Metric_XMLout : aliased constant S := "/XML_OUTPUT=@" &
"-ox@";
-- /XML_OUTPUT=filename
+ --
+ -- Place the XML output into the specified file
Metric_Switches : aliased constant Switches :=
- (S_Metric_Config 'Access,
- S_Metric_Current 'Access,
- S_Metric_Debug 'Access,
+ (S_Metric_Debug 'Access,
+ S_Metric_Direct 'Access,
S_Metric_Element 'Access,
S_Metric_Ext 'Access,
+ S_Metric_Files 'Access,
S_Metric_Format 'Access,
S_Metric_Globout 'Access,
S_Metric_Line 'Access,
S_Metric_Mess 'Access,
S_Metric_Project 'Access,
S_Metric_Quiet 'Access,
- S_Metric_Search 'Access,
S_Metric_Suffix 'Access,
S_Metric_Suppress 'Access,
S_Metric_Verbose 'Access,
S_Pretty_Align : aliased constant S := "/ALIGN=" &
"DEFAULT " &
- "-A1234 " &
+ "-A12345 " &
"OFF " &
"-A0 " &
"COLONS " &
"STATEMENTS " &
"-A3 " &
"ARROWS " &
- "-A4";
+ "-A4 " &
+ "COMPONENT_CLAUSES " &
+ "-A5";
-- /ALIGN[=align-option, align-option, ...]
--
-- Set alignments. By default, all alignments (colons in declarations,
--
-- align-option may be one of the following:
--
- -- OFF (D) Set all alignments to OFF
- -- COLONS Set alignments of colons in declarations to ON
- -- DECLARATIONS Set alignments of initialisations in declarations to ON
- -- STATEMENTS Set alignments of assignments statements to ON
- -- ARROWS Set alignments of arrow delimiters to ON.
+ -- OFF (D) Set all alignments to OFF
+ -- COLONS Set alignments of colons in declarations to ON
+ -- DECLARATIONS Set alignments of initialisations in declarations
+ -- to ON
+ -- STATEMENTS Set alignments of assignments statements to ON
+ -- ARROWS Set alignments of arrow delimiters to ON.
+ -- COMPONENT_CLAUSES Set alignments of AT keywords in component
+ -- clauses ON
--
-- Specifying one of the ON options without first specifying the OFF
-- option has no effect, because by default all alignments are set to ON.
-- Set the comment layout. By default, comments use the GNAT style
-- comment line indentation.
--
- -- layout-option is be one of the following:
+ -- layout-option may be one of the following:
--
-- UNTOUCHED All the comments remain unchanged
-- DEFAULT (D) GNAT style comment line indentation
-- used in the default dictionary file, are defined in the GNAT User's
-- Guide.
+ S_Pretty_Files : aliased constant S := "/FILES=@" &
+ "-files=@";
+ -- /FILES=filename
+ --
+ -- Take as arguments the files that are listed in the specified
+ -- text file.
+
S_Pretty_Forced : aliased constant S := "/FORCED_OUTPUT=@" &
"-of@";
-- /FORCED_OUTPUT=file
S_Pretty_Ext 'Access,
S_Pretty_Current 'Access,
S_Pretty_Dico 'Access,
+ S_Pretty_Files 'Access,
S_Pretty_Forced 'Access,
S_Pretty_Formfeed 'Access,
S_Pretty_Indent 'Access,
S_Pretty_Verbose 'Access,
S_Pretty_Warnings 'Access);
+ -----------------------------
+ -- Switches for GNAT SETUP --
+ -----------------------------
+
+ S_Setup_Ext : aliased constant S := "/EXTERNAL_REFERENCE=" & '"' &
+ "-X" & '"';
+ -- /EXTERNAL_REFERENCE="name=val"
+ --
+ -- Specifies an external reference to the project manager. Useful only if
+ -- /PROJECT_FILE is used.
+ --
+ -- Example:
+ -- /EXTERNAL_REFERENCE="DEBUG=TRUE"
+
+ S_Setup_Mess : aliased constant S := "/MESSAGES_PROJECT_FILE=" &
+ "DEFAULT " &
+ "-vP0 " &
+ "MEDIUM " &
+ "-vP1 " &
+ "HIGH " &
+ "-vP2";
+ -- /MESSAGES_PROJECT_FILE[=messages-option]
+ --
+ -- Specifies the "verbosity" of the parsing of project files.
+ -- messages-option may be one of the following:
+ --
+ -- DEFAULT (D) No messages are output if there is no error or warning.
+ --
+ -- MEDIUM A small number of messages are output.
+ --
+ -- HIGH A great number of messages are output, most of them not
+ -- being useful for the user.
+
+ S_Setup_Project : aliased constant S := "/PROJECT_FILE=<" &
+ "-P>";
+ -- /PROJECT_FILE=filename
+ --
+ -- Specifies the main project file to be used. The project files rooted
+ -- at the main project file are parsed and non existing object
+ -- directories, library directories and exec directories are created.
+
+ S_Setup_Quiet : aliased constant S := "/QUIET " &
+ "-q";
+ -- /NOQUIET (D)
+ -- /QUIET
+ --
+ -- Work quietly, only output warnings and errors.
+
+ S_Setup_Verbose : aliased constant S := "/VERBOSE " &
+ "-v";
+ -- /NOVERBOSE (D)
+ -- /VERBOSE
+ --
+ -- Verbose mode; GNAT PRETTY generates version information and then a
+ -- trace of the actions it takes to produce or obtain the ASIS tree.
+
+ Setup_Switches : aliased constant Switches :=
+ (S_Setup_Ext 'Access,
+ S_Setup_Mess 'Access,
+ S_Setup_Project 'Access,
+ S_Setup_Quiet 'Access,
+ S_Setup_Verbose 'Access);
+
------------------------------
-- Switches for GNAT SHARED --
------------------------------