Lattix Architecture Analysis for C/C++ provides an architecture solution that helps software development teams understand, define (refactor) and control their codebases. It enables you to analyze the architecture of C/C++ applications in terms of system elements and their interrelationships.

Architecture Analysis for C/C++ using Dependency Structure Matrix (DSM)

Lattix provides you a number of options for parsing source code. You can use the Clang parser which is incorporated into Lattix. You can also use the output of Understand for C++ and Klocwork.

  • Clang: The Clang parser is incorporated into Lattix. You don’t need any additional tools. It is a high quality parser that is a core part of Apple’s development environment and supports C/C++/Objective-C. For input user can specify the source code directories along with compiler options, a visual studio solution or project file, or a build specification file.
  • Klocwork: Klocwork does static analysis; it has an excellent parser and understands the build process. If you already have Klocwork installed or are considering its use because of its excellent static analysis for bug detection, it is great choice to use with Lattix. Together, Lattix and Klocwork are an excellent solution for bug detection and architecture analysis.
  • Understand for C++: Understand for C++ has a very forgiving parser and will do an excellent analysis even in cases where the program does not compile. Understand for C++ also provides an option for strict analysis that uses Clang. You must also specify any macros that are specified through the command line of the C++ compiler.

Additional Capabilities for C/C++ Architecture Analysis

There are some useful scripts available that can be applied once a project has been created for additional visibility:

  • Combine Source and Header files: This script will go through your project and create a new subsystem for source and header files with the same name. This new subsystem is located in the same place where the subsystem for the source file is located. This capability is useful when you want to think of source files and header files as a single abstraction. For instance, you may have a source file called test.c and an associated header file called test.h. The script will group these files together into a single subsystem called test.
  • Generate Class View: This script will create a new project (using the LDI module) to create a pure class based view of the project. All atoms and dependencies which are not class based are eliminated. All you are left with are classes and dependencies. The directory structure is preserved allows you to extract that architecture from a pure object oriented perspective.

Watch our video on how to create a C/C++ project in Lattix.