May 2008 Archives

  • Add: Run a command working directory now accepts macro as a parameter
  • Add: Allow entry of file and include paths with $envars or%envars to be passed through and set as a valid path
  • Add: Added shortcut key in editor window (Ctrl+,) to show a popup dialog of the other files in the current editor's directory that have the same name as the current editor in most recently used order which allows for quick access and selection. Also added a tool button to the CIS with a menu.Clicking the tool button will select the file on the top of the list.
  • Add: Give Entity-based graph windows the ability to be opened in MDI mode and SDI mode (like editor windows). Architecture-based graph windows do not yet support this.

As I walk around meeting with our engineers, I notice they will frequently have dozens of files open in Understand’s GUI.   They use the “Navigator” to move quickly between them. 

To launch the Navigator choose “Window->Navigator”, or use Ctrl-Tab or Ctrl-Shift-TabCtrl-Tab automatically moves you to the next tabbed document of the same type (e.g. editor, graph). Ctrl-Shift-Tab moves you to the left next document of the same type.

2008-05-14 22.27

It has become vogue in recent times to use extensionless header files. I think it started with the STL library and spread, like a virus, from there.   Oops… sorry to inject my personal opinon there. Suffice to say, I think they are a bad idea.

But they are a reality and we have to deal with them.  In fact, we have hundreds of them in our own source tree, courtesy our use of Qt for GUI portability.

As a teaching example, I setup an Understand 2.0 project file that includes the Qt include tree.  I added a “Makefile” to it for example – it wasn’t really there to start with.  But it does highlight the problem and gives a clue as to why I, a static analysis tool vendor, don’t like extensionless header files…. How are we supposed to tell Makefile, or Todo, or Readme from QString.  Sure we could analyze them to see what was in them, but that is a pain and error prone.

But there is a way, and here is how.

First off, when adding a directory I have to have an additional file filter of *:

2008-05-16 07.32

This places them in the Project, but as un-parsed files:

2008-05-13 20.432008-05-13 20.46

  • Add import to all list options in configure dialog; allow to import from a file a text list of stored values on most configured list panels, for example, include lists and macros
  • Added charts and tables for Code Size and Complexity. There is now a"Metrics" menu where these graphs, along with other metric functionality, can be accessed.
  • Added: New Getting Started window that replaces the Open Project Dialog. Includes recent projects list, SciTools blog entry links, and links to other help material. If closed, can be accessed in the Help->Getting Started menu.
  • Added .H as a c++ file type by default
  • Added: -classpath for java enabled projects; add classpaths or jar files to project configuration
  • Added new options to Java class path panel: Now enabled to allow multiple jar file selections; Remember last jar file directory

You might have noticed that prior to Build 445, Understand 2.0 didn’t have Find and Replace functionality.  This was one of the reasons we have left it in beta status.

In this week’s Build 445 we released find/replace into a shipping build. So I thought it appropriate to blog about how it works.

You will find it under Search->Replace in Files

The “find” part of “find and replace”  works exactly like “Find in Files”.

2008-05-13 13.12

With Understand 2.0 we've made a lot of improvements to our source editor, and we will continue to improve it. However, we know that sometimes you've used an editor for so long that there is no way you could leave it. For that reason, Understand allows you to run with any external editor. One of our customers asked about SlickEdit today, so that's what I am going to show, but the same steps apply for any other editor.

Mark F., the lead engineer for our upcoming Measure tool, had an informal code review with our lead architect Jim B. this afternoon.  The purpose was to review the parts of Measure that will be built-in to Understand 2.0.

These reviews are basically what we do before we check in code that will likely be in the next build. Jim is looking for integration/impact issues in areas Mark might not have visibility into.

But what to check?   We don't review each line of code. That takes too long and it doesn't yield good quality returns on the investment of time.   Instead we look at edges - where does the new code touch old code, what interfaces change, what dependencies are affected, what new dependencies were created.

Mark first showed Jim this graph (that he made using Measure):

MeasureLibraryVolume

  • Check "Alternate Snapshot Time" automatically and don't allow unchecking when "alternate folder" or "TrackBack" options are chosen
  • Added an additional "Dependency Graph (as expanded)" context-menu item. It will show only when the context menu is requested in the "Architecture Browser" and the architecture is expanded.
  • Wizard change: add Import msvc project option by c and c# languages, if not chosen don't show the visual studio panel
  • Bug fixes: if multiple capture commands of the same name and parameters were launched previously, another window was always open, ignoring reuse option

I sometimes end up talking with folks that seem to have duplicate items in the entity filter. In this case the function osTime appears twice in the function list.

I keep a general watch on what is changing so I know where features are schedule wise, what engineers are working on, and also so I can spot check for appropriate solutions to some of our thornier problems (no bubble sorts please!).   I usually do this by doing a compare of my current source tree against a snapshot of the last public build. I then organize it by staff.

Here is the typical two pane diff view:

2008-05-02 22.11

Trouble is, I’m traveling and my laptop has a small screen. Notice how the rightpane text is cut off?  Also, when I look at diffs I’m usually just looking at the right side. Fortunately, Understand 2.0 has a way to show just the right side, see all the text and make efficient use of my smaller screen. Just hit the 2008-05-02 22.13 button and you will see only the right side.

One common task when maintaining software is looking at routines that are close copies of one another. Close… but not quite the same.  You might do this in refactoring or just in looking at a section of a routine that is doing what you want, and is working right, while what you wrote isn’t.

Understand 2.0 adds two new features in to directly address this dilemma:

  • Comparing entities – pick any two entities and textually compare them
  • Comparing arbritray text – paste in any text, compare them

About this Archive

This page is an archive of entries from May 2008 listed from newest to oldest.

April 2008 is the previous archive.

June 2008 is the next archive.

Find recent content on the main index or look in the archives to find all content.