AdaTEST 95 Static Code Metrics capabilities can be used as standalone analysis, or integrated with AdaTEST 95 tests. They provide an automated objective measurement of code quality, maintainability and estimate of testing effort.
AdaTEST 95 Static Analysis makes it easier to:
What do AdaTEST 95 static metrics help me do?
CODE COMPLEXITY AND STRUCTURE
AdaTEST 95 produces over 100 static code metrics, on Ada 95 syntax (Ada Language Reference Manual) and industry standard metric sets. The selection of just the metrics desired is made simple through an analysis wizard and Static Analysis Rule Sets.
These can define not only the required static code metrics, but also checks on acceptable values for each metric to be integrated with AdaTEST 95 dynamic tests.
DIAGNOSE AND ENFORCE METRICS
Metrics are generated to .CSV files, List text files and presented in the HTML Results Viewer for comprehensive diagnosis.
The AdaTEST 95 HTML Results Overview presents a history of checks on enforcing values for static metrics for trend analysis.
Enforcement of static code metrics is fully automated through checks integrated into AdaTEST 95 test scripts, keeping dynamic and static testing completely synchronised.
AdaTEST 95 Static metrics are generated for all instrumented procedures, functions, protected subprograms/entries and tasks that have been executed. In addition, Metrics for package specifications and package bodies, in addition to procedure, function, and task bodies, are available for inspection in a list text file.
GENERATE REPORTS
In addition to the powerful diagnostics of code coverage results in the HTML Results Viewer and Overview, AdaTEST 95 generates safety standards certification ready ASCII text reports of compliance with coverage requirements.
Reports and certification evidence embed the integrated checks on the achievement of the required code coverage and static metric targets.
How does AdaTEST 95 static analysis work?
AdaTEST 95 uses instrumentation on a copy of the source code, and static metrics data is recorded in both CSV and HTML files for diagnosis, and certification ready ASCII text list files and AdaTEST dynamic test results files evidence.
Static analysis can be used integrated with AdaTEST 95 tests to check metric values within an acceptable range, and perform Control Flow and Data Flow analysis with path labels and dynamic assertions.
Analysis is made simpler by coverage Rule Sets, which automate all the code instrumentation, data reporting and required metric checking.
Which code metrics does AdaTEST 95 provide?
AdaTEST 95 generates over 100 metrics on Ada 95 code syntax as defined in the Ada 95 Reference Manual Annex P.
Static metrics are divided into three groups:
Counted and calculated metrics are presented as floating point values, informational metrics are presented as string values.
The full set of AdaTEST 95 static code metrics is listed below:
In addition to counts of Ada 95 syntax, the following industry standard metric sets are provided:
ABORT_STATEMENTS
ACCEPT_STATEMENTS
ACCESS_ATTRIBUTES
ACCESS_DISCRIMINANTS
ACCESS_TO_SUBPROGRAM_TYPES
ADA_CODE_LINES
ALIASED_OBJECT_DECLARATIONS
ALLOCATORS
ASSIGNMENT_STATEMENTS
ASYNCHRONOUS_SELECTS
BINARY_ADDING_OPERATORS
BLANK_LINES
BLOCK_DECLARATIVE_PARTS
BLOCK_STATEMENTS
BODY_STUBS
CASE_ALTERNATIVES
CASE_STATEMENTS
CLASS_WIDE_TYPES
CODE_STATEMENTS
COMMENT_LINES
COMMENTS
COMPILATION_UNITS
CONDITIONAL_ENTRY_CALLS
CONTROLLED_TYPES
DATA_ASSERTIONS
DECLARATIVE_STATEMENTS
DELAY_STATEMENTS
DERIVED_TYPE_DEFINITIONS
DYNAMIC_ASSERTIONS
FILE_CHECKSUM
FOR_LOOPS
GENERAL_ACCESS_TYPES
GENERIC_DECLARATIONS
GENERIC_INSTANTIATIONS
GENERIC_SPECIFICATIONS
GOTO_STATEMENTS
HALSTEAD_DIFFICULTY
HALSTEAD_EST_LEVEL_ABSTRACTION
HALSTEAD_ESTIMATED_ERRORS
HALSTEAD_EXPECTED_LENGTH
HALSTEAD_INTELLIGENCE_CONTENT
HALSTEAD_LANGUAGE_LEVEL
HALSTEAD_LENGTH
HALSTEAD_LEVEL_OF_ABSTRACTION
HALSTEAD_NUM_UNIQUE_OPERANDS
HALSTEAD_NUM_UNIQUE_OPERATORS
HALSTEAD_POTENTIAL_VOLUME
HALSTEAD_PROGRAM_EFFORT
HALSTEAD_PURITY_RATIO
HALSTEAD_TIME_ESTIMATE
HALSTEAD_TOTAL_NUM_OPERANDS
HALSTEAD_TOTAL_NUM_OPERATORS
HALSTEAD_VOCABULARY
HALSTEAD_VOLUME
HANSEN_CYCLOMATIC_NUM
HANSEN_OPERATOR_COUNT
HIGHEST_PRECEDENCE_OPERATORS
IF_STATEMENTS
IGNORE_ON_SWITCHES
INNER_USE_PACKAGE_CLAUSES
LINES_IN_SOURCE_FILE
LOGICAL_OPERATORS
LOOP_STATEMENTS
MAXIMUM_STATEMENT_NESTING
MCCABE
MEMBERSHIP_TESTS
MULTIPLYING_OPERATORS
MYERS_MCCABE_LOWER
MYERS_MCCABE_UPPER
OVERLOAD_COUNT
PACKAGE_BODIES
PACKAGE_SPECIFICATIONS
PARAMETERS
PRAGMAS
PROCEDURE_ENTRY_CALL_STMTS
PROTECTED_ENTRY_BODIES
PROTECTED_OBJECT_DEFINITIONS
PROTECTED_TYPE_DEFINITIONS
RAISE_STATEMENTS
RELATIONAL_OPERATORS
REPRESENTATION_CLAUSES
REQUEUE_STATEMENTS
REQUEUE_WITH_ABORTS
RETURN_STATEMENTS
SELECT_STATEMENTS
SELECTIVE_WAIT_ALTERNATIVES
SELECTIVE_WAITS
SHORT_CIRCUIT_CONTROL_FORMS
SUBPROGRAM_BODIES
SUBPROGRAM_SPECIFICATIONS
SUBUNITS
TAGGED_TYPES
TERMINATES
TEST_CODE_STMTS
TIMED_ENTRY_CALLS
TOTAL_LINES
TOTAL_UNITS_IN_SOURCE_FILE
TYPE_EXTENSIONS
UNARY_ADDING_OPERATORS
UNCHECKED_ACCESSES
UNCHECKED_CONVERSIONS
UNCHECKED_DEALLOCATIONS
UNPROCESSED_BEXES
UNREACHABLE_CODE
USE_PACKAGE_CLAUSES
USE_TYPE_CLAUSES
USER_STRING (user defined)
WHILE_LOOPS
WITH_CLAUSES
XOR_OPERATORS