Posted by & filed under Build Notes.

(Build b777) – 24 Apr 2015


  • Fixed bug where the essential complexity was incorrect for some routines with goto statements inside try-catch-finally statements. Also, in the control flow graph for these routines, duplicate deferred-goto links are no longer displayed.


  • Made changes to add dimension text to variable type text.
  • Fixed a bug where an include inside an interface block caused a syntax error.


  • Added an application-wide color scheme panel under tools->options->user interface->application styles. Changed windows such as find in files results and the analysis log to follow the application style rather than have specific settings. Users can match the application styles to current editor settings.
  • - hiding the vertical headers in the manage architectures tables since they don’t contain any information and appear bright against dark backgrounds.
    - changing explore entities initial window to be the alternate row color instead of yellow so that it doesn’t clash with dark backgrounds.
    - set row indentation for tree views and alternating row colors for other views through the style sheet so that it applies to everything.

  • Change C++ Class Names editor style to include all tag type names (struct, union, and enum).
  • Added a Previewer window (View->Previewer) that is basically an editor window that can be synced. The window can also be set to be used by default when going to a reference, and has it’s own history. Also, made view information (hotkey or menu click) trigger a sync.


  • Added a right click menu option to show legend for graphs with custom styling (architecture dependency graphs, cluster call graphs, and relationship graphs).
  • Improve graph search to better handle newlines caused by wrapped text. Also, improve graph search highlighting for regular expression searches and cluster control flow graphs to highlight the correct number of characters in the correct location.
  • Made cluster control flow graph node backgrounds and default node foregrounds follow editor style when styled labels is on.
  • Added an include virtual edges option for call/callby relationship graphs. Unlike cluster call graphs, relationship graphs only show virtual edges as a different color if set to do so under tools->options->graphs.


  • Update to Floating license server to use older maintenance licenses before newer ones.
  • Updated the “Thank you for your purchase” message to be less confusing when displaying maintenance expiration days.


  • Fix Visio format in script.


  • Enabled option to ignore directory names in include directives.

Posted by & filed under Uncategorized.

(Build b776) – 17 Apr 2015


  • Fixed parser crash in essential complexity computations for extremely large functions.


  • Fixed bug where declaration of an interface module procedure without the ‘module’ keyword caused a syntax error.
  • Fixed bug where some uses of array constructors using square brackets to enclose values caused syntax errors.
  • Added support for Fortran 2008 ‘error stop’ statement.
  • Fixed bug where declarations of ‘class(*)’ dummy arguments caused syntax errors.


  • Moved graph layout into the background for graphviz graphs generated in understand GUI (graphs generated from the API, or as part of a visio xml export are not affected). The graph window will appear and the progress bar in the upper right corner indicates that the layout is still running. The graphwindow can be closed to cancel the graph and the graph can be changed (nodes options changed / undo) which will restart the layout with the new parameters. Restored the message that informs users when the graph failed to layout. Ensure the progress bar disappears when the graph completes the layout or encounters an error during layout.


  • Fix for an issue when using almfree.exe on Windows server 2008.


  • Restore previously removed Extends Tree report; make report off by default for all new projects.


  • Fixed issues with HTML Reports Index by method name.


  • Fix bug importing projects from MSVC 2010 and later that contain multiple global preprocessor definition lines.


  • Added support for ‘use const’ and ‘use function’ statements.

Posted by & filed under Announcements, Release.

We will be releasing Understand 4.0 with build 772. An updated license is required, which is free as long as your maintenance is up-to-date. To check the status of your maintenance or request the updated license, please email us at

We like to add new features to Understand as soon as they are finished, that way you don’t have to wait. So, as with our previous releases, Understand 4.0 is a collection of new and existing features. Below is a list of the features that have been added since Understand 3.1 was released, or that will be included in 4.0:

  • UML Sequence Diagrams
  • Eclipse Plugin
  • Refactoring Tools
  • Editor Themes
    • The Understand Theme is now selected by default if you haven’t modified the styles
    • Entities are much more visible in the default theme
  • Control Flow Cluster Graphs
  • Relationship Graphs
  • Cluster Graphs Customization Options
    • These options are accessible via the Tools Menu under Options->Graphs->Cluster Graph Styles
  • MISRA 2012  Support in Codecheck
  • Various metrics added for supported languages
  • Java API
    • A minimalistic but functional Java API was added while creating the Eclipse plugin
    • The documentation is in the install folder under doc\manuals\java
  • Java 8 Support
  • Entity Locator Overhaul 
  • Editor Macro Support
  • C++11 and C++13 Support
  • Visual Studio 2012/2013 C++ and C# project files
  • Licensing Changes
    • All licenses now show the Maintenance Expiration Date
    • Single Developer Licenses are now tied to a specific email address


Posted by & filed under Announcements.

Your code has tons of important relationships in it and we want to help you find find them. With Understand 4.0 we’ve added several new graphs that let you track the relationship between two specified entities. For example if are only interested in how two functions interact with each other in a call or callby tree you can now see it. Right click on the first entity and select “Graphical Views->Calls Relationship” or Called-By Relationship. You will then be prompted to specify the second entity by clicking on that entity name in any open Understand window. The final graph shows only the call trees between those two entities.

Here is the call tree graph for the function _docall. If I am only interested in the relationship between _docall and the highlighted function “fatal” there is a lot of extra information in my way.




With the new graph I can get the desired information in a much more condensed manner:



There are also options to highlight, aggregate and hide nodes. For instance I can aggregate the functions by file for an even more informative view:

CallsRelationshipGraph-_docall-fatal -file


These new relationship graphs are available for calls, includes, overrides and base/derive relationships. What entities will you explore with this?

Posted by & filed under Announcements, Documentation.

Build 771 adds the new UML Sequence Diagram graph.

A Sequence Diagram is an interaction diagram that shows how processes operate with one another and what is their order. A sequence diagram shows object interactions arranged in time sequence. It depicts the objects and classes involved in the scenario and the sequence of messages exchanged between the objects needed to carry out the functionality of the scenario.

A sequence diagram shows, as parallel vertical lines (lifelines), different processes or objects that live simultaneously, and, as horizontal arrows, the messages exchanged between them, in the order in which they occur. This allows the specification of simple runtime scenarios in a graphical manner.


In Understand this graph is available for functions and methods that call member methods.


Posted by & filed under Announcements, Documentation.

A new version of the control flow graph has been added that allows much more interactivity. You can access this graph by right clicking on a function or method and selecting Graphical Views->Cluster Control Flow. The new graph lets you collapse and expand subsections of the graph by double clicking in the bounding box of that area. You can also hide parts of the graph that you are not interested in.

Here is the same function with the cluster control flow graph on the right, and the regular control flow on the left.

control flow graphs


Note how parts of the graph are clustered together, double clicking in that area collapses it:



This extra interactivity gives you the ability to work with much larger graphs while still only focusing on the areas that are important to you

Posted by & filed under Announcements, Documentation.

Understand now has a selection of predefined themes that let you quickly change the look and feel of the editor. These themes can be accessed under Tools->Options->Editor->Styles. The Predefined: section at the top of the page lets you select the theme you want, and you can customize the theme to your liking.

predefined theme

Here are what several of the themes look like:

Understand Theme

Understand Theme

Terminal Theme

Terminal Theme

Silver Theme

Silver Theme

Onyx Theme

Onyx Theme

Classic Theme

Classic Theme

Aqua Theme

Aqua Theme


Posted by & filed under Tips.

We have recently added a great new feature to Understand to make any of your Refactoring needs easier. To change the name of a function, method, class, etc., right click on the entity name and select ‘Refactor->Rename’.






Type in the new name that you want to change it to and either select ‘Apply Changes’ or select ‘Preview Changes’ to see everywhere that the name will be selected.



This ‘Preview’ shows what the file looks like currently and what it will look like with the changes. Notice at the bottom it also shows all the locations where the changes will be made.




There are several other options in this Refactoring Tool including an ‘Extract’ option.


Posted by & filed under Tips.

Sometimes a different type of search that provides more information can be a lot more useful than just a simple search.

Take a look at the ‘Entity Locator’, available by going to ‘View->Entity Locator’.


The Entity Locator consists of sortable columns of information. Additional columns can be added by clicking on the plus icon in the top right of the Locator, allowing for a custom view.


Each column also has quite a few options available by clicking the dimple icon or right clicking on the column header. Several options are shown in the image below, including the ability to ‘Freeze Columns’ (similar to the ability in spreadsheet applications).


In the image below, the first two columns are frozen and the other columns can be scrolled horizontally while still seeing the frozen columns.


Let us know if you have any questions and enjoy the Entity Locator.

Posted by & filed under Tips.

Sometimes you ‘inherit’ code that may not be as “pretty” as you would like it, but taking the time to fix these little things could be very time consuming. Understand helps with a ‘reindent’ option and a ‘sort’ option.

messyFunctionHere you can see that these lines are not lined up like most of us would like.

The quick fix is to highlight the text and select ‘Reindent Selection’.



The results are quick with a correctly indented piece of code.   goodFunction



Sometimes we just want a little organization and want things to be alphabetized. Highlight the text, right click and select ‘Sort Selection’ in the context menu.



The result is an alphabetized list that can make the pickiest person happy.

notSorted     sorted