Blog

Archive for the ‘Tips’ Category

C++ Template and Overload Support (Beta)

Wednesday, October 12th, 2011

screenshot.15

Many users have asked us in the past if Understand could have better support for Templates and Overloaded functions. We are excited to announce that this is now a reality. Our engineers have worked hard to add a completely new C++ parser to Understand, which is available for Beta testing in build 586.

Our current C++ parser was written with the goal of being able to use fuzzy logic to handle incomplete, non-compiling code gracefully and as accurately as possible. It does a great job at that and will continue to be an important part of our toolset. Unfortunately that same feature caused severe difficulties in parsing templates and recognizing overloaded functions.  The new parser is more strict than the old parser and requires a more accurate project definition. If you plan on using it, please follow the instructions from this post to ensure your project is as correct as possible:  Improving Project Accuracy (C/C++)

To access the new parser, just check the new checkbox on the Languages screen when creating a new project or in the Project Configuration dialog.

We welcome and appreciate your feedback and comments on this new parser – please send it to us at support@scitools.com

New Key Binding Options

Wednesday, October 12th, 2011

We’ve made a few changes to how keyboard shortcuts are managed with build 586.

Key Bindings can still be accessed via Tools->Options->Key Bindings  but this page now lets you search for key binding, either by name or by the actual keystrokes. This page also has all of the key bindings in one place for easy browsing. The other change was to add a separate page for each Component(Category) of key bindings in the navigation pane.

While these are relatively small changes, we hope they will make life easier for those who rely heavily on keyboard navigation.

keybindings

Improving Project Accuracy (C/C++)

Friday, September 16th, 2011

Usually just identifying the root of your source tree and saying "Analyze" will provide you with a accurate, useful Understand project. Sometimes, however, you need a more accurate representation of your project. Maybe you have large swaths of inactive code that should be enabled, maybe there are grayed out (unresolved) entities that do exist in the source code, or maybe the metrics don’t seem to line up. In cases like this, you will want to use some of the advanced C++ options to fine tune the parse. Here are some things that will improve the parse accuracy.

(more…)

Class Dependencies Report

Wednesday, September 14th, 2011

After printing the Class Dependencies Report (Reports->Dependency->Class Dependencies), we see some headers, with relating numbers that might be confusing as to what exactly they mean. The Dependency Browser can be very useful in seeing the actual dependencies and what they relate to, so I am going to use the Java sample project (getopt) that comes with Understand, the csv file, and the Dependency Browser, to explain the dependencies shown. 
The Dependency Browser shows the Class: GetoptDemo on the left side, and it depends on Getopt and LongOpt (shown on the right of the Dependency Browser, and also in the ‘To Class’ column of the csv file).  In Getopt there are 13 References, and LongOpt there are 12 References.  Both of which are shown in the References column and on the right side of the Dependency Browser.

dependenciesReferences

(more…)

Integrate Understand with your build system

Wednesday, July 20th, 2011

Many teams want to quickly generate Understand’s HTML reports and metrics as part of their regular build process. The new version of the command line tool ‘und’ provides a lot of options for doing exactly this. In this case, I am going to create an Understand project from the latest version of my source code, and generate the html reports and metrics for that version of the code. Since the new version of und has several different modes, I will show how this would be done in each mode.screenshot.14

(more…)

Open Code Files with Understand

Tuesday, August 10th, 2010

As of build 523, the .udb extension on Windows is associated with Understand and when a .udb file is double clicked it will open the Understand Project. Some users have asked for similar functionality with code files. In the past if you setup Understand to open a code file, by default it would open a new instance of Understand. As of build 525 it will open up in the existing instance of Understand instead of a new one. Keep reading for instructions on registering Understand to open code files.

(more…)

Share Your Project

Friday, June 11th, 2010

Use the Project Portability button (Project->Configure Project->Files) to make your project sharable/portable.

More details

UML Class Diagram

Tuesday, June 8th, 2010

We’ve developed a UML Class Diagram for Understand. You can grab it from the plugins page. Update: This diagram is now shipped with Understand and is available in the Graphs menu.

image

Edit Companion File with Ctrl + Apostrophe

Thursday, June 3rd, 2010

As of build 516 If you are editing a code file you can quickly switch to the corresponding header file and back again with Ctrl+’ (apostrophe).

Code Refactoring

Tuesday, April 6th, 2010

Refactoring is a disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behavior. Its heart is a series of small behavior preserving transformations. Each transformation (called a ‘refactoring’) does little, but a sequence of transformations can produce a significant restructuring. Since each refactoring is small, it’s less likely to go wrong. The system is also kept fully working after each small refactoring, reducing the chances that a system can get seriously broken during the restructuring.  — Martin Fowler  http://www.refactoring.com/

In other words, refactoring is making your code cleaner, safer, and easier to use. Understand can be a very powerful tool in your re-factoring arsenal. Here are a few ways you can use Understand in your refactoring process.

(more…)