Blog

Latest Build – 660

January 21st, 2013

Latest Changes:

(Build b660) – 19 Apr 2013

 

DEPENDENCY BROWSER

  • Fixed an issue with non global variable dependencies in php files.

GENERAL

  • Remember printer page settings.
  • Fixed issue adding excluded files to project from project browser.
  • Fixed performance issues related to identifying the language (C/C++/ObjC/ObjC++) of header files (.h) in the editor.

PARSER

  • For C/C++, Added option to prompt for missing include files from the strict analyzer.
  • Fixed regressions in creating and opening databases with localized names.
  • For Ada, fixed a possible crash in parsing.

REPORTS

  • Fixed regression in saving the modified time of files with localized names.

SEARCH

  • Entity Locator, Fixed a crash when sorting on "Declared In".

      Build Notes

      Grab it at www.getunderstand.com

      API Tutorials

      April 24th, 2013

      Diving into the API documentation can be a little overwhelming, so here is a collection of tutorials to get you started.

      Batch Graph Generator

      March 7th, 2013

      The Understand APIs provide a lot of options for automating tedious tasks. I wrote an Interactive Report plugin to automate generating different Understand graphs. For example, this is useful if you need to save the control flow graphs of all functions in a project, or document the Declaration graphs for all classes.

      The plugin also generates an html file to quickly navigate the generated graphs:

      image

      The options dialog lets you pick which graph you want to generate, what format you want the files saved in, and where to save them. You can also specify advanced options that correspond to the options available on the graphs right click menu in the GUI

      image

      You can grab the Batch Graph Generator in the Interactive Reports section of our GUI Plugins Page. You’ll also find installation instructions there. Enjoy!

      Announcing Understand 3.1

      January 3rd, 2013

      With build 642 we’ve added an awesome new feature called Background Parse. It is designed to let you get right to work on your project as soon as Understand opens, instead of needing to wait for the parse. Right away you’ll have access to the Project Browser and Editor windows, and as soon as the parse is finished, everything else will be available.

      Other features added since the release of Understand 3.0:

      Added build system monitoring with buildspy
      Added support for Windows 8
      Improved project building capability
      Improved Visio Export
      Added ability to annotate code

      Creating Accurate C/C++ Projects

      October 30th, 2012

      Last year I posted about Improving Project Accuracy for C/C++ projects. Since then, we have released several new features that make it easier to get accurate project definitions.

      Why do I care?

      The more information Understand has about include paths and macro configuration, the more closely your Understand project will match your compiled code. In most cases, Understand does a great job of parsing the code and figuring out what goes where, but sometimes there are things you don’t expect in your project.

      Some symptoms the project configuration may need to be improved:

      1. Chunks of inactive (pink) code that should be getting parsed but are not:

      image

      2. The same entity shows up multiple times, with some of those definitions unresolved(gray)

      imageimage

      3. Missing entities in graphs

      image

      Strict or Fuzzy Parsing

      image

      Understand now let’s you chose between two different types of parsing when creating C/C++ projects. The fuzzy parse is not as accurate but is great if the code doesn’t compile or for making an initial pass of the project with Understand. The strict parser requires that the include paths and macros be setup correctly, as outlined below, but in return will provide a very accurate parse. Objective-C and Objective-C++ both require the strict parser. Also if your project makes heavy use of C++ or Overloaded functions you will want to use the Strict Parser.

      image

      Choose Compiler Options

      It’s important to double check the Compiler Options and make sure they are set correctly. By configuring the right Compiler details, many Macros, Pragmas and Include Paths are automatically added to the project and increase the accuracy. These settings are accessed under Project->Configure Project->C++ or C++(Strict)

      image

      Automatically Set Includes and Macros

      Depending on your build system, Understand may be able to extrapolate the Include and Macro information automatically.


      Visual Studio

      If you use Visual Studio, you can specify the Visual Studio solution or project files directly and Understand will gather all the information from them.  Those files can be specified during the Project Creation wizard or in Project->Configure Project->Visual Studio.

      GCC/G++

      If your project builds with GCC or G++, you can use the new Buildspy feature to hook into the build system and gather the correct data for the Understand project.  More details on configuring Buildspy here, or there is a video here to get you started.

      CMake

      If your team uses the cross-platform build system, CMake, follow the directions here to create an Understand project as it compiles.

      Manually Setting Includes and Macros

      If your project doesn’t support any of the above options, you can manually configure the Includes and Macros for the project. We’ve added a couple of new tools to identify the missing bits and make this process more intuitive.

      Missing Includes

      Missing include directories can be added in Project->Configure Project->C++->Includes. The new "Search" button opens a dialog that let’s you quickly identify where the missing search files are and add those directories to the include paths for your project.

      image

      Missing Macros

      Similarly, Missing Macros can be added via Project->Configure Project->C++->Macros.  The new "Undefined Macros" button opens a dialog that will let you quickly identify macros that may be missing from the project and you can specify their definitions.

      image

      Overrides

      In some cases, individual files or directories have their own macros and include paths that are different from other parts of the project. These can be specified by going to the file or folder in question in Project->Configure Project->Files. Right click on it, and select Configure override settings. From that dialog you can add the specifics.

      image

      Conclusion

      Understand does a great job of parsing projects "out of the box" but if the project is more complex, there are a lot of options for adding more detail to the project configuration and ending up with a perfect analysis.

      Windows 8 Fully Supported

      October 29th, 2012

      For those that like to live on the bleeding edge, we have tested Understand 3.0 with Windows 8 and they are fully compatible. You can grab the latest build of Understand here.

      Buildspy – For gcc/g++ Users

      July 20th, 2012

      We have added a new feature to this weekend’s build (623) of Understand called Buildspy that allows gcc/g++ users to create an Understand project during the build. Buildspy picks up files, includes, and macros from the compiler so you don’t have to enter them manually. This can save time and improve project accuracy.

      To use Buildspy, you first need to change your compiler from gcc/g++ to gccwrapper/g++wrapper in your makefile or build system. Alternatively, it is possible to override these settings from the command line without having to touch the Makefile using the following command:

      buildspy –db example.udb –cmd “make <additional_Make_Options>”

      You may also need to add the /SciTools/bin/linux32/buildspy directory to your path.Then, starting with a clean build, run:

      buildspy –db path/name.udb –cmd <command to compile project>

      For example:

      image

      Or, to override the makefile settings:

      buildspy

      This allows Buildspy to receive information from gccwrapper/g++wrapper to build a complete project. The wrappers will then call the corresponding compiler. To change the compiler edit the configuration file located at $HOME/.config/SciTools on Linux systems and $HOME/Library/Preferences on Mac.

      image

      The wrappers will work with any compiler that has gcc-like syntax. To finish, simply open the project in Understand and Analyze All. Those tedious includes and macros are now set.

      Cygwin/Windows Users

      We have added support for Buildspy on Windows using Cygwin as of build 633. However, when the buildspy command results in this error:

       gcc – Process failed to start: Access is denied.

      extra setup is required.  Cygwin uses a symlink to access the gcc executable and the actual name of the executable is required in the configuration file.  Trace the symlink until the executable is found in order to get the actual name.  In my case, the executable was named gcc-3.

      gccSymLink

      On Windows the configuration file is located in C:\Users\<USERNAME>\AppData\Roaming\SciTools and is called Buildspy.ini.  Open the Buildspy.ini file and change the compiler name appropriately. 

      buildpyINI

      Once this is done, Buildspy should work as expected.

       

      Any feedback on this new feature is welcome and appreciated.

      New Image/Visio Export Options

      July 11th, 2012

      We are happy to announce support for directly exporting graphs to a Visio compatible file.image

      In the past we have used the Visio API to export Understand’s graphs to Microsoft Visio. Understand would attempt to launch Visio and use the API to interactively draw the graph in Visio. There were several problems with this approach, the nodes and arrows of the graphs were not adequately connected, and in some cases the API would refuse to launch Visio. Of course this approach also required that Visio itself be installed on the same system as Understand. 

      Some graphs also have an option to export to the graphviz .dot format. This option is only available to newer graphs that are generated using the graphviz engine in Understand. Some older graphs use a different layout engine so that option is not available for them.

      Annotations

      June 28th, 2012

      We have added a new feature to Understand called Annotations. Annotations give the user the option to add comments or notes to code without changing the source code directly.

      annotation

      These comments can be displayed inline, or can be turned off to only be seen in hover text so they don’t disrupt the normal flow of the code when you don’t want to see them.  Each annotation can be “tagged” with key value pairs which can be useful for organizing data using certain keywords, differentiating between authors, and any other identifiers you may want to use.  You can search using our Annotations Search GUI for quick access to exactly what you are looking for.

       

      annotation1

      Annotations are saved in a SQLite database file which can also be modified and searched directly if desired.

      Annotations are “linked” to entities in Understand and can be added quickly by right clicking on the entity, selecting ‘Add/Edit Annotations’, or they can be added from the top level menu. 

      annotation2

       

      So, what happens to the annotation if the entity that it was linked to is deleted?  It is still there, it just doesn’t “belong” anywhere so it won’t show up in the in-line annotations.  These orphan annotations can be seen, and linked again to another entity in the ‘Manage Annotations’ top level menu.

      This new feature is available to use in Understand build 618. We didn’t want to wait for the documentation to be completed before we made Annotations available so if you have any questions, please email us at support@scitools.com.  We expect the documentation to be available in the next month or so.  Any feedback on this new feature is appreciated.

      Understand 3.0

      April 30th, 2012

      We are excited to announce the release of Understand 3.0 (build 611 and later). 

      We don’t like to make you wait for new features, so many of these features were already added in beta form and you may be familiar with some of them. There is an updated manual covering all of these new features, and several new floating licensing options are also available.  The upgrade to 3.0 is free as long as your maintenance is up to date and Understand 2.5 and 2.6 Licenses will also work with Understand 3.0.  Grab Understand 3.0 here

      Features Added Since Understand 2.6 Release

      New Floating Licensing Options

      Node-Locked Floating License

      A node-locked floating license is designed for a single machine that many users will be accessing, such as in a lab or a secure environment.  It is similar in concept to a Standard Floating License but no license server is needed, and it will only work on the one machine.

      USB-Dongle Floating License

      This license is ideal when the license needs to be shared between different people on different networks, or if there is a lot of traveling involved. The license is mailed to you on a USB drive. As long as that drive is attached to the computer, Understand will work. The license dongle can be shared between users as needed.

      Dongle licenses expire after two years and will need to be replaced. There is an additional fee for new and replacement dongle licenses to offset the setup and shipping costs.