Blog

Archive for the ‘Understand 2.0’ Category

User Tools enhancements (input/output)

Friday, April 10th, 2009

With build 476 we are adding an exciting new capability to User Tools. The ability to perform operations directly in the editor. In the the User Tool configuration menu (Tools | Configure User Tools), there are two new fields, Input and Output. As you might expect, the Input field lets you select what text you want to feed into your tool, and the output field lets you choose where you want the output redirected. (more…)

Changes to the Perl API

Thursday, April 9th, 2009

We’ve made several changes to the Understand Perl API recently. The largest change was upgrading from Perl 5.6.0 to 5.10.0 in build 473.
In addition to several cool new features like the smart match operators and switch statements, Perl 5.10 runs faster and has a smaller memory footprint. For more details on what the changes are and how to use
them, see the Perl 5.10 Release Announcement.

We are also in the process of adding Snapshot support for the Perl API for build 476. Now you can access historical versions of the code through your scripts as well. For example you can compare versions of files or write a script to compare metrics between versions. (more…)

Scitools Labs: Dependency Analysis

Friday, February 13th, 2009

Butterfly-Dependency-adler32-c

We’ve had dependency analysis in Understand for many years.  With B471 of Understand 2.0 we have consolidated it into a functional area of the tool, improved what it does and also added a few new dependency views.

The Dependency Analysis capability provides these features:

  • rapid browsing of dependencies for files and Understand architectures
  • Dependents, Depends On, and Butterfly graphs for files and architectures
  • Spreadsheet export of dependency relationships
  • A new Dependency Browsing dock that shows all depedency information

Read on to learn more about the Dependency Analysis capability and what we plan for it.

Or watch the video here.

(more…)

Introducing Scitools Labs

Wednesday, February 11th, 2009

Customers tell us frequently that they appreciate our weekly builds. They provide a constant stream of new features and bug fixes to Understand users. We like weekly builds because it means we don’t have to provide patch binaries to customers in dire need of an update and also because we hate the idea of a crash or bug existing in the wild longer than necessary.

But what do we do with new capabilities that we want feedback on, but aren’t quite “production ready”? We faced this with Understand 2.0, which had lots of new features/capabilities.  Frankly, I think we took too long getting feedback and had to redo more than we would have liked once we did get user experiences.

Going foward we have big plans for Understand and the core technology it is based on. And so that we can get rapid feedback, we will be exposing features much earlier than we have in the past using a vehicle called “Scitools Labs”.

Scitools Labs isn’t some effort to make us look bigger than we are. We are still the 20 something person company we’ve always been.  Instead, it is our way of asking… “this is where we are heading, what do you think?”.

Build 471, which will be released tomorrow, includes three Scitools Labs features:

  • Dependence Analysis, Graphing and metrics for files and architectures
  • Stack Analysis specific to Microchip Corporation’s compiler/micro-controllers
  • UnderstandYourCode.Com – a website hosting free tools, online analysis and new web oriented features we are putting into Understand.

I’ll write more specifically about each new Scitools Labs technology in blog postings prefixed with “Scitools Labs:“.

And remember, your input is the whole idea, so don’t be shy – let us know what you think.

 

VHDL support avilable in B470

Monday, February 2nd, 2009

Build 470, released today, introduces beta support for VHDL.  E-mail support@scitools.com for instructions on how to enabble that support.

 

GDB and Understand

Tuesday, December 30th, 2008

About 1/2 our engineers program on Linux. A couple use the Mac. And the rest use Windows.

On Linux and the Mac it is quite common to have command line GDB session in use for debugging and to need to inspect or walk a call stack from the “where” command.  It is a bit of a pain to have these separated from Understand. And we may (if we can figure out the Windows side) add debugging support directly into Understand, but until here is a tip that makes working with GDB a bit easier.

With B465 you paste any text into a command result window (get one by choosing “Options->Run a command”).  Once pasted, we analyze it for file, line and entity names and it becomes clickable for Understand events and menus.

Here is a GDB call stack pasted in:

 Gdb_

Files and lines are identified so I can visit them in Understand, or right click and get information and graphs.

Also, with B465 we have made file detection much smarter. It will recognize short, relative and full path names and associate line numbers with them in any fashion a compiler or other tool can think to spit them out.

 

Yes! Searching in Graphs

Tuesday, December 30th, 2008

Searching in graphs has been on my Understand wish list since we first added graphs – 10 years ago!

So I’m quite happy to report that Understand 2.0 Build 466 has searching in graphs. To search in a graph just hit the binocular button and enter in the search text. It is incremental. As you type, it matches. Hit return to move to the next, or use the green arrows. The graph will center to the next match. Searches will find on node labels and edge labels (if the graph has them).

Here I search a large call tree for “inflate”:

31 2008-12-30 13.51

 

Tip – Beautify your code

Thursday, November 6th, 2008

Your code is beautiful, formatted to your liking and spaced just how you want it, but sometimes you have to work with other people’s code – yuck! If only there was something that would make it look like your code, instead of spaghetti. Artistic Style, or astyle as it is also known, is a great open source application that does exactly that.

So you can quickly turn this:

image

Into this:

image

We plan on implementing astyle into the editor at some point in the future, but I’m not so patient, and I decided to use our plugin mechanism to do it now, and will show you how.

(more…)

Word Clouds?

Friday, October 24th, 2008

We are always on the lookout for new ways to represent source code. Word Clouds caught my fancy.

Here is one of our own source code showing the top 50 most complex functions in source tree.

clip_image002

We thought doing Classes by lines of code, Classes by Sum Complexity and Architectures by the same might also be interesting.

Q: Worth adding to Understand?

BTW: The Cloud was generated by Wordle.net.  We wrote a script that generates output that can be pasted into its text box.   I’ve attached it in case you want to try it on your own code.
File Attachment: wordart.pl.zip

Tip – Understand the CountPath Metric

Tuesday, October 21st, 2008

So imagine you’re reviewing metrics for a small function:

  61 lines of code, pretty small, keeping functionality nice and modular. Good.

  Cyclomatic complexity of 30. Highly complex, but within the acceptable range. Good.

  CountPath metric 536,870,912. What is this? 536 Million paths in 61 lines of code, that can’t be right, can it?!?

(more…)