TOC PREV NEXT INDEX DOC LIST MASTER INDEX




Standards-Conformance
and Compatibility Rule Libraries

This section lists all currently supported rules for checking the conformance of Ada software to quality standards and guidelines. These checks are grouped into four separate rule libraries:

Ada 95 Rules

The following rules check whether a program written in Ada 83 is compatible with the semantics of Ada 95. Some rules are considered errors and their violation will definitely result in an incompatibility. Other rules are considered warnings and may or may not result in an incompatibility with Ada 95. They are included here so that these potential problems can be found and additional analysis performed.

Rule
Reference

Rule Label
Default
Enforcement

Ada95 01
Enforcement_For_New_Ada95_Keywords
Error
Ada95 02
Enforcement_For_New_Ada95_Predefined_Packages
Error
Ada95 03
Enforcement_For_New_Ada95_Standard_Identifiers
Error
Ada95 04
Enforcement_For_New_Ada95_System_Identifiers
Error
Ada95 05
Enforcement_For_Packages_With_No_Body
Error
Ada95 06
Enforcement_For_Base_Attribute_On_Composite
Error
Ada95 07
Enforcement_For_Exception_Numeric_Error
Warning
Ada95 08
Enforcement_For_Rep_Specs_Not_Following_Type
Error
Ada95 09
Enforcement_For_Unsafe_Attributes
Warning
Ada95 10
Enforcement_For_New_Ada95_Text_Io_Identifiers
Error
Ada95 11
Enforcement_For_Types_Derived_From_Parent_Types
Warning
Ada95 12
Enforcement_For_Character_Size
Error
Ada95 13
Enforcement_For_Character_And_String_Literal_Overloading
Error
Ada95 14
Enforcement_For_Text_Io_File_Mode
Error
Ada95 15
Enforcement_For_Functions_Returning_Tasks
Error
Ada95 16
Enforcement_For_Language_Defined_Pragmas
Warning
Ada95 17
Enforcement_For_Size_Attribute_On_Non_Byte
Warning
Default Ada 95 Enforcement

Software Productivity Consortium's Guidelines

The following rules check some of the programming guidelines defined by the Software Productivity Consortium in Ada Quality and Style, Version 01.00.10, October 1995. Many of the guidelines defined in that document are too general to be checked automatically. Those that are specific enough are listed below with a reference to the paragraph in which they are defined. Some rules have been adapted slightly to make them more specific and thus more amenable to automatic checking. All rules are stated in the negative.

Note: Complete descriptions of all SPC rules can be found on the net at http://www.adaic.org/AdaIC/docs/style-guide/95style/html/contents.html

Default SPC Enforcement

Rule
Reference

Rule Label
Default
Enforcement

SPC 3.1.4.f
Enforcement_For_Unapproved_Abbreviations
Error
SPC 3.2.6.j
Enforcement_For_Numeric_Lits_In_Non_Declarative_Part
Error
SPC 4.1.1.b
Enforcement_For_Library_Level_Subprograms
Warning
SPC 4.1.1.c
Enforcement_For_Use_Of_Subunits
Warning
SPC 4.1.1.g
Enforcement_For_Nested_Package_Bodies
Warning
SPC 4.1.4.b
Enforcement_For_Functions_With_Side_Effects
Warning
SPC 4.1.8.a
Enforcement_For_Var_Decls_Visible_In_Pkg
Warning
SPC 4.2.4.a
Enforcement_For_Task_Decls_Visible_In_Pkg
Warning
SPC 4.3.1.c
Enforcement_For_Non_Visible_Exception_Decls
Error
SPC 4.3.1.j
Enforcement_For_Raise_Predefined_Exceptions
Error
SPC 5.1.1.a
Enforcement_For_Named_Nested_Loops
Warning
SPC 5.1.1.b
Enforcement_For_Named_Loops_With_Exits
Warning
SPC 5.1.2.a
Enforcement_For_Named_Nested_Blocks
Warning
SPC 5.1.3.a
Enforcement_For_Loop_Names_In_Exit
Warning
SPC 5.2.2.a
Enforcement_For_Named_Association_In_Calls
Error
SPC 5.2.2.b
Enforcement_For_Named_Association_In_Instantiations
Error
SPC 5.2.3.b
Enforcement_For_Default_Parameter_Order
Warning
SPC 5.2.4.a
Enforcement_For_Parameter_Modes
Warning
SPC 5.2.4.b
Enforcement_For_In_Out_Parameter_Inconsistencies
Warning
SPC 5.3.1.b
Enforcement_For_Subtype_Range_Constraints
Warning
SPC 5.3.1.d
Enforcement_For_Derived_Type_Range_Constraints
Warning
SPC 5.3.2.a
Enforcement_For_Anonymous_Array_Type_Usage
Error
SPC 5.4.5.h
Enforcement_For_Collection_Size_Not_Specified
Warning
SPC 5.4.5.i
Enforcement_For_Storage_Error_Handler_For_Allocators
Error
SPC 5.4.8.a
Enforcement_For_Modular_Types_For_Bitwise_Ops
Warning
SPC 5.5.3.a
Enforcement_For_Unparenthesized_Complex_Expressions
Warning
SPC 5.5.4.a
Enforcement_For_Negative_Condition_Usage
Warning
SPC 5.5.5.a
Enforcement_For_Non_Short_Circuit_Operators
Warning
SPC 5.5.6.a
Enforcement_For_Equality_Operators_For_Real_Types
Error
SPC 5.6.3.a
Enforcement_For_Case_When_Others
Warning
SPC 5.6.3.b
Enforcement_For_Case_When_Range
Warning
SPC 5.6.4.d
Enforcement_For_Exit_In_While_And_For_Loops
Warning
SPC 5.6.4.e
Enforcement_For_Multiple_Exits_In_A_Loop
Warning
SPC 5.6.5.b
Enforcement_For_Non_Use_Of_Exit_When
Warning
SPC 5.6.7.a
Enforcement_For_Goto_Usage
Error
SPC 5.6.8.a
Enforcement_For_Procedures_With_Returns
Warning
SPC 5.6.8.a
Enforcement_For_Functions_With_Multiple_Returns
Warning
SPC 5.6.10.c
Enforcement_For_Named_Association_In_Record_Aggs
Error
SPC 5.7.1.b
Enforcement_For_Unapproved_Use_Clauses
Error
SPC 5.7.2.f
Enforcement_For_Use_Of_Unapproved_Rename
Warning
SPC 5.8.1.d
Enforcement_For_Raised_Exceptions_Non_Propagating
Error
SPC 5.8.2.a
Enforcement_For_Exception_Handler_When_Others
Warning
SPC 5.9.1.a
Enforcement_For_Unchecked_Conversion_Use
Warning
SPC 5.9.2.a
Enforcement_For_Unchecked_Deallocation_Use
Warning
SPC 5.9.2b
Enforcement_For_Missing_Deallocation
Warning
SPC 5.9.3.a
Enforcement_For_Use_Of_Prohibited_Attributes
Error
SPC 5.9.4.a
Enforcement_For_Address_Clause_Usage
Warning
SPC 5.9.5.a
Enforcement_For_Pragma_Suppress
Error
SPC 5.9.6.f
Enforcement_For_Initialization_Using_Local_Functions
Error
SPC 5.9.9.a
Enforcement_For_Blocking_Ops_In_Protected_Types
Error
SPC 6.1.5.a
Enforcement_For_Dynamically_Allocated_Tasks
Warning
SPC 6.1.7.b
Enforcement_For_Delay_Usage
Warning
SPC 6.2.3.a
Enforcement_For_Use_Of_Prohibited_Attributes
Error
SPC 6.2.4.c
Enforcement_For_Non_Locals_In_Guards
Error
SPC 6.2.5.a
Enforcement_For_Conditional_Entry_Call
Warning
SPC 6.2.5.b
Enforcement_For_Selective_Wait_With_Else_Part
Warning
SPC 6.3.1.a
Enforcement_For_Missing_Handler_In_Tasking_Loop
Warning
SPC 6.3.2.d
Enforcement_For_Missing_Terminate_Alternative
Warning
SPC 6.3.3.a
Enforcement_For_Abort_Usage
Error
SPC 6.3.4.a
Enforcement_For_Others_Handler_In_Task_Body
Error
SPC 7.1.4.a
Enforcement_For_Main_Programs_With_Parameters
Error
SPC 7.2.1.a
Enforcement_For_Predefined_Type_References
Error
SPC 7.3.2.a
Enforcement_For_Access_To_Subprog_Values
Error
SPC 7.5.2.a
Enforcement_For_Constraint_Error_Handlers
Error
SPC 7.6.3.a
Enforcement_For_Use_Of_Machine_Code_Inserts
Warning
SPC 7.7.1.a
Enforcement_For_Text_Io_Form_Parameter
Warning
SPC 8.2.4.a
Enforcement_For_Subtypes_With_Generic_In_Out_Formals
Error

Rational Target-Compatibility Rules

The following rules check the compatibility of code developed on Rational Apex but intended for execution on other targets. These Little Tree Consulting (LTC) rules locate code segments that would be rejected as incorrect by another compiler or whose implementation-dependent meaning would probably change.

Rule
Reference

Rule Label
Default
Enforcement

LTC 101
Enforcement_For_Predefined_Type_References
Error
LTC 102
Enforcement_For_External_Unit_References
Error
LTC 103
Enforcement_For_Prompt_Usage
Error
LTC 104
Enforcement_For_Duplicate_Unit_Names
Error
LTC 105
Enforcement_For_Unknown_Pragma_Usage
Error
LTC 106
Enforcement_For_Reserved_Name_Usage
Error
LTC 107
Enforcement_For_Size_Mismatch_In_Unchecked_Conversion
Error
LTC 108
Enforcement_For_Correct_Inline_Order
Not_Enforced
LTC 109
Enforcement_For_Non_Predefined_Attributes
Error
LTC 110
Enforcement_For_Non_Predefined_Pragmas
Error
Default LTC Enforcement

Little Tree Consulting's Software-Quality Guidelines

The following rules form the set of quality standards checks recommended by Little Tree Consulting. The rules have been divided into ten categories:

Note: Although each rule is assigned to a specific category, several have implications in more than one quality objective. An attempt was made to assign each rule to the most appropriate category. Not all rules will apply to all projects; inappropriate rules can be disabled. Some rules are either similar to or duplicates of the SPC rules. Some SPC rules and other customer-specific rules that have been added to the rule library over time are not recommended by Little Tree Consulting but are included for completeness. All of these rules are Not_Enforced by default. If it is unclear why a particular rule should be enforced within your project, do not enable it in the rule_enforcement file.

Code Correctness

Checks in this category identify Ada constructs that have a higher risk of being an error. Not all identified constructs will be errors, but each should be further verified for correctness.

Maintainability

Checks in this category are seldom problems in their current form but have a high risk of introducing an error when changes are made to other constructs they implicitly depend on.

Efficiency

Checks in this category can negatively impact the execution speed, overall size, and/or memory utilization of a program.

Readability

Checks in this category directly impact a user's ability to read and easily understand a program.

Portability

Checks in this category locate constructs that will negatively impact the possibility of porting a program to another compilation system.

Program Structure

Checks in this category locate constructs that can reduce the structural integrity of a program.

Program Format

Checks in this category locate constructs that do not match formatting requirements and therefore cannot be enforced by the pretty printer.

Real Time Restrictions (Annex D, Ravenscar)

This section identifies restrictions listed in Annex D, "Real-Time Systems" of the Ada 95 LRM. These restrictions prohibit the use of certain Ada constructs that might negatively impact the reliability of Ada programs for safety critical applications.

This section also defines rules that check the coding restrictions defined in the Ravenscar Tasking Profile. The complete set of rules are listed in the standards_conformance/ravenscar_enforcement file of the default configuration policy.

Safety and Security Restrictions (Annex H)

This section identifies restrictions listed in Annex H, "Safety and Security" of the Ada 95 LRM. These restrictions prohibit the use of certain Ada constructs that might negatively impact the reliability of Ada programs for safety critical applications

SPARK Ada Subset Restrictions

This section identifies restrictions defined for the SPARK Ada subset programming language as specified in "High Integrity Ada, The SPARK Approach" by John Barnes. An additional sixteen rules from other sections of the Ada Analyzer rule library make up the complete set of SPARK coding violation restrictions. These restrictions prohibit the use of certain Ada constructs in the SPARK subset.

Rule
Reference

Rule Label
Default
Enforcement

LTC 201
Enforcement_For_Divide_By_Zero
Error
LTC 202
Enforcement_For_Address_Of_Dynamic_Objects
Error
LTC 203
Enforcement_For_Address_Of_Constants
Error
LTC 204
Enforcement_For_Static_Constraint_Violations
Error
LTC 205
Enforcement_For_Inconsistent_Rep_Specs
Error
LTC 206
Enforcement_For_Functions_Missing_Return_Or_Raise
Error
LTC 207
Enforcement_For_Constraint_Error_Handlers
Error
LTC 208
Enforcement_For_False_Operator_Rename
Error
LTC 209
Enforcement_For_Equality_Operators_For_Real_Types
Error
LTC 210
Enforcement_For_L_Private_Types_Not_Self_Init
Error
LTC 211
Enforcement_For_Storage_Error_Handler_For_Allocators
Error
LTC 212
Enforcement_For_Missing_Handler_In_Tasking_Loop
Warning
LTC 213
Enforcement_For_Initialization_Using_Local_Functions
Error
LTC 214
Enforcement_For_Subtypes_With_Generic_In_Out_Formals
Error
LTC 215
Enforcement_For_Use_Of_Null_Statements
Warning
LTC 216
Enforcement_For_Use_Of_Prohibited_Attributes
Error
LTC 217
Enforcement_For_Use_Of_Attribute_Names_As_Components
Warning
LTC 218
Enforcement_For_Pragma_Suppress
Error
LTC 219
Enforcement_For_Nonlocal_Calls_In_Package_Begin_Blocks
Warning
LTC 220
Enforcement_For_In_Out_Parameter_Inconsistencies
Warning
LTC 221
Enforcement_For_Blocking_Ops_In_Protected_Types
Error
LTC 222
Enforcement_For_Non_Locals_In_Guards
Error
LTC 223
Enforcement_For_Others_Handler_In_Task_Body
Error
LTC 224
Enforcement_For_Access_To_Subprog_Values
Error
LTC 225
Enforcement_For_Use_Of_Address_To_Access_Conversion
Warning
LTC 226
Enforcement_For_Raise_Through_Exception_Id
Warning
LTC 227
Enforcement_For_Unelaborated_External_Refs
Warning
LTC 228
Enforcement_For_Uninitialized_Variables
Warning
LTC 229
Enforcement_For_Null_When_Others_Handler
Error
LTC 230
Enforcement_For_Io_On_Access_Types
Error
LTC 231
Enforcement_For_Type_Conversion_Reducing_Constraints
Warning
LTC 232
Enforcement_For_Missing_Deallocation
Warning
LTC 233
Enforcement_For_Logical_Ops_On_Models_Non_Power2
Error
LTC 301
Enforcement_For_Exception_Handler_When_Others
Warning
LTC 302
Enforcement_For_Case_When_Others
Warning
LTC 303
Enforcement_For_Case_When_Range
Warning
LTC 304
Enforcement_For_Others_In_Enumerated_Aggregates
Warning
LTC 305
Enforcement_For_Explicit_Index_Types_In_Arrays
Warning
LTC 306
Enforcement_For_Named_Association_In_Calls
Error
LTC 307
Enforcement_For_Named_Association_In_Record_Aggs
Error
LTC 308
Enforcement_For_Named_Association_In_Instantiations
Error
LTC 309
Enforcement_For_Numeric_Lits_In_Non_Declarative_Part
Error
LTC 310
Enforcement_For_Use_Of_Default_Parameters
Warning
LTC 311
Enforcement_For_Empty_Raise_Statements
Warning
LTC 312
Enforcement_For_Named_Association_In_Array_Aggs
Warning
LTC 401
Enforcement_For_Recursive_Subprograms
Warning
LTC 402
Enforcement_For_Access_Types
Warning
LTC 403
Enforcement_For_Non_Short_Circuit_Operators
Warning
LTC 404
Enforcement_For_Text_Io_References
Warning
Rule 405
Enforcement_For_If_Replaceable_By_Case
Not_Enforced
Rule 406
Not allocated
Not_Enforced
Rule 407
Enforcement_For_If_To_Set_Boolean_Variable
Not_Enforced
Rule 408
Enforcement_For_Integer_Typed_Constant_Usage
Not_Enforced
Rule 409
Enforcement_For_Record_Component_Rename_Only_One-_Level
Not_Enforced
Rule 410
Enforcement_For_Selective_Wait_With_Else_Part
Not_Enforced
Rule 411
Enforcement_For_Modular_Types_For_Bitwise_Ops
Warning
LTC 412
Enforcement_For_Functions_Returning_Large_Types
Warning
LTC 413
Enforcement_For_Functions_Returning_Unconstrained_Types
Warning
LTC 414
Enforcement_For_No_Default_Initialization
Warning
LTC 501
Enforcement_For_Redeclaration_Of_Standard_Names
Error
LTC 502
Enforcement_For_Use_Of_Unapproved_Renames
Warning
LTC 503
Enforcement_For_Aliasing_Of_Renames
Warning
LTC 504
Enforcement_For_Unapproved_Use_Clauses
Error
LTC 505
Enforcement_For_Unapproved_Abbreviations
Error
LTC 506
Enforcement_For_Negative_Condition_Usage
Warning
Rule 507
Enforcement_For_Default_Parameter_Order
Not_Enforced
Rule 508
Enforcement_For_Loop_Names_In_Exit
Not_Enforced
Rule 509
Enforcement_For_Mode_Parameter_Order
Not_Enforced
Rule 510
Enforcement_For_Named_Nested_Blocks
Not_Enforced
Rule 511
Enforcement_For_Named_Nested_Loops
Not_Enforced
Rule 512
Enforcement_For_Parameter_Modes
Not_Enforced
Rule 513
Enforcement_For_Named_Large_Loops
Not_Enforced
LTC 514
Enforcement_For_Unqualified_References
Warning
LTC 515
Enforcement_For_Unparenthesized_Complex_Expressions
Warning
LTC 516
Enforcement_For_Named_Loops_With_Exits
Warning
LTC 517
Enforcement_For_Naming_Convention_Violations
Warning
LTC 518
Enforcement_For_Name_Selection_Limit
Warning
LTC 519
Enforcement_For_Unqaulified_References_-Allow_In_Children
Warning
LTC 601
Enforcement_For_Unchecked_Conversion_Of_Unconstrained
Error
LTC 602
Enforcement_For_Delay_Zero_Duration
Warning
LTC 603
Enforcement_For_Rep_Specs_On_Derived_Types
Warning
LTC 604
Enforcement_For_Text_Io_Form_Parameter
Warning
LTC 605
Enforcement_For_Collection_Size_Not_Specified
Warning
LTC 606
Enforcement_For_Task_Stack_Size_Not_Specified
Warning
LTC 607
Enforcement_For_Main_Programs_With_Parameters
Error
LTC 608
Enforcement_For_Use_Of_Machine_Code_Inserts
Warning
LTC 701
Enforcement_For_McCabe_Complexity_Limit
Warning
LTC 702
Enforcement_For_Abort_Usage
Error
LTC 703
Enforcement_For_Goto_Usage
Error
LTC 704
Enforcement_For_Anonymous_Array_Type_Usage
Error
LTC 705
Enforcement_For_Raised_Exceptions_Non_Propagating
Error
LTC 706
Enforcement_For_Raise_Predefined_Exceptions
Error
LTC 707
Enforcement_For_Non_Visible_Exception_Decls
Warning
LTC 708
Enforcement_For_Functions_With_Multiple_Returns
Warning
LTC 709
Enforcement_For_Procedures_With_Returns
Warning
LTC 710
Enforcement_For_Functions_With_Side_Effects
Warning
LTC 711
Enforcement_For_Exit_In_While_And_For_Loops
Warning
LTC 712
Enforcement_For_Multiple_Exits_In_A_Loop
Warning
LTC 713
Enforcement_For_Var_Decls_Visible_In_Pkg
Warning
LTC 714
Enforcement_For_Non_Standard_Radixes
Warning
LTC 715
Enforcement_For_Constant_Decls_In_Dynamic_Scope
Error
LTC 716
Enforcement_For_Unchecked_Conversion_Use
Warning
LTC 717
Enforcement_For_Unchecked_Deallocation_Use
Warning
Rule 718
Enforcement_For_Conditional_Entry_Call
Not_Enforced
Rule 719
Enforcement_For_Derived_Type_Range_Constraints
Not_Enforced
Rule 720
Enforcement_For_Dynamically_Allocated_Tasks
Warning
Rule 721
Enforcement_For_Missing_Terminate_Alternative
Not_Enforced
Rule 722
Enforcement_For_Non_Use_Of_Exit_When
Not_Enforced
Rule 723
Enforcement_For_Pragma_Shared
Warning
Rule 724
Enforcement_For_Subtype_Range_Constraints
Not_Enforced
Rule 725
Enforcement_For_Task_Decls_In_Visible_Pkg
Not_Enforced
Rule 726
Enforcement_For_Else_Part_When_Exception_Raised
Not_Enforced
Rule 727
Enforcement_For_Delay_Usage
Warning
Rule 728
Enforcement_For_Enumeration_Rep_Clause_Usage
Not_Enforced
Rule 729
Enforcement_For_Expression_Complexity_Limit
Not_Enforced
Rule 730
Enforcement_For_Fixed_Point_Usage
Not_Enforced
Rule 731
Enforcement_For_Attribute_Clause_Usage
Not_Enforced
Rule 732
Enforcement_For_Priority_Usage
Not_Enforced
Rule 733
Enforcement_For_Subprogram_Nesting_Limit
Not_Enforced
Rule 734
Enforcement_For_Task_Usage
Not_Enforced
Rule 735
Enforcement_For_Address_Clause_Usage
Warning
Rule 736
Enforcement_For_Package_Nesting_Limit
Not_Enforced
Rule 737
Enforcement_For_Record_Rep_Clause_Usage
Not_Enforced
Rule 738
Enforcement_For_Exported_Rename_Of_Non_Exported_Decl
Warning
Rule 739
Enforcement_For_Use_Of_Non_Exported_Rename
Error
Rule 740
Enforcement_For_Pure_Private_Parts
Warning
Rule 741
Enforcement_For_Library_Level_Subprograms
Warning
Rule 742
Enforcement_For_Use_Of_Subunits
Not_Enforced
Rule 743
Enforcement_For_Nested_Package_Bodies
Not_Enforced
LTC 744
Enforcement_For_Subtype_Nesting_Limit
Warning
LTC 745
Enforcement_For_Unnecessary_Type_Conversion
Warning
LTC 746
Enforcement_For_Missing_Storage_Pool_Specification
Warning
LTC 747
Enforcement_For_User_Defined_Exceptions
Not_Enforced
LTC 748
Enforcement_For_Child_Unit_Updates_of_Private_Vars
Warning
LTC 749
Enforcement_For_Static_Decls_In_Blocks
Warning
LTC 750
Enforcement_For_Side_Effects_In_Functions
Warning
Rule 801
Enforcement_For_List_Items_One_Per_Line
Not_Enforced
Rule 802
Enforcement_For_Alphabetic_Context_Clause_Order
Not_Enforced
Rule 803
Enforcement_For_Alphabetic_Rename_Clause_Order
Not_Enforced
Rule 804
Enforcement_For_Multi_Name_Context_Clauses
Not_Enforced
Rule 805
Enforcement_For_Multi_Name_Declarations
Not_Enforced
Rule 806
Enforcement_For_Maximum_Unit_Size
Not_Enforced
Rule 807
Enforcement_For_Maximum_Subprogram_Size
Not_Enforced
LTC 1001
Enforcement_For_No_Protected_Types
Not_Enforced
LTC 1002
Enforcement_For_No_Allocators
Not_Enforced
LTC 1003
Enforcement_For_No_Local_Allocators
Not_Enforced
LTC 1004
Enforcement_For_No_Local_Instantiations
Not_Enforced
LTC 1005
Enforcement_For_No_Use_Of_Unchecked_Deallocation
Not_Enforced
LTC 1006
Enforcement_For_No_Exceptions
Not_Enforced
LTC 1007
Enforcement_For_No_Floating_Point
Not_Enforced
LTC 1008
Enforcement_For_No_Fixed_Point
Not_Enforced
LTC 1009
Enforcement_For_No_Use_Of_Unchecked_Conversion
Not_Enforced
LTC 1010
Enforcement_For_No_Access_Subprograms
Not_Enforced
LTC 1011
Enforcement_For_No_Unchecked_Access
Not_Enforced
LTC 1012
Enforcement_For_No_Dispatch
Not_Enforced
LTC 1013
Enforcement_For_No_Io
Not_Enforced
LTC 1014
Enforcement_For_No_Delay
Not_Enforced
LTC 1015
Enforcement_For_No_Calendar
Not_Enforced
LTC 1016
Enforcement_For_No_Recursion
Not_Enforced
LTC 1101
Enforcement_For_No_Task_Hierarchy
Not_Enforced
LTC 1102
Enforcement_For_No_Nested_Finalization
Not_Enforced
LTC 1103
Enforcement_For_No_Abort_Statements
Not_Enforced
LTC 1104
Enforcement_For_No_Termination_Alternatives
Not_Enforced
LTC 1105
Enforcement_For_No_Task_Allocators
Not_Enforced
LTC 1106
Enforcement_For_No_Dynamic_Priorities
Not_Enforced
LTC 1107
Enforcement_For_No_Asynchronous_Control
Not_Enforced
LTC 1108
Enforcement_For_Max_Select_Alternatives
Not_Enforced
LTC 1109
Enforcement_For_Max_Task_Entries
Not_Enforced
LTC 1110
Enforcement_For_Max_Protected_Entries
Not_Enforced
LTC 1111
Enforcement_For_No_Local_Task_Declaration
Not_Enforced
LTC 1112
Enforcement_For_No_Multi_Entry_Protected
Not_Enforced
LTC 1113
Enforcement_For_No_Non_Boolean_Barriers
Not_Enforced
LTC 1114
Enforcement_For_No_Requeues
Not_Enforced
LTC 1115
Enforcement_For_No_Select_Statements
Not_Enforced
LTC 1116
Enforcement_For_No_Unchecked_Dealloc_Of_Tasks
Not_Enforced
LTC 1117
Enforcement_For_No_User_Defined_Task_Attributes
Not_Enforced
LTC 1201
Enforcement_For_No_Generic_Units
Not_Enforced
LTC 1202
Enforcement_For_Main_Library_Subprograms
Not_Enforced
LTC 1203
Enforcement_For_Spark_Private_Child_Visability
Not_Enforced
LTC 1204
Enforcement_For_Spark_Public_Child_Visability
Not_Enforced
LTC 1205
Enforcement_For_Package_Spec_Nesting
Not_Enforced
LTC 1206
Enforcement_For_Initialization_Of_Own_Variables
Not_Enforced
LTC 1207
Enforcement_For_Spark_Reserved_Words
Not_Enforced
LTC 1208
Enforcement_For_Real_Based_Literals
Not_Enforced
LTC 1209
Enforcement_For_No_Wide_Character
Not_Enforced
LTC 1210
Enforcement_For_No_Wide_String
Not_Enforced
LTC 1211
Enforcement_For_No_Anonymous_Types_Or_Subtypes
Not_Enforced
LTC 1212
Enforcement_For_No_Derived_Types
Not_Enforced
LTC 1213
Enforcement_For_No_Modular_Types
Not_Enforced
LTC 1214
Enforcement_For_No_Decimal_Types
Not_Enforced
LTC 1215
Enforcement_For_No_Type_Extensions
Not_Enforced
LTC 1216
Enforcement_For_No_Discriminant_Records
Not_Enforced
LTC 1217
Enforcement_For_No_Nonstatic_Constraints
Not_Enforced
LTC 1218
Enforcement_For_No_Null_Ranges
Not_Enforced
LTC 1219
Enforcement_For_No_Overloaded_Enum_Literals
Not_Enforced
LTC 1220
Enforcement_For_No_Character_Type_Declarations
Not_Enforced
LTC 1221
Enforcement_For_Spark_Predefined_Integer_Types
Not_Enforced
LTC 1222
Enforcement_For_Spark_Predefined_Real_Types
Not_Enforced
LTC 1223
Enforcement_For_No_Tagged_Types
Not_Enforced
LTC 1224
Enforcement_For_String_Subtype_Lower_Bound
Not_Enforced
LTC 1225
Enforcement_For_No_Array_Sliding_Or_Slices
Not_Enforced
LTC 1226
Enforcement_For_Consistent_Aggregate_Components
Not_Enforced
LTC 1227
Enforcement_For_Others_In_Record_Aggregates
Not_Enforced
LTC 1228
Enforcement_For_Qualified_Aggregates
Not_Enforced
LTC 1229
Enforcement_For_No_Operator_Declarations
Not_Enforced
LTC 1230
Enforcement_For_No_Prefix_Operators
Not_Enforced
LTC 1231
Enforcement_For_Spark_Array_Equality
Not_Enforced
LTC 1232
Enforcement_For_Type_Conversion_With_Out_Parameters
Not_Enforced
LTC 1233
Enforcement_For_No_Nonstatic_Expressions
Not_Enforced
LTC 1234
Enforcement_For_No_Block_Statements
Not_Enforced
LTC 1235
Enforcement_For_No_Labels
Not_Enforced
LTC 1236
Enforcement_For_Spark_Exit_Statement_Restrictions
Not_Enforced
LTC 1237
Enforcement_For_Spark_Return_Statement_Restrictions
Not_Enforced
LTC 1238
Enforcement_For_Subprogram_Overloading
Not_Enforced
LTC 1239
Enforcement_For_Consistent_Call_Parameters
Not_Enforced
LTC 1240
Enforcement_For_Spark_Subprogram_Spec_Restrictions
Not_Enforced
LTC 1241
Enforcement_For_Spark_Use_Type_Restrictions
Not_Enforced
LTC 1242
Enforcement_For_Spark_Renaming_Restrictions
Not_Enforced
LTC 1243
Enforcement_For_Spark_Predefined_Package_Restrictions
Not_Enforced
LTC 1244
Enforcement_For_Spark_Unqalified_References
Not_Enforced
Default LTC Enforcement

Little Tree Consulting's Metrics Library

The following form the initial metrics library for the Ada Analyzer. Although limited in its initial size, it is expected to grow over time. It is also expected that customers will add their own metrics to the library using the Ada Analyzer to automate collection and comparison of those metrics. The current metrics are divided into three categories:

Line Counting

Metrics in this category provide various forms of counting source lines of code (SLOC). Note that these metrics are text-based and dependent only on the image of the line, not its Ada semantics.

Subprogram Metrics

Metrics in this category measure the subprogram complexity.

Note: The implementation of metrics 205 and 206 was based on a paper titled "Structured Testing: A Testing Methodology Using the Cyclomatic Complexity Metric" by Arthur H. Watson and Thomas J. McCabe, NIST Special Publication 500-235.

CMVC Metrics

Metrics in this category measure statistics related to configuration management.

OO Metrics

Metrics in this category measure statistics related to Object Oriented programming.

Halstead Metrics

Metrics in this category calculate Halstead metric definitions. Note that the utility of Halstead metrics has been questioned given the movement of current programming practice away from operator/operand-oriented programming towards more object-oriented and decision logic programming. Halstead metrics are included for completeness and to support those projects who have customer requirements to generate Halstead metrics. Each metric is collected for each compilation unit and on a system-wide basis

Metric
Reference

Metric Label
Collection By
Table Name
Metric 101
Status_For_Sloc_Carriage_Returns
Compilation_Unit
Line Counting
Metric 102
Status_For_Sloc_Blank_Lines
Compilation_Unit
Line Counting
Metric 103
Status_For_Sloc_Comment_Lines
Compilation_Unit
Line Counting
Metric 104
Status_For_Sloc_Lines
Compilation_Unit
Line Counting
Metric 105
Status_For_Sloc_Semicolons
Compilation_Unit
Line Counting
Metric 201
Status_For_Execution_Paths
Subprogram_And_Task_Bodies
Subprogram Metrics
Metric 202
Status_For_McCabe_Complexity
Subprogram_And_Task_Bodies
Subprogram Metrics
Metric 203
Status_For_McCabe_-Complexity_Alternative1
Subprogram_And_Task_Bodies
Subprogram Metrics
Metric 204
Status_For_Executable_Statements
Subprogram_And_Task_Bodies
Subprogram Metrics
Metric 205
Status_For_Essential_Complexity
Subprogram_And_Task_Bodies
Subprogram Metrics
Metric 206
Status_For_Module_Design_-Complexity
Subprogram_And_Task_Bodies
Subprogram Metrics
Metric 301
Status_For_Unit_Modifications
Compilation_Unit
CMVC Metrics
Metric 401
Status_For_Number_Of_Methods
Class
OO Metrics
Metric 402
Status_For_Number_Of_-Attributes
Class
OO Metrics
Metric 403
Status_For_Depth_Of_Inheritance
Class
OO Metrics
Metric 404
Status_For_Class_Response
Class
OO Metrics
Metric 405
Status_For_Class_Coupling
Class
OO Metrics
Metric 406
Status_For_Class_Complexity
Class
OO Metrics
Metric 501
Status_For_Halstead_Distinct_Operators
Compilation_Unit
Halstead Metrics
Metric 502
Status_For_Halstead_Distinct_Operands
Compilation_Unit
Halstead Metrics
Metric 503
Status_For_Halstead_Total_Operators
Compilation_Unit
Halstead Metrics
Metric 504
Status_For_Halstead_Total_Operands
Compilation_Unit
Halstead Metrics
Metric 505
Status_For_Halstead_Program_Length
Compilation_Unit
Halstead Metrics
Metric 506
Status_For_Halstead_Program_Vocabulary
Compilation_Unit
Halstead Metrics
Metric 507
Status_For_Halstead_Volume
Compilation_Unit
Halstead Metrics
Metric 508
Status_For_Halstead_Difficulty
Compilation_Unit
Halstead Metrics
Metric 509
Status_For_Halstead_Effort
Compilation_Unit
Halstead Metrics
Default Status


Rational Software Corporation  http://www.rational.com
support@rational.com
techpubs@rational.com
Copyright © 1993-2000, Rational Software Corporation. All rights reserved.
TOC PREV NEXT INDEX DOC LIST MASTER INDEX DOC LIST MASTER INDEX