Source Code Analysis

Source Code

Imagix 4D helps developers comprehend complex, legacy or open source C, C++ and Java source code. By using Imagix 4D to reverse engineer and analyze your software, you're able to speed your development, testing, reuse, and maintenance. Learn unfamiliar code. Eliminate bugs due to faulty understanding. Get new hires on board faster. Spend time engineering, not reading through code.

A comprehensive source code analysis tool, Imagix 4D enables you to rapidly check or systematically study your software on any level -- from its high level architecture to the details of its build, class and function dependencies. You can visually explore a wide range of aspects about your software - control structures, data usage, and inheritance. Study and thoroughly understand the impact of changes before you make them. All based on Imagix 4D's precise static analysis of your source code.

You're able to find and focus on the relevant portions of your source code through Imagix 4D's querying capabilities. Automated analysis, database lookups, and graphical querying all sift through the mountains of data inherent in your source code so you examine the structural and dependency info you're interested in. Quickly and accurately.

Visualization and dependency
analysis of source code

High Level View

Subsystem architecture reverse engineered from C++ source code
An extensive range of graphical view types, 15 in all, include a number of high level views. These provide a 'big picture' perspective and analysis of your software's inherent architecture - its components, dependencies and packaging.

Some of these high level views use abstraction to represent information at a less granular level than it actually occurs in the source code. For example, function calls can be summarized at the class level, so that ClassA::FunctionA calling ClassB::FunctionB can be represented as ClassA calling ClassB.
High level displays include: Abstraction mechanisms include:

Drill Down

Analysis of software control flow
You can begin your source code analysis with less complex, high level views and then show more and more detail with a few clicks. Drilling down through increasingly granular views provides more detailed understanding of particular portions of the software.

You're able to find and analyze the control flow, data usage and type dependencies that underlie your software. And through Imagix 4D's interactive graphs, you're able to follow specific implementations and trace their impacts on other parts of your code.
Mid level displays include:
  • Function calls
  • Variable sets and reads
  • Macro usage by functions
  • Class use
  • Datatype hierarchy
Low level displays include:
  • Sequence Diagram showing call sequence and conditionality of function calls
  • Sequence Diagram with variables
  • Flow Chart showing intra-function program logic

Dependency Analysis

Visualization through automated source code analysis
What makes Imagix 4D's software visualization especially powerful is the ability to focus the displays on the information of interest. With database lookups, graphical querying and drill down capabilities, you're able to identify and explore the relevant portions of your source code.

And with the Analyzer feature, you're able to direct Imagix 4D to do much of the analysis for you. You can quickly examine important interfaces and automatically track down critical dependencies.
Analyzer queries include:
  • Paths between two functions
  • Paths for function setting or reading variable
  • Common descendants or ancestors of two functions
  • Functions similar to function
  • Include paths between two files
  • File or class function interfaces
  • File or class variable interfaces
  • Internal calling hierarchy of subsystem, file or class
  • Violations of layering rules

Data Flow Analysis

Source code analysis of variable data flow
Complementing Imagix 4D's extensive set of displays for control flow analysis, the Data Flows present information about the statements relating to the current value of a variable. You're able to examine all of the initializations, sets and reads, of any variable, that contribute to a variable's value at a specific line. Or follow the downstream impacts of that value.

Generated by Imagix 4D's dataflow analysis engine, the Data Flows track variable dependencies across function boundaries and through parameter passing and return statements.
Data Flow displays:
  • Statement Flow graphically displaying hierarchy of all statements
  • Statement List listing all statements, including full line of source
  • Variable Dependencies graphically showing hierarchy of variables and parameters involved
  • Variable Table organizing individual statements by assigned variable


Process of software reverse engineering
Underneath Imagix 4D's powerful software visualization and analysis functionality is a precise, comprehensive database, generated through a full semantic analysis of your source code.

This precision is achieved in part through the use of compiler configuration files. These enable Imagix 4D's source analyzer to parse your code the same way your specific compiler does, supporting the same language extensions and keywords, and using the same system header files.
Full language support includes:
  • Conditional compilation directives
  • Class templates and namespaces
  • Microsoft .NET extensions
  • Calls via Java reflection API
  • Function pointers
  • Macro substitutions
Configuration files support:
  • GNU gcc compiler variants
  • Other native compilers
  • Embedded cross-compilers
  • Multitasking systems