+2009-06-19 Jose Ruiz <ruiz@adacore.com>
+
+ * env.c (__gnat_environ): RTX does not support this functionality.
+
+2009-06-19 Ed Schonberg <schonberg@adacore.com>
+
+ * sem.adb (Walk_Library_Items): Include bodies in the list of units to
+ traverse, to account for front-end inlining and instantiations in a
+ spec or in the main unit.
+
+2009-06-19 Robert Dewar <dewar@adacore.com>
+
+ * checks.adb (Determine_Range): Do not attempt to get range of generic
+ type.
+
2009-06-19 Sergey Rybin <rybin@adacore.com>
* gnat_ugn.texi, vms_data.ads: Add the documentation for the new
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2009, 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- --
Lor := No_Uint;
Hir := No_Uint;
- -- If the type is not discrete, or is undefined, then we can't do
- -- anything about determining the range.
+ -- If type is not defined, we can't determine its range
- if No (Typ) or else not Is_Discrete_Type (Typ)
- or else Error_Posted (N)
+ if No (Typ)
+
+ -- We don't deal with anything except discrete types
+
+ or else not Is_Discrete_Type (Typ)
+
+ -- Ignore type for which an error has been posted, since range in
+ -- this case may well be a bogosity deriving from the error. Also
+ -- ignore if error posted on the reference node.
+
+ or else Error_Posted (N) or else Error_Posted (Typ)
+
+ -- Ignore generic type, since range is indeed bogus
+
+ or else Is_Generic_Type (Typ)
then
OK := False;
return;
char **
__gnat_environ (void)
{
-#if defined (VMS)
+#if defined (VMS) || defined (RTX)
/* Not implemented */
return NULL;
#elif defined (__APPLE__)
@cindex @option{--no-lines@var{x}}
@end ifclear
-@item ^--lines-all^/LINE_COUNT_METRICS=ALL_ON^
+@item ^--lines-all^/LINE_COUNT_METRICS=ALL^
Report all the line metrics
-@item ^--no-lines-all^/LINE_COUNT_METRICS=ALL_OFF^
+@item ^--no-lines-all^/LINE_COUNT_METRICS=NONE^
Do not report any of line metrics
-@item ^--lines^/LINE_COUNT_METRICS=ALL_LINES_ON^
+@item ^--lines^/LINE_COUNT_METRICS=ALL_LINES^
Report the number of all lines
-@item ^--no-lines^/LINE_COUNT_METRICS=ALL_LINES_OFF^
+@item ^--no-lines^/LINE_COUNT_METRICS=NOALL_LINES^
Do not report the number of all lines
-@item ^--lines-code^/LINE_COUNT_METRICS=CODE_LINES_ON^
+@item ^--lines-code^/LINE_COUNT_METRICS=CODE_LINES^
Report the number of code lines
-@item ^--no-lines-code^/LINE_COUNT_METRICS=CODE_LINES_OFF^
+@item ^--no-lines-code^/LINE_COUNT_METRICS=NOCODE_LINES^
Do not report the number of code lines
-@item ^--lines-comment^/LINE_COUNT_METRICS=COMMENT_LINES_ON^
+@item ^--lines-comment^/LINE_COUNT_METRICS=COMMENT_LINES^
Report the number of comment lines
-@item ^--no-lines-comment^/LINE_COUNT_METRICS=COMMENT_LINES_OFF^
+@item ^--no-lines-comment^/LINE_COUNT_METRICS=NOCOMMENT_LINES^
Do not report the number of comment lines
-@item ^--lines-eol-comment^/LINE_COUNT_METRICS=CODE_COMMENT_LINES_ON^
+@item ^--lines-eol-comment^/LINE_COUNT_METRICS=CODE_COMMENT_LINES^
Report the number of code lines containing
end-of-line comments
-@item ^--no-lines-eol-comment^/LINE_COUNT_METRICS=CODE_COMMENT_LINES_OFF^
+@item ^--no-lines-eol-comment^/LINE_COUNT_METRICS=NOCODE_COMMENT_LINES^
Do not report the number of code lines containing
end-of-line comments
-@item ^--lines-ratio^/LINE_COUNT_METRICS=COMMENT_PERCENTAGE_ON^
+@item ^--lines-ratio^/LINE_COUNT_METRICS=COMMENT_PERCENTAGE^
Report the comment percentage in the program text
-@item ^--no-lines-ratio^/LINE_COUNT_METRICS=COMMENT_PERCENTAGE_OFF^
+@item ^--no-lines-ratio^/LINE_COUNT_METRICS=NOCOMMENT_PERCENTAGE^
Do not report the comment percentage in the program text
-@item ^--lines-blank^/LINE_COUNT_METRICS=BLANK_LINES_ON^
+@item ^--lines-blank^/LINE_COUNT_METRICS=BLANK_LINES^
Report the number of blank lines
-@item ^--no-lines-blank^/LINE_COUNT_METRICS=BLANK_LINES_OFF^
+@item ^--no-lines-blank^/LINE_COUNT_METRICS=NOBLANK_LINES^
Do not report the number of blank lines
-@item ^--lines-average^/LINE_COUNT_METRICS=AVERAGE_BODY_LINES_ON^
+@item ^--lines-average^/LINE_COUNT_METRICS=AVERAGE_BODY_LINES^
Report the average number of code lines in subprogram bodies, task bodies,
entry bodies and statement sequences in package bodies. The metric is computed
and reported for the whole set of processed Ada sources only.
-@item ^--no-lines-average^/LINE_COUNT_METRICS=AVERAGE_BODY_LINES_OFF^
+@item ^--no-lines-average^/LINE_COUNT_METRICS=NOAVERAGE_BODY_LINES^
Do not report the average number of code lines in subprogram bodies,
task bodies, entry bodies and statement sequences in package bodies.
@cindex @option{--no-syntax@var{x}} (@command{gnatmetric})
@end ifclear
-@item ^--syntax-all^/SYNTAX_METRICS=ALL_ON^
+@item ^--syntax-all^/SYNTAX_METRICS=ALL^
Report all the syntax metrics
-@item ^--no-syntax-all^/ALL_OFF^
+@item ^--no-syntax-all^/SYNTAX_METRICS=NONE^
Do not report any of syntax metrics
-@item ^--declarations^/SYNTAX_METRICS=DECLARATIONS_ON^
+@item ^--declarations^/SYNTAX_METRICS=DECLARATIONS^
Report the total number of declarations
-@item ^--no-declarations^/SYNTAX_METRICS=DECLARATIONS_OFF^
+@item ^--no-declarations^/SYNTAX_METRICS=NODECLARATIONS^
Do not report the total number of declarations
-@item ^--statements^/SYNTAX_METRICS=STATEMENTS_ON^
+@item ^--statements^/SYNTAX_METRICS=STATEMENTS^
Report the total number of statements
-@item ^--no-statements^/SYNTAX_METRICS=STATEMENTS_OFF^
+@item ^--no-statements^/SYNTAX_METRICS=NOSTATEMENTS^
Do not report the total number of statements
-@item ^--public-subprograms^/SYNTAX_METRICS=PUBLIC_SUBPROGRAMS_ON^
+@item ^--public-subprograms^/SYNTAX_METRICS=PUBLIC_SUBPROGRAMS^
Report the number of public subprograms in a compilation unit
-@item ^--no-public-subprograms^/SYNTAX_METRICS=PUBLIC_SUBPROGRAMS_OFF^
+@item ^--no-public-subprograms^/SYNTAX_METRICS=NOPUBLIC_SUBPROGRAMS^
Do not report the number of public subprograms in a compilation unit
-@item ^--all-subprograms^/SYNTAX_METRICS=ALL_SUBPROGRAMS_ON^
+@item ^--all-subprograms^/SYNTAX_METRICS=ALL_SUBPROGRAMS^
Report the number of all the subprograms in a compilation unit
-@item ^--no-all-subprograms^/SYNTAX_METRICS=ALL_SUBPROGRAMS_OFF^
+@item ^--no-all-subprograms^/SYNTAX_METRICS=NOALL_SUBPROGRAMS^
Do not report the number of all the subprograms in a compilation unit
-@item ^--public-types^/SYNTAX_METRICS=PUBLIC_TYPES_ON^
+@item ^--public-types^/SYNTAX_METRICS=PUBLIC_TYPES^
Report the number of public types in a compilation unit
-@item ^--no-public-types^/SYNTAX_METRICS=PUBLIC_TYPES_OFF^
+@item ^--no-public-types^/SYNTAX_METRICS=NOPUBLIC_TYPES^
Do not report the number of public types in a compilation unit
-@item ^--all-types^/SYNTAX_METRICS=ALL_TYPES_ON^
+@item ^--all-types^/SYNTAX_METRICS=ALL_TYPES^
Report the number of all the types in a compilation unit
-@item ^--no-all-types^/SYNTAX_METRICS=ALL_TYPES_OFF^
+@item ^--no-all-types^/SYNTAX_METRICS=NOALL_TYPES^
Do not report the number of all the types in a compilation unit
-@item ^--unit-nesting^/SYNTAX_METRICS=UNIT_NESTING_ON^
+@item ^--unit-nesting^/SYNTAX_METRICS=UNIT_NESTING^
Report the maximal program unit nesting level
@item ^--no-unit-nesting^/SYNTAX_METRICS=UNIT_NESTING_OFF^
Do not report the maximal program unit nesting level
-@item ^--construct-nesting^/SYNTAX_METRICS=CONSTRUCT_NESTING_ON^
+@item ^--construct-nesting^/SYNTAX_METRICS=CONSTRUCT_NESTING^
Report the maximal construct nesting level
-@item ^--no-construct-nesting^/SYNTAX_METRICS=CONSTRUCT_NESTING_OFF^
+@item ^--no-construct-nesting^/SYNTAX_METRICS=NOCONSTRUCT_NESTING^
Do not report the maximal construct nesting level
@end table
@cindex @option{--no-complexity@var{x}}
@end ifclear
-@item ^--complexity-all^/COMPLEXITY_METRICS=ALL_ON^
+@item ^--complexity-all^/COMPLEXITY_METRICS=ALL^
Report all the complexity metrics
-@item ^--no-complexity-all^/COMPLEXITY_METRICS=ALL_OFF^
+@item ^--no-complexity-all^/COMPLEXITY_METRICS=NONE^
Do not report any of complexity metrics
-@item ^--complexity-cyclomatic^/COMPLEXITY_METRICS=CYCLOMATIC_ON^
+@item ^--complexity-cyclomatic^/COMPLEXITY_METRICS=CYCLOMATIC^
Report the McCabe Cyclomatic Complexity
-@item ^--no-complexity-cyclomatic^/COMPLEXITY_METRICS=CYCLOMATIC_OFF^
+@item ^--no-complexity-cyclomatic^/COMPLEXITY_METRICS=NOCYCLOMATIC^
Do not report the McCabe Cyclomatic Complexity
-@item ^--complexity-essential^/COMPLEXITY_METRICS=ESSENTIAL_ON^
+@item ^--complexity-essential^/COMPLEXITY_METRICS=ESSENTIAL^
Report the Essential Complexity
-@item ^--no-complexity-essential^/COMPLEXITY_METRICS=ESSENTIAL_OFF^
+@item ^--no-complexity-essential^/COMPLEXITY_METRICS=NOESSENTIAL^
Do not report the Essential Complexity
@item ^--loop-nesting^/COMPLEXITY_METRICS=LOOP_NESTING_ON^
Report maximal loop nesting level
-@item ^--no-loop-nesting^/COMPLEXITY_METRICS=LOOP_NESTING_OFF^
+@item ^--no-loop-nesting^/COMPLEXITY_METRICS=NOLOOP_NESTING^
Do not report maximal loop nesting level
-@item ^--complexity-average^/COMPLEXITY_METRICS=AVERAGE_COMPLEXITY_ON^
+@item ^--complexity-average^/COMPLEXITY_METRICS=AVERAGE_COMPLEXITY^
Report the average McCabe Cyclomatic Complexity for all the subprogram bodies,
task bodies, entry bodies and statement sequences in package bodies.
The metric is computed and reported for whole set of processed Ada sources
only.
-@item ^--no-complexity-average^/COMPLEXITY_METRICS=AVERAGE_COMPLEXITY_OFF^
+@item ^--no-complexity-average^/COMPLEXITY_METRICS=NOAVERAGE_COMPLEXITY^
Do not report the average McCabe Cyclomatic Complexity for all the subprogram
bodies, task bodies, entry bodies and statement sequences in package bodies
Do not consider @code{exit} statements as @code{goto}s when
computing Essential Complexity
-@item ^--extra-exit-points^/EXTRA_EXIT_POINTS_ON^
+@item ^--extra-exit-points^/EXTRA_EXIT_POINTS^
Report the extra exit points for subprogram bodies. As an exit point, this
metric counts @code{return} statements and raise statements in case when the
raised exception is not handled in the same body. In case of a function this
metric subtracts 1 from the number of exit points, because a function body
must contain at least one @code{return} statement.
-@item ^--no-extra-exit-points^/EXTRA_EXIT_POINTS_OFF^
+@item ^--no-extra-exit-points^/NOEXTRA_EXIT_POINTS^
Do not report the extra exit points for subprogram bodies
@end table
@cindex @option{/COUPLING_METRICS} (@command{gnatmetric})
@end ifset
-@item ^--coupling-all^/COUPLING_METRICS=ALL_ON^
+@item ^--coupling-all^/COUPLING_METRICS=ALL^
Report all the coupling metrics
-@item ^--no-coupling-all^/COUPLING_METRICS=ALL_OFF^
+@item ^--no-coupling-all^/COUPLING_METRICS=NONE^
Do not report any of metrics
-@item ^--package-efferent-coupling^/COUPLING_METRICS=PACKAGE_EFFERENT_ON^
+@item ^--package-efferent-coupling^/COUPLING_METRICS=PACKAGE_EFFERENT^
Report package efferent coupling
-@item ^--no-package-efferent-coupling^/COUPLING_METRICS=PACKAGE_EFFERENT_OFF^
+@item ^--no-package-efferent-coupling^/COUPLING_METRICS=NOPACKAGE_EFFERENT^
Do not report package efferent coupling
-@item ^--package-afferent-coupling^/COUPLING_METRICS=PACKAGE_AFFERENT_ON^
+@item ^--package-afferent-coupling^/COUPLING_METRICS=PACKAGE_AFFERENT^
Report package afferent coupling
-@item ^--no-package-afferent-coupling^/COUPLING_METRICS=PACKAGE_AFFERENT_OFF^
+@item ^--no-package-afferent-coupling^/COUPLING_METRICS=NOPACKAGE_AFFERENT^
Do not report package afferent coupling
-@item ^--category-efferent-coupling^/COUPLING_METRICS=CATEGORY_EFFERENT_ON^
+@item ^--category-efferent-coupling^/COUPLING_METRICS=CATEGORY_EFFERENT^
Report category efferent coupling
-@item ^--no-category-efferent-coupling^/COUPLING_METRICS=CATEGORY_EFFERENT_OFF^
+@item ^--no-category-efferent-coupling^/COUPLING_METRICS=NOCATEGORY_EFFERENT^
Do not report category efferent coupling
-@item ^--category-afferent-coupling^/COUPLING_METRICS=CATEGORY_AFFERENT_ON^
+@item ^--category-afferent-coupling^/COUPLING_METRICS=CATEGORY_AFFERENT^
Report category afferent coupling
-@item ^--no-category-afferent-coupling^/COUPLING_METRICS=CATEGORY_AFFERENT_OFF^
+@item ^--no-category-afferent-coupling^/COUPLING_METRICS=NOCATEGORY_AFFERENT^
Do not report category afferent coupling
@end table
N_Generic_Procedure_Renaming_Declaration =>
null; -- Specs are OK
- when N_Package_Body | N_Subprogram_Body =>
+ -- Package bodies are processed immediately after the
+ -- corresponding spec.
- -- A body must be the main unit
+ when N_Package_Body =>
+ null;
+
+ when N_Subprogram_Body =>
+
+ -- A subprogram body must be the main unit
pragma Assert (Acts_As_Spec (CU)
or else CU = Cunit (Main_Unit));
-- processing of the body of a unit named by pragma Extend_System,
-- because it has cyclic dependences in some cases.
- if not Nkind_In (Item, N_Package_Body, N_Subprogram_Body) then
+ -- A body that is not the main unit is present because of inlining
+ -- and/or instantiations, and it is best to process a body as early
+ -- as possible after the spec (as if an Elaborate_Body were present).
+ -- Currently all such bodies are added to the units list. It might
+ -- be possible to restrict the list to those bodies that are used
+ -- in the main unit. Possible optimization ???
+
+ if Nkind (Item) = N_Package_Declaration then
declare
Body_Unit : constant Node_Id := Library_Unit (CU);
+
begin
if Present (Body_Unit)
and then Body_Unit /= Cunit (Main_Unit)
and then Unit_Num /= Get_Source_Unit (System_Aux_Id)
then
Do_Unit_And_Dependents (Body_Unit, Unit (Body_Unit));
+ Do_Action (Body_Unit, Unit (Body_Unit));
+ Done (Get_Cunit_Unit_Number (Body_Unit)) := True;
end if;
end;
end if;
Entity := Specification (Entity);
end if;
- Entity := Defining_Unit_Name (Entity);
-
- if Nkind (Entity) not in N_Entity then
-
- -- Must be N_Defining_Program_Unit_Name
-
- Entity := Defining_Identifier (Entity);
- end if;
+ Entity := Defining_Entity (Entity);
if Is_Generic_Instance (Entity) then
declare
-- with_clauses that got attached to the body.
Append_List
- (Context_Items (CU), Context_Items (Spec_Unit));
+ (Context_Items (CU), Context_Items (Spec_Unit));
Do_Unit_And_Dependents
(Spec_Unit, Unit (Spec_Unit));
end;
-- NODOC (see /SYNTAX_METRICS)
S_Metric_Syntax : aliased constant S := "/SYNTAX_METRICS=" &
- "ALL_ON " &
+ "ALL " &
"--syntax-all " &
- "ALL_OFF " &
+ "NONE " &
"--no-syntax-all " &
- "DECLARATIONS_ON " &
+ "DECLARATIONS " &
"--declarations " &
- "DECLARATIONS_OFF " &
+ "NODECLARATIONS " &
"--no-declarations " &
- "STATEMENTS_ON " &
+ "STATEMENTS " &
"--statements " &
- "STATEMENTS_OFF " &
+ "NOSTATEMENTS " &
"--no-statements " &
- "PUBLIC_SUBPROGRAMS_ON " &
+ "PUBLIC_SUBPROGRAMS " &
"--public-subprograms " &
- "PUBLIC_SUBPROGRAMS_OFF " &
+ "NOPUBLIC_SUBPROGRAMS " &
"--no-public-subprograms " &
- "ALL_SUBPROGRAMS_ON " &
+ "ALL_SUBPROGRAMS " &
"--all-subprograms " &
- "ALL_SUBPROGRAMS_OFF " &
+ "NOALL_SUBPROGRAMS " &
"--no-all-subprograms " &
- "PUBLIC_TYPES_ON " &
+ "PUBLIC_TYPES " &
"--public-types " &
- "PUBLIC_TYPES_OFF " &
+ "NOPUBLIC_TYPES " &
"--no-public-types " &
- "ALL_TYPES_ON " &
+ "ALL_TYPES " &
"--all-types " &
- "ALL_TYPES_OFF " &
+ "NOALL_TYPES " &
"--no-all-types " &
- "UNIT_NESTING_ON " &
+ "UNIT_NESTING " &
"--unit-nesting " &
- "UNIT_NESTING_OFF " &
+ "NOUNIT_NESTING " &
"--no-unit-nesting " &
- "CONSTRUCT_NESTING_ON " &
+ "CONSTRUCT_NESTING " &
"--construct-nesting " &
- "CONSTRUCT_NESTING_OFF " &
+ "NOCONSTRUCT_NESTING " &
"--no-construct-nesting";
-- /SYNTAX_METRICS(option, option ...)
--
--
-- option may be one of the following:
--
- -- ALL_ON (D) All the syntax element metrics are computed
- -- ALL_OFF None of syntax element metrics is computed
- -- DECLARATIONS_ON Compute the total number of declarations
- -- DECLARATIONS_OFF Do not compute the total number of
- -- declarations
- -- STATEMENTS_ON Compute the total number of statements
- -- STATEMENTS_OFF Do not compute the total number of
- -- statements
- -- PUBLIC_SUBPROGRAMS_ON Compute the number of public subprograms
- -- PUBLIC_SUBPROGRAMS_OFF Do not compute the number of public
- -- subprograms
- -- ALL_SUBPROGRAMS_ON Compute the number of all the subprograms
- -- ALL_SUBPROGRAMS_OFF Do not compute the number of all the
- -- subprograms
- -- PUBLIC_TYPES_ON Compute the number of public types
- -- PUBLIC_TYPES_OFF Do not compute the number of public types
- -- ALL_TYPES_ON Compute the number of all the types
- -- ALL_TYPES_OFF Do not compute the number of all the types
- -- UNIT_NESTING_ON Compute the maximal program unit nesting
- -- level
- -- UNIT_NESTING_OFF Do not compute the maximal program unit
- -- nesting level
- -- CONSTRUCT_NESTING_ON Compute the maximal construct nesting level
- -- CONSTRUCT_NESTING_OFF Do not compute the maximal construct nesting
- -- level
+ -- ALL (D) All the syntax element metrics are computed
+ -- NONE None of syntax element metrics is computed
+ -- DECLARATIONS Compute the total number of declarations
+ -- NODECLARATIONS Do not compute the total number of declarations
+ -- STATEMENTS Compute the total number of statements
+ -- NOSTATEMENTS Do not compute the total number of statements
+ -- PUBLIC_SUBPROGRAMS Compute the number of public subprograms
+ -- NOPUBLIC_SUBPROGRAMS Do not compute the number of public subprograms
+ -- ALL_SUBPROGRAMS Compute the number of all the subprograms
+ -- NOALL_SUBPROGRAMS Do not compute the number of all the
+ -- subprograms
+ -- PUBLIC_TYPES Compute the number of public types
+ -- NOPUBLIC_TYPES Do not compute the number of public types
+ -- ALL_TYPES Compute the number of all the types
+ -- NOALL_TYPES Do not compute the number of all the types
+ -- UNIT_NESTING Compute the maximal program unit nesting
+ -- level
+ -- NOUNIT_NESTING Do not compute the maximal program unit
+ -- nesting level
+ -- CONSTRUCT_NESTING Compute the maximal construct nesting level
+ -- NOCONSTRUCT_NESTING Do not compute the maximal construct nesting
+ -- level
--
-- All combinations of syntax element metrics options are allowed.
-- NODOC (see /LINE_COUNT_METRICS)
S_Metric_Lines : aliased constant S := "/LINE_COUNT_METRICS=" &
- "ALL_ON " &
+ "ALL " &
"--lines-all " &
- "ALL_OFF " &
+ "NONE " &
"--no-lines-all " &
- "ALL_LINES_ON " &
+ "ALL_LINES " &
"--lines " &
- "ALL_LINES_OFF " &
+ "NOALL_LINES " &
"--no-lines " &
- "CODE_LINES_ON " &
+ "CODE_LINES " &
"--lines-code " &
- "CODE_LINES_OFF " &
+ "NOCODE_LINES " &
"--no-lines-code " &
- "COMMENT_LINES_ON " &
+ "COMMENT_LINES " &
"--lines-comment " &
- "COMMENT_LINES_OFF " &
+ "NOCOMMENT_LINES " &
"--no-lines-comment " &
- "CODE_COMMENT_LINES_ON " &
+ "CODE_COMMENT_LINES " &
"--lines-eol-comment " &
- "CODE_COMMENT_LINES_OFF " &
+ "NOCODE_COMMENT_LINES " &
"--no-lines-eol-comment " &
- "COMMENT_PERCENTAGE_ON " &
+ "COMMENT_PERCENTAGE " &
"--lines-ratio " &
- "COMMENT_PERCENTAGE_OFF " &
+ "NOCOMMENT_PERCENTAGE " &
"--no-lines-ratio " &
- "BLANK_LINES_ON " &
+ "BLANK_LINES " &
"--lines-blank " &
- "BLANK_LINES_OFF " &
+ "NOBLANK_LINES " &
"--no-lines-blank " &
- "AVERAGE_BODY_LINES_ON " &
+ "AVERAGE_BODY_LINES " &
"--lines-average " &
- "AVERAGE_BODY_LINES_OFF " &
+ "NOAVERAGE_BODY_LINES " &
"--no-lines-average";
-- /LINE_COUNT_METRICS=(option, option ...)
--
-- option may be one of the following:
--
- -- ALL_ON (D) All the line metrics are computed
- -- ALL_OFF None of line metrics is computed
- -- ALL_LINES_ON All lines are computed
- -- ALL_LINES_OFF All lines are not computed
- -- CODE_LINES_ON Lines with Ada code are computed
- -- CODE_LINES_OFF Lines with Ada code are not computed
- -- COMMENT_LINES_ON Comment lines are computed
- -- COMMENT_LINES_OFF Comment lines are not computed
- -- COMMENT_PERCENTAGE_ON Ratio between comment lines and all the
- -- lines containing comments and program code
- -- is computed
- -- COMMENT_PERCENTAGE_OFF Ratio between comment lines and all the
- -- lines containing comments and program code
- -- is not computed
- -- BLANK_LINES_ON Blank lines are computed
- -- BLANK_LINES_OFF Blank lines are not computed
- -- AVERAGE_BODY_LINES_ON Average number of code lines in subprogram,
- -- task and entry bodies and statement
- -- sequences of package bodies is computed
- -- AVERAGE_BODY_LINES_OFF Average number of code lines in subprogram,
- -- task and entry bodies and statement
- -- sequences of package bodies is not computed
+ -- ALL (D) All the line metrics are computed
+ -- NONE None of line metrics is computed
+ -- ALL_LINES All lines are computed
+ -- NOALL_LINES All lines are not computed
+ -- CODE_LINES Lines with Ada code are computed
+ -- NOCODE_LINES Lines with Ada code are not computed
+ -- COMMENT_LINES Comment lines are computed
+ -- NOCOMMENT_LINES Comment lines are not computed
+ -- CODE_COMMENT_LINES Lines containing both code and comment parts
+ -- are computed
+ -- NOCODE_COMMENT_LINES Lines containing both code and comment parts
+ -- are not computed
+ -- COMMENT_PERCENTAGE Ratio between comment lines and all the lines
+ -- containing comments and program code is
+ -- computed
+ -- NOCOMMENT_PERCENTAGE Ratio between comment lines and all the lines
+ -- containing comments and program code is not
+ -- computed
+ -- BLANK_LINES Blank lines are computed
+ -- NOBLANK_LINES Blank lines are not computed
+ -- AVERAGE_BODY_LINES Average number of code lines in subprogram,
+ -- task and entry bodies and statement sequences
+ -- of package bodies is computed
+ -- NOAVERAGE_BODY_LINES Average number of code lines in subprogram,
+ -- task and entry bodies and statement sequences
+ -- of package bodies is not computed
--
-- All combinations of line metrics options are allowed.
S_Metric_Complexity : aliased constant S := "/COMPLEXITY_METRICS=" &
- "ALL_ON " &
+ "ALL " &
"--complexity-all " &
- "ALL_OFF " &
+ "NONE " &
"--no-complexity-all " &
- "CYCLOMATIC_ON " &
+ "CYCLOMATIC " &
"--complexity-cyclomatic " &
- "CYCLOMATIC_OFF " &
+ "NOCYCLOMATIC " &
"--no-complexity-cyclomatic "&
- "ESSENTIAL_ON " &
+ "ESSENTIAL " &
"--complexity-essential " &
- "ESSENTIAL_OFF " &
+ "NOESSENTIAL " &
"--no-complexity-essential " &
- "LOOP_NESTING_ON " &
+ "LOOP_NESTING " &
"--loop-nesting " &
- "LOOP_NESTING_OFF " &
+ "NOLOOP_NESTING " &
"--no-loop-nesting " &
- "AVERAGE_COMPLEXITY_ON " &
+ "AVERAGE_COMPLEXITY " &
"--complexity-average " &
- "AVERAGE_COMPLEXITY_OFF " &
+ "NOAVERAGE_COMPLEXITY " &
"--no-complexity-average " &
- "EXTRA_EXIT_POINTS_ON " &
+ "EXTRA_EXIT_POINTS " &
"--extra-exit-points " &
- "EXTRA_EXIT_POINTS_OFF " &
+ "NOEXTRA_EXIT_POINTS " &
"--no-extra-exit-points";
-- /COMPLEXITY_METRICS=(option, option ...)
--
-- option may be one of the following:
--
- -- ALL_ON (D) All the complexity metrics are computed
- -- ALL_OFF None of complexity metrics is computed
- -- CYCLOMATIC_ON Compute the McCabe Cyclomatic Complexity
- -- CYCLOMATIC_OFF Do not compute the McCabe Cyclomatic
- -- Complexity
- -- ESSENTIAL_ON Compute the Essential Complexity
- -- ESSENTIAL_OFF Do not compute the Essential Complexity
- -- LOOP_NESTIMG_ON Compute the maximal loop nesting
- -- LOOP_NESTIMG_OFF Do not compute the maximal loop nesting
- -- AVERAGE_COMPLEXITY_ON Compute the average complexity for
- -- executable bodies
- -- AVERAGE_COMPLEXITY_OFF Do not compute the average complexity for
- -- executable bodies
- -- EXTRA_EXIT_POINTS_ON Compute extra exit points metric
- -- EXTRA_EXIT_POINTS_OFF Do not compute extra exit points metric
+ -- ALL (D) All the complexity metrics are computed
+ -- NONE None of complexity metrics is computed
+ -- CYCLOMATIC Compute the McCabe Cyclomatic Complexity
+ -- NOCYCLOMATIC Do not compute the McCabe Cyclomatic Complexity
+ -- ESSENTIAL Compute the Essential Complexity
+ -- NOESSENTIAL Do not compute the Essential Complexity
+ -- LOOP_NESTING Compute the maximal loop nesting
+ -- NOLOOP_NESTING Do not compute the maximal loop nesting
+ -- AVERAGE_COMPLEXITY Compute the average complexity for executable
+ -- bodies
+ -- NOAVERAGE_COMPLEXITY Do not compute the average complexity for
+ -- executable bodies
+ -- EXTRA_EXIT_POINTS Compute extra exit points metric
+ -- NOEXTRA_EXIT_POINTS Do not compute extra exit points metric
--
-- All combinations of line metrics options are allowed.
S_Metric_Coupling : aliased constant S := "/COUPLING_METRICS=" &
- "ALL_ON " &
+ "ALL " &
"--coupling-all " &
- "ALL_OFF " &
+ "NONE " &
"--no-coupling-all " &
- "PACKAGE_EFFERENT_ON " &
+ "PACKAGE_EFFERENT " &
"--package-efferent-coupling " &
- "PACKAGE_EFFERENT_OFF " &
+ "NOPACKAGE_EFFERENT " &
"--no-package-efferent-coupling " &
- "PACKAGE_AFFERENT_ON " &
+ "PACKAGE_AFFERENT " &
"--package-afferent-coupling " &
- "PACKAGE_AFFERENT_OFF " &
+ "NOPACKAGE_AFFERENT " &
"--no-package-afferent-coupling " &
- "CATEGORY_EFFERENT_ON " &
+ "CATEGORY_EFFERENT " &
"--category-efferent-coupling " &
- "CATEGORY_EFFERENT_OFF " &
+ "NOCATEGORY_EFFERENT " &
"--no-category-efferent-coupling " &
- "CATEGORY_AFFERENT_ON " &
+ "CATEGORY_AFFERENT " &
"--category-afferent-coupling " &
- "CATEGORY_AFFERENT_OFF " &
+ "NOCATEGORY_AFFERENT " &
"--no-category-afferent-coupling";
-- /COUPLING_METRICS=(option, option ...)
--
-- option may be one of the following:
--
- -- ALL_ON All the coupling metrics are computed
- -- ALL_OFF (D) None of coupling metrics is computed
- -- PACKAGE_EFFERENT_ON Compute package efferent coupling
- -- PACKAGE_EFFERENT_OFF Do not compute package efferent coupling
- -- PACKAGE_AFFERENT_ON Compute package afferent coupling
- -- PACKAGE_AFFERENT_OFF Do not compute package afferent coupling
- -- CATEGORY_EFFERENT_ON Compute category efferent coupling
- -- CATEGORY_EFFERENT_OFF Do not compute category efferent coupling
- -- CATEGORY_AFFERENT_ON Compute category afferent coupling
- -- CATEGORY_AFFERENT_OFF Do not compute category afferent coupling
+ -- ALL All the coupling metrics are computed
+ -- NONE (D) None of coupling metrics is computed
+ -- PACKAGE_EFFERENT Compute package efferent coupling
+ -- NOPACKAGE_EFFERENT Do not compute package efferent coupling
+ -- PACKAGE_AFFERENT Compute package afferent coupling
+ -- NOPACKAGE_AFFERENT Do not compute package afferent coupling
+ -- CATEGORY_EFFERENT Compute category efferent coupling
+ -- NOCATEGORY_EFFERENT Do not compute category efferent coupling
+ -- CATEGORY_AFFERENT Compute category afferent coupling
+ -- NOCATEGORY_AFFERENT Do not compute category afferent coupling
--
-- All combinations of coupling metrics options are allowed.