Ada 95 is a coding standard you can enforce automatically with CodeCheck, Understand's static-analysis engine — in the GUI, from the command line, or in CI.
Ada 95
The purpose of this guide is to help computer professionals produce better Ada programs by identifying a set of stylistic guidelines that will directly impact the quality of their Ada programs. This style guide is not intended to replace the Ada Reference Manual, or the Rationale, or to serve as a tutorial for the Ada programming language.Checks
| Check ID | Check Name | Supported |
|---|---|---|
| ADA95_2.1.1 | 2.1.1 Horizontal Spacing | Yes |
| ADA95_2.1.2 | 2.1.2 Indentation | Yes |
| ADA95_2.1.3 | 2.1.3 Alignment of Operators | No |
| ADA95_2.1.4 | 2.1.4 Alignment of Declarations | No |
| ADA95_2.1.5 | 2.1.5 Parameter Alignment | Yes |
| ADA95_2.1.6 | 2.1.6 Blank Lines | No |
| ADA95_2.1.7 | 2.1.7 Pagination | Yes |
| ADA95_2.1.8 | 2.1.8 Number of Statements Per Line | Yes |
| ADA95_2.1.9 | 2.1.9 Source Code Line Length | Yes |
| ADA95_3.1.1 | 3.1.1 Use of Underscores | Yes |
| ADA95_3.1.2 | 3.1.2 Numbers | Yes |
| ADA95_3.1.3 | 3.1.3 Capitalization | Yes |
| ADA95_3.1.4 | 3.1.4 Abbreviations | No |
| ADA95_3.2.1 | 3.2.1 Names | Yes |
| ADA95_3.2.2 | 3.2.2 Subtype Names | Yes |
| ADA95_3.2.3 | 3.2.3 Object Names | No |
| ADA95_3.2.4 | 3.2.4 Naming of Tagged Types and Associated Packages | No |
| ADA95_3.2.5 | 3.2.5 Program Unit Names | Yes |
| ADA95_3.2.6 | 3.2.6 Constants and Named Numbers | Yes |
| ADA95_3.2.7 | 3.2.7 Exceptions | No |
| ADA95_3.2.8 | 3.2.8 Constructors | No |
| ADA95_3.3.1 | 3.3.1 General Comments | No |
| ADA95_3.3.2 | 3.3.2 File Headers | Yes |
| ADA95_3.3.3 | 3.3.3 Program Unit Specification Headers | Yes |
| ADA95_3.3.4 | 3.3.4 Program Unit Body Headers | Yes |
| ADA95_3.3.5 | 3.3.5 Data Comments | No |
| ADA95_3.3.6 | 3.3.6 Statement Comments | No |
| ADA95_3.3.7 | 3.3.7 Marker Comments | Yes |
| ADA95_3.4.1 | 3.4.1 Declaring Types | No |
| ADA95_3.4.2 | 3.4.2 Enumeration Types | No |
| ADA95_4.1.1 | 4.1.1 Separate Compilation Capabilities | Yes |
| ADA95_4.1.2 | 4.1.2 Configuration Pragmas | Yes |
| ADA95_4.1.3 | 4.1.3 Subprograms | No |
| ADA95_4.1.4 | 4.1.4 Functions | No |
| ADA95_4.1.5 | 4.1.5 Packages | No |
| ADA95_4.1.6 | 4.1.6 Child Library Units | No |
| ADA95_4.1.7 | 4.1.7 Cohesion | No |
| ADA95_4.1.8 | 4.1.8 Data Coupling | Yes |
| ADA95_4.1.9 | 4.1.9 Tasks | No |
| ADA95_4.1.10 | 4.1.10 Protected Types | No |
| ADA95_4.2.1 | 4.2.1 Minimization of Interfaces | No |
| ADA95_4.2.2 | 4.2.2 Nested Packages | No |
| ADA95_4.2.3 | 4.2.3 Restricting Visibility | Yes |
| ADA95_4.2.4 | 4.2.4 Hiding Tasks | No |
| ADA95_4.3.1 | 4.3.1 Using Exceptions to Help Define an Abstraction | Yes |
| ADA95_5.1.1 | 5.1.1 Loop Names | Yes |
| ADA95_5.1.2 | 5.1.2 Block Names | Yes |
| ADA95_5.1.3 | 5.1.3 Exit Statements | Yes |
| ADA95_5.1.4 | 5.1.4 Naming End Statements | Yes |
| ADA95_5.2.1 | 5.2.1 Formal Parameters | No |
| ADA95_5.2.2 | 5.2.2 Named Association | Yes |
| ADA95_5.2.3 | 5.2.3 Default Parameters | Yes |
| ADA95_5.2.4 | 5.2.4 Mode Indication | Yes |
| ADA95_5.3.1 | 5.3.1 Derived Types and Subtypes | Yes |
| ADA95_5.3.2 | 5.3.2 Anonymous Types | Yes |
| ADA95_5.3.3 | 5.3.3 Private Types | Yes |
| ADA95_5.3.4 | 5.3.4 Subprogram Access Types | No |
| ADA95_5.4.1 | 5.4.1 Discriminated Records | Yes |
| ADA95_5.4.2 | 5.4.2 Heterogeneous Related Data | No |
| ADA95_5.4.3 | 5.4.3 Heterogeneous Polymorphic Data | No |
| ADA95_5.4.4 | 5.4.4 Nested Records | No |
| ADA95_5.4.5 | 5.4.5 Dynamic Data | Yes |
| ADA95_5.4.6 | 5.4.6 Aliased Objects | Yes |
| ADA95_5.4.7 | 5.4.7 Access Discriminants | No |
| ADA95_5.4.8 | 5.4.8 Modular Types | No |
| ADA95_5.5.1 | 5.5.1 Range Values | Yes |
| ADA95_5.5.2 | 5.5.2 Array Attributes | No |
| ADA95_5.5.3 | 5.5.3 Parenthetical Expressions | No |
| ADA95_5.5.4 | 5.5.4 Positive Forms of Logic | No |
| ADA95_5.5.5 | 5.5.5 Short Circuit Forms of the Logical Operators | No |
| ADA95_5.5.6 | 5.5.6 Accuracy of Operations With Real Operands | Yes |
| ADA95_5.6.1 | 5.6.1 Nesting | Yes |
| ADA95_5.6.2 | 5.6.2 Slices | No |
| ADA95_5.6.3 | 5.6.3 Case Statements | Yes |
| ADA95_5.6.4 | 5.6.4 Loops | Yes |
| ADA95_5.6.5 | 5.6.5 Exit Statements | Yes |
| ADA95_5.6.6 | 5.6.6 Recursion and Iteration Bounds | No |
| ADA95_5.6.7 | 5.6.7 Goto Statements | Yes |
| ADA95_5.6.8 | 5.6.8 Return Statements | Yes |
| ADA95_5.6.9 | 5.6.9 Blocks | No |
| ADA95_5.6.10 | 5.6.10 Aggregates | No |