Software metrics
and quality checks
for C and C++

Quality Checks

Imagix Corp

  

Imagix 4D generates a series of analytical verifications and quality checks about your source code to help you to identify problems that could occur in the run-time execution of your software, as well as to increase its overall reliability, portability and maintainability.

These verifications leverage the tool's underlying database, which contains the results of a full semantic analysis of your source code, down to the logic of individual expressions. Imagix 4D's data flow analysis engine generates a series of verifications, looking for potential problems in areas such as data access, concurrency control, and cyclical data updates. You're able to review possible conflicts in real-time embedded and multi-tasking, multi-threaded systems.

Complementing these specific analyses are source checks that you can use to find exceptions to generally agreed upon design and coding standards.

Having this functionality integrated with the reverse engineering aspects of Imagix 4D improves your efficiency in both the quality analysis and program understanding tasks. From the quality check reports, you can drill right down into the specific source code where a problem is occuring, to understand the causes and consider the dependencies involved with making improvements.


Home
About Imagix
Products
Overview
Visualization
UML Diagrams
Control Flow
Metrics
Quality Checks
HTML Docs
View Sample
Support
Downloads
Related Sites

metrics tool Data Flow Checks -- The data flow checks are series of analytical verifications of variable usage, task interaction, and interrupt protection. Applicable to real-time embedded and multi-tasking systems, these verifications identify potential problems through data flow analysis of the source code. Previously, you could have only found such problems by debugging unexpected runtime behavior or by conducting very detailed, lengthy manual code reviews.

Among the conditions checked for are unused variables, uninitialized variables and useless assignments. Other checks are specific to task-based systems; they verify aspects of reentrant functions, critical regions and cyclical data updates. The issues which they report may be symptoms of underlying problems in design, logic or coding.

The reports also analyze inter-task behavior of multi-threaded or multi-tasking systems. Checks include variable flow between tasks, event calls in tasks and event transition between tasks.

metrics tool Task Interactions -- As an example, one of the analytical verifications identifies global or static variables which are set from within more than one task. The verification further checks whether such variable assignments occur within critical regions protected from interrupts or by semaphores. Since neither tasks nor critical regions are explicitly defined in C, C++ or Java source code, you're able to specify definitions for your own system.

The verification examines the full data flow of each task, tracking data assignments across function boundaries through global variables, pointer objects, parameter passing and calls through function pointers. You're able to see variables which are set in multiple tasks, along with information about where the specific assignments occur, and whether those assignments occur within critical regions.

As these reports are completely integrated with the rest of Imagix 4D's functionality, you can then use Imagix 4D's visualization features to further examine the issue. You can examine the use of the variables in the tasks, and analyze how to modify your software to eliminate concurrency problems.

source check menu Source Checks -- For quality analysis purposes, Imagix 4D complements the analysis-specific data flow checks with a series of more than 20 source level checks. These source checks point out exceptions to generally agreed upon design and coding practices. Examples include unused static variables, switch statements without default cases, and virtual function calls from constructor functions.

These quality checks are presented through a series of reports. Each report provides a listing of all the exceptions to a particular source check, across all the files in the project. Reports are also available which list all the exceptions to all of the source checks, for one specific file.

In addition, quality check exceptions can be displayed in the File Editors. Underlining indicates where a quality check occurs, so you are made aware of potential problem areas while you are working with the source code itself.