<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SciTools Blog &#187; Understand 2.0</title>
	<atom:link href="http://scitools.com/blog/category/understand-20/feed" rel="self" type="application/rss+xml" />
	<link>http://scitools.com/blog</link>
	<description>Maintain your Software</description>
	<lastBuildDate>Fri, 18 May 2012 18:57:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>User Tools enhancements (input/output)</title>
		<link>http://scitools.com/blog/2009/04/user-tools-enhancements-inputoutput.html</link>
		<comments>http://scitools.com/blog/2009/04/user-tools-enhancements-inputoutput.html#comments</comments>
		<pubDate>Fri, 10 Apr 2009 23:39:20 +0000</pubDate>
		<dc:creator>KevinG</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Understand 2.0]]></category>
		<category><![CDATA[user tools]]></category>

		<guid isPermaLink="false">http://scitools.com/blog/?p=405</guid>
		<description><![CDATA[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 &#124; Configure User Tools), there are two new fields, Input and Output. As you might expect, the Input field lets you select what text you [...]]]></description>
			<content:encoded><![CDATA[<p>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.<span id="more-405"></span><img class="size-full wp-image-406 aligncenter" title="screenshot_15" src="http://scitools.com/blog/wp-content/uploads/2009/04/screenshot_15.jpeg" alt="screenshot_15" width="382" height="396" /></p>
<p>For Input you can chose to use the selected text, the text of the entire current file, or not to use any input. You can output your results into the command output window like previous versions allowed, discard it, copy it to the clipboard, or overwrite the current selected text or file.</p>
<p>For example, the following would replace the word int with float in the currently highlighted text:</p>
<p style="text-align: center;"><img class="size-full wp-image-407 aligncenter" title="screenshot_16" src="http://scitools.com/blog/wp-content/uploads/2009/04/screenshot_16.jpeg" alt="screenshot_16" width="302" height="170" /></p>
<p>Yes, Find &amp; Replace would do the same thing, it&#8217;s just an example <img src='http://scitools.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>An example of replacing an entire file would be when <a href="http://scitools.com/blog/2008/11/tip-beautify-your-code.html" target="_blank">using astyle to format your code</a>. In that blog posting we had to overwrite the current file, and then reload it. Now we can feed the file text straight into the command and then the editor contents get automatically overwritten. No need to confirm the file reload every time:</p>
<p style="text-align: center;"><img class="size-full wp-image-408 aligncenter" title="screenshot_17" src="http://scitools.com/blog/wp-content/uploads/2009/04/screenshot_17.jpeg" alt="screenshot_17" width="308" height="169" /></p>
<p>As with many new Understand features, this was requested by a cutomer, we thought it was a good idea and that other people would use it, so we implemented it. If you have a good idea don&#8217;t hesitate to let us know. Just drop us an email at <a href="mailto://support@scitools.com">support@scitools.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://scitools.com/blog/2009/04/user-tools-enhancements-inputoutput.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Changes to the Perl API</title>
		<link>http://scitools.com/blog/2009/04/changes-to-the-perl-api.html</link>
		<comments>http://scitools.com/blog/2009/04/changes-to-the-perl-api.html#comments</comments>
		<pubDate>Thu, 09 Apr 2009 14:16:15 +0000</pubDate>
		<dc:creator>KevinG</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Scitools Labs]]></category>
		<category><![CDATA[Understand 2.0]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[perl]]></category>

		<guid isPermaLink="false">http://scitools.com/blog/http:/scitools.com/blog/archives/2009/04/changes-to-the-perl-api.html</guid>
		<description><![CDATA[We&#8217;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 [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve made several changes to the <em>Understand</em> <a href="http://www.scitools.com/products/understand/perl.php">Perl API</a> recently. The largest change was upgrading from Perl 5.6.0 to 5.10.0 in build <a href="http://scitools.com/blog/2009/03/understand-20-build-notes-b473.html" target="_blank">473</a>.<br />
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<br />
them, see the <a href="http://dev.perl.org/perl5/news/2007/perl-5.10.0.html" target="_blank">Perl 5.10 Release Announcement</a>.</p>
<p>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. <span id="more-395"></span><strong> </strong></p>
<p><strong>What does this mean to you as an <em>Understand</em> script user?</strong><br />
In addition to the new features, the main side effect might be that some scripts might no longer work.</p>
<p>If any of your scripts stop working, review this list of incompatabilites in the <a href="http://search.cpan.org/dist/perl-5.10.0/pod/perl5100delta.pod#Incompatible_Changes/">Perl delta document</a>. You can also make sure the scripts are still valid syntax by running <strong>maintain_uperl -c myscipt.pl</strong>.</p>
<p>The new snapshot changes modify the API in a few different ways:</p>
<ul>
<li> Db::snapshots() to get a list of snapshots for the db.</li>
<li>$snapshot-&gt;name() to get the name of a snapshot and</li>
<li>$snapshot-&gt;open() to open the snapshot and return a $db variable that represents the snapshot.</li>
<li>The $db object is now &#8220;live&#8221;. It never used to be and it was never important that a script pass around and use the correct object. It is now critical.</li>
<li>Entity objects carry with them knowledge of the database/snapshot they belong to. Multiple databases/snapshots can be open and you can have entities from them all at once.</li>
<li>Any <strong>scripts which used entity ids <em>$ent-&gt;id() </em>as keys in hashes must be updated</strong> &#8211; the $ent-&gt;id is no longer unique across snapshots and multiple databases
<ul>
<li><span style="text-decoration: line-through;">At the beginning of the script add:   <em>use Tie::RefHash;</em></span></li>
<li><span style="text-decoration: line-through;">declare the hash with:  <em>tie my %my_hash, &#8216;Tie::RefHash&#8217;;</em></span></li>
<li><span style="text-decoration: line-through;">use the actual entity object as the key <em>$my_hash{$ent}</em>, not the dereference of the entity <em>$my_hash{$ent-&gt;id}</em>.</span></li>
<li><span style="text-decoration: line-through;">Don&#8217;t use Understand::ent-&gt;new($id) to reconstruct an Ent object from the id.</span></li>
</ul>
</li>
</ul>
<p>If you run into any problems that you need help with, feel free to post a question on the <a href="http://www.scitools.com/support/forum/viewforum.php?f=5" target="_blank">scripting forum</a>, or shoot us an email at support@scitools.com</p>
<p>UPDATE- We found some issues with the above approach to $ent-&gt;id and changed it with build 477. Using a Tie::RefHash for entities does not work as intended and is no longer recommended. We added a new call $db-&gt;<strong>ent_from_id</strong>($id), to reconstruct entity objects from ids.  To use entities as hash keys without later retrieving the entities from keys, it is sufficient to simply use $ent for the key. To later retrieve an entity from a key, instead, use the entity id as the key ($ent-&gt;id()), and retrieve the entity from the key with $db-&gt;ent_from_id($key). Note, it is not possible to safely store entities from different db&#8217;s into the same hash using this technique, since id&#8217;s are not unique across multiple open db&#8217;s.</p>
]]></content:encoded>
			<wfw:commentRss>http://scitools.com/blog/2009/04/changes-to-the-perl-api.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scitools Labs: Dependency Analysis</title>
		<link>http://scitools.com/blog/2009/02/scitools-labs-dependency-analysis.html</link>
		<comments>http://scitools.com/blog/2009/02/scitools-labs-dependency-analysis.html#comments</comments>
		<pubDate>Fri, 13 Feb 2009 14:58:19 +0000</pubDate>
		<dc:creator>ken</dc:creator>
				<category><![CDATA[Scitools Labs]]></category>
		<category><![CDATA[Understand 2.0]]></category>

		<guid isPermaLink="false">http://scitools.com/blog/http:/scitools.com/blog/archives/2009/02/scitools-labs-dependency-analysis.html</guid>
		<description><![CDATA[We&#8217;ve had dependency analysis in Understand for many years.&#160; 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 [...]]]></description>
			<content:encoded><![CDATA[<p align="center"><a href="http://scitools.com/blog/wp-content/uploads/mt-old/Butterfly_2DDependency_2Dadler32_2Dc.png"><img alt="Butterfly-Dependency-adler32-c" src="http://scitools.com/blog/wp-content/uploads/mt-old/Butterfly_2DDependency_2Dadler32_2Dc_thumb1.jpg" border="0" /><font color="#800080"></a></p>
<p></font></p>
<p>We&rsquo;ve had dependency analysis in <em>Understand</em> for many years.&nbsp; With B471 of <em>Understand 2.0 </em>we have consolidated it into a functional area of the tool, improved what it does and also added a few new dependency views.</p>
<p>The Dependency Analysis capability provides these features:</p>
<ul>
<li>rapid browsing of dependencies for files and <em>Understand</em> architectures</li>
<li>Dependents, Depends On, and Butterfly graphs for files and architectures</li>
<li>Spreadsheet export of dependency relationships</li>
<li>A new Dependency Browsing dock that shows all depedency information </li>
</ul>
<p>Read on to learn more about the Dependency Analysis capability and what we plan for it. </p>
<p>Or watch the video <a href="http://www.screencast.com/users/Scitools/folders/Jing/media/b3cd613b-ebab-429b-8458-30d4505eab21" target="_blank">here</a>.</p>
<p><span id="more-388"></span></p>
<p><strong>Lots of Data</strong></p>
<p>To calculate dependency we have to examine every refererence in an <em>Understand</em> project. We then build up dependency data structures for every file and architecture. This includes the nature of the dependency and the references that caused the depedency. </p>
<p>Because this can be a lot of data, we don&rsquo;t calculate this as you ask for a given dependency relationship. Instead, we calculate all dependency information, cache it, and this makes subsquent exploration and browsing quick.</p>
<p>So the first step is to tell <em>Understand</em> you want to explore dependency information, by choosing:</p>
<p><img alt="10 2009-02-13 10.37" src="http://scitools.com/blog/wp-content/uploads/mt-old/10_202009_2D02_2D13_2010.37.jpg" border="0" /></p>
<p>Note the <em>Scitools Labs</em> icon next to the menu. This means this is an early feature, so don&rsquo;t depend on it and also send feedback if you have ideas about it.</p>
<p>Depending on the size of the project building this cache can take a while. On 2 million lines of code, it will take about 15 seconds, but the time will depend on the reference density of the code.</p>
<p>After reparsing the cache will still be used, you currently have to remember to update it, although in a build or two we will ask if you want to update it.</p>
<p><strong>Exploring Dependencies</strong></p>
<p>Once the cache is created, you can now explore dependencies using the Dependency Browser. To get it, right click on a file or an architecture and choose &ldquo;View Dependencies&rdquo;</p>
<p><img alt="2009-02-13 10.41" src="http://scitools.com/blog/wp-content/uploads/mt-old/2009_2D02_2D13_2010.41.jpg" border="0" /></p>
<p>The Dependency Browser then pops up, by default docked to the right side of the interface.</p>
<p><img alt="2009-02-13 10.42" src="http://scitools.com/blog/wp-content/uploads/mt-old/2009_2D02_2D13_2010.42.jpg" border="0" /></p>
<p>The browser shows that &ldquo;adler32.c&rdquo; depends on two other files (zconf.h and zlib.h).&nbsp; Clicking on zconf.h shows the references that caused the dependence.&nbsp;&nbsp; It also shows that adler.c is depended on by 3 files, to see them click on the tab.&nbsp; Note that these references are hot, click on them to visit the source location.</p>
<p>The [x] Sync button at the top tells <em>Understand</em> to show dependency information for whatever entity you click on elsewhere in the interface.</p>
<p><strong>Dependence Graphs</strong></p>
<p>We provide, currently, three graphs for files and architectures:</p>
<ul>
<li>Dependency Graph &ndash; edges show that node a depends on node b</li>
<li>Reverse Dependency Graph &ndash; edges show that node a is depended on by node b</li>
<li>ButterFly&nbsp; &ndash; shows dependence and dependency </li>
</ul>
<p>&nbsp;</p>
<p>To get a graph, just right click on the file or node in question, or choose the graph icon in the Dependency Browser:</p>
<p><img alt="2009-02-13 10.47" src="http://scitools.com/blog/wp-content/uploads/mt-old/2009_2D02_2D13_2010.47.jpg" border="0" /></p>
<p>Choosing the Dependency Graph for adler.c we get:</p>
<p><img alt="DependencyGraph-adler32-c" src="http://scitools.com/blog/wp-content/uploads/mt-old/DependencyGraph_2Dadler32_2Dc.png" border="0" /></p>
<p>Adler.c depends on zlib.h twice in the code, and 4 times on zconf.h, and so on.</p>
<p><strong>Data Export</strong></p>
<p>You can export relationship information for a file or architecture to CSV format by clicking on the <img alt="2009-02-13 10.50" src="http://scitools.com/blog/wp-content/uploads/mt-old/2009_2D02_2D13_2010.50.jpg" border="0" />&nbsp;icon. This will do output dependency relationships in matrix form for that entity.&nbsp; </p>
<p>You can also get the matrix for all files or architectures by choosing the CSV export options from the main Dependency menu:</p>
<p><img alt="2009-02-13 10.53" src="http://scitools.com/blog/wp-content/uploads/mt-old/2009_2D02_2D13_2010.53.jpg" border="0" /></p>
<p>&nbsp;</p>
<p><a href="http://scitools.com/blog/wp-content/uploads/mt-old/2009_2D02_2D13_2010.55.jpg"><img alt="2009-02-13 10.55" src="http://scitools.com/blog/wp-content/uploads/mt-old/2009_2D02_2D13_2010.55_thumb.jpg" border="0" /></a></p>
<p><strong>Our Intentions</strong></p>
<p>We want your feedback on these features &ndash; both in how we implement them and also what else we should do.</p>
<p>Our plans currently include:</p>
<ul>
<li>Dependency information for Java, C#, C++ Classes&nbsp; &amp; Ada Packages</li>
<li>Dependency Rules &ndash; a specification system indicating permited and non-permitted dependencies</li>
<li>Dependency Corrections &ndash; system for correcting false positives dependencies</li>
<li>Access to Dependency Information from the C++ and PERL APIs</li>
</ul>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://scitools.com/blog/2009/02/scitools-labs-dependency-analysis.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Introducing Scitools Labs</title>
		<link>http://scitools.com/blog/2009/02/introducing-scitools-labs.html</link>
		<comments>http://scitools.com/blog/2009/02/introducing-scitools-labs.html#comments</comments>
		<pubDate>Wed, 11 Feb 2009 19:45:34 +0000</pubDate>
		<dc:creator>ken</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Scitools Announcements]]></category>
		<category><![CDATA[Scitools Labs]]></category>
		<category><![CDATA[Understand 2.0]]></category>

		<guid isPermaLink="false">http://scitools.com/blog/http:/scitools.com/blog/archives/2009/02/introducing-scitools-labs.html</guid>
		<description><![CDATA[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&#8217;t have to provide patch binaries to customers in dire need of an update and also because we hate the idea of a [...]]]></description>
			<content:encoded><![CDATA[<p><img alt="" src="http://understandyourcode.com/images/ScitoolsLabsGlow.png" border="0" /></p>
<p>Customers tell us frequently that they appreciate our weekly builds. They provide a constant stream of new features and bug fixes to <em>Understand</em> users. We like weekly builds because it means we don&rsquo;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.</p>
<p>But what do we do with new capabilities that we want feedback on, but aren&rsquo;t quite &ldquo;production ready&rdquo;?&nbsp;We faced this with <em>Understand 2.0,</em> which had lots of new features/capabilities.&nbsp; 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.</p>
<p>Going foward we have big plans for <em>Understand </em>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 &ldquo;<em>Scitools Labs</em>&rdquo;.</p>
<p><em>Scitools Labs</em> isn&rsquo;t some effort to make us look bigger than we are. We are still the 20 something person company we&rsquo;ve always been.&nbsp; Instead, it is our way of asking&hellip; &ldquo;this is where we are heading, what do you think?&rdquo;.</p>
<p>Build 471, which will be released tomorrow, includes three <em>Scitools Labs</em> features:</p>
<ul>
<li>Dependence Analysis, Graphing and metrics&nbsp;for files and architectures</li>
<li>Stack Analysis specific to Microchip Corporation&rsquo;s compiler/micro-controllers</li>
<li><a href="http://www.understandyourcode.com/" target="_blank">UnderstandYourCode.Com</a>&nbsp;&ndash; a website hosting free tools, online analysis and new web oriented features we are putting into <em>Understand</em>.</li>
</ul>
<p>I&rsquo;ll write more specifically about&nbsp;each new&nbsp;<em>Scitools Labs</em> technology in blog postings prefixed with &ldquo;Scitools Labs:&ldquo;. </p>
<p>And remember, your input is the whole idea, so don&rsquo;t be shy &ndash; let us know what you think.</p>
<p><img src="http://scitools.com/blog/smile5.gif" /></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://scitools.com/blog/2009/02/introducing-scitools-labs.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VHDL support avilable in B470</title>
		<link>http://scitools.com/blog/2009/02/vhdl-support-avilable-in-b470.html</link>
		<comments>http://scitools.com/blog/2009/02/vhdl-support-avilable-in-b470.html#comments</comments>
		<pubDate>Mon, 02 Feb 2009 22:19:03 +0000</pubDate>
		<dc:creator>ken</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Scitools Announcements]]></category>
		<category><![CDATA[Understand 2.0]]></category>

		<guid isPermaLink="false">http://scitools.com/blog/http:/scitools.com/blog/archives/2009/02/vhdl-support-avilable-in-b470.html</guid>
		<description><![CDATA[Build 470, released today, introduces beta support for VHDL.&#160; E-mail support@scitools.com for instructions on how to enabble that support. &#160;]]></description>
			<content:encoded><![CDATA[<p><img src="http://scitools.com/blog/smile1.gif" /></p>
<p>Build 470, released today, introduces beta support for VHDL.&nbsp; E-mail <a href="mailto:support@scitools.com">support@scitools.com</a> for instructions on how to enabble that support.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://scitools.com/blog/2009/02/vhdl-support-avilable-in-b470.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GDB and Understand</title>
		<link>http://scitools.com/blog/2008/12/gdb-and-understand.html</link>
		<comments>http://scitools.com/blog/2008/12/gdb-and-understand.html#comments</comments>
		<pubDate>Tue, 30 Dec 2008 18:11:10 +0000</pubDate>
		<dc:creator>ken</dc:creator>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[Understand 2.0]]></category>

		<guid isPermaLink="false">http://scitools.com/blog/http:/scitools.com/blog/archives/2008/12/gdb-and-understand.html</guid>
		<description><![CDATA[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&#160;inspect or walk&#160;a call stack from the &#8220;where&#8221; command.&#160; It is a bit of a pain [...]]]></description>
			<content:encoded><![CDATA[<p>About 1/2 our engineers program on Linux. A couple use the Mac. And the rest use Windows. </p>
<p>On Linux and the Mac it is quite common to have command line GDB session in use for debugging and to need to&nbsp;inspect or walk&nbsp;a call stack from the &ldquo;where&rdquo; command.&nbsp; It is a bit of a pain to have these separated from <em>Understand</em>. And we may (if we can figure out the Windows side) add debugging support directly into <em>Understand</em>, but until here is a tip that makes working with GDB a bit easier.</p>
<p>With B465 you paste any text into a command result window (get one&nbsp;by choosing &ldquo;Options-&gt;Run a command&rdquo;).&nbsp; Once pasted, we analyze it for file, line and entity names and it becomes clickable for <em>Understand</em> events and menus. </p>
<p>Here is a GDB call stack pasted in:</p>
<p><span style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"><?xml:namespace prefix ="" v ns ="" "urn:schemas-microsoft-com:vml" /><v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600">&nbsp;<a href="http://scitools.com/blog/wp-content/uploads/mt-old/gdb_.png"><img alt="Gdb_" src="http://scitools.com/blog/wp-content/uploads/mt-old/gdb__thumb.jpg" border="0" /></a><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><?xml:namespace prefix ="" o ns ="" "urn:schemas-microsoft-com:office:office" /><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype></span></p>
<p>Files and lines are identified so I can visit them in <em>Understand</em>, or right click and get information and graphs.</p>
<p>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.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://scitools.com/blog/2008/12/gdb-and-understand.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Yes! Searching in Graphs</title>
		<link>http://scitools.com/blog/2008/12/yes-searching-in-graphs.html</link>
		<comments>http://scitools.com/blog/2008/12/yes-searching-in-graphs.html#comments</comments>
		<pubDate>Tue, 30 Dec 2008 17:58:27 +0000</pubDate>
		<dc:creator>ken</dc:creator>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[Understand 2.0]]></category>

		<guid isPermaLink="false">http://scitools.com/blog/http:/scitools.com/blog/archives/2008/12/yes-searching-in-graphs.html</guid>
		<description><![CDATA[Searching in graphs has been on my Understand wish list since we first added graphs &#8211; 10 years ago! So I&#8217;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 [...]]]></description>
			<content:encoded><![CDATA[<p>Searching in graphs has been on my <em>Understand</em> wish list since we first added graphs &ndash; 10 years ago!</p>
<p>So I&rsquo;m quite happy to report that <em>Understand 2.0 Build 466</em> 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).</p>
<p>Here I search a large call tree for &ldquo;inflate&rdquo;:</p>
<p><a href="http://scitools.com/blog/wp-content/uploads/mt-old/31_202008_2D12_2D30_2013.51.jpg"><img alt="31 2008-12-30 13.51" src="http://scitools.com/blog/wp-content/uploads/mt-old/31_202008_2D12_2D30_2013.51_thumb.jpg" border="0" /></a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://scitools.com/blog/2008/12/yes-searching-in-graphs.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tip &#8211; Beautify your code</title>
		<link>http://scitools.com/blog/2008/11/tip-beautify-your-code.html</link>
		<comments>http://scitools.com/blog/2008/11/tip-beautify-your-code.html#comments</comments>
		<pubDate>Thu, 06 Nov 2008 20:49:32 +0000</pubDate>
		<dc:creator>KevinG</dc:creator>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[Understand 2.0]]></category>
		<category><![CDATA[astyle]]></category>
		<category><![CDATA[beautify]]></category>
		<category><![CDATA[user tools]]></category>

		<guid isPermaLink="false">http://scitools.com/blog/http:/scitools.com/blog/archives/2008/11/tip-beautify-your-code.html</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>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. <a href="http://astyle.sourceforge.net/" target="_blank">Artistic Style</a>, or astyle as it is also known, is a great open source application that does exactly that.</p>
<p>So you can quickly turn this:</p>
<p><a href="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/TipBeautifyyourcode_D95D/image_26.png"><img style="display: inline; border-width: 0px;" title="image" src="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/TipBeautifyyourcode_D95D/image_thumb_12.png" border="0" alt="image" width="748" height="84" /></a></p>
<p>Into this:</p>
<p><a href="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/TipBeautifyyourcode_D95D/image_28.png"><img style="display: inline; border-width: 0px;" title="image" src="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/TipBeautifyyourcode_D95D/image_thumb_13.png" border="0" alt="image" width="604" height="212" /></a></p>
<p>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.</p>
<p><span id="more-376"></span></p>
<p>There are two ways to run astyle from inside Understand, as an Interactive Report plugin, or as a custom user tool. Either way, first you’ll need to install or build astyle you can <a href="http://sourceforge.net/project/showfiles.php?group_id=2319l" target="_blank">download it from here</a>.</p>
<h3>Interactive Report</h3>
<p>The Interactive report integrates directly with the file context menu in Understand. Download the plugin <a href="http://www.scitools.com/plugins/plugins/IReport/astyle.upl" target="_blank">from here</a>(right click and save as). To install it, just move the file to SciTools\conf\plugin\User\IReport\ and restart Understand.<br />
To run the plugin, right click on a File, select Interactive Reports and Beautify</p>
<p><a href="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/TipBeautifyyourcode_D95D/image_2.png"><img style="display: inline; border-width: 0px;" title="image" src="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/TipBeautifyyourcode_D95D/image_thumb.png" border="0" alt="image" width="260" height="83" /></a></p>
<p>At which point you’ll be presented with the options window:</p>
<p><a href="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/TipBeautifyyourcode_D95D/image_4.png"><img style="display: inline; border-width: 0px;" title="image" src="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/TipBeautifyyourcode_D95D/image_thumb_1.png" border="0" alt="image" width="288" height="211" /></a></p>
<p>The first field is pretty straight forward, just navigate to where the astyle executable is installed.</p>
<p>The rest of the dialog may seem overwhelming, but the tricky part is figuring out what your “style” is. Astyle has 5 predefined styles, and chances are that one of them will be pretty close to what you like.</p>
<p><a href="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/TipBeautifyyourcode_D95D/image_6.png"><img style="display: inline; border-width: 0px;" title="image" src="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/TipBeautifyyourcode_D95D/image_thumb_2.png" border="0" alt="image" width="323" height="51" /></a></p>
<p>Astyle’s <a href="http://astyle.sourceforge.net/astyle.html" target="_blank">documentation</a> goes into more detail about each of these styles, but here is a rough overview:</p>
<table border="1" cellspacing="0" cellpadding="0" width="699">
<tbody>
<tr>
<td width="233" align="center" valign="top"><strong>ANSI</strong></td>
<td width="233" align="center" valign="top"><strong>GNU</strong></td>
<td width="233" align="center" valign="top"><strong>KR</strong></td>
</tr>
<tr>
<td width="233" valign="top">ANSI style formatting and indenting. Brackets are broken, indentation is 4 spaces. Namespaces, classes, and switches are NOT indented.</td>
<td width="233" valign="top">GNU style formatting and indenting. Brackets are broken, blocks are indented, and indentation is 2 spaces. Namespaces, classes, and switches are NOT indented.</td>
<td width="233" valign="top">Kernighan &amp; Ritchie style formatting and indenting. Brackets are attached, indentation is 4 spaces. Namespaces, classes, and switches are NOT indented.</td>
</tr>
<tr>
<td width="233" valign="top">
<pre>namespace foospace
{
int Foo()
{
if (isBar)
{
bar();
return 1;
}
else
return 0;
}
}</pre>
</td>
<td width="233" valign="top">
<pre>namespace foospace
{
int Foo()
{
if (isBar)
{
bar();
return 1;
}
else
return 0;
}
}</pre>
</td>
<td width="233" valign="top">
<pre>namespace foospace {
int Foo() {
if (isBar) {
bar();
return 1;
} else
return 0;
}
}</pre>
</td>
</tr>
</tbody>
</table>
<table border="1" cellspacing="0" cellpadding="0" width="466">
<tbody>
<tr>
<td width="233" align="center" valign="top"><strong>Linux</strong></td>
<td width="233" align="center" valign="top"><strong>Java</strong></td>
</tr>
<tr>
<td width="233" valign="top">Linux style formatting and indenting. All brackets are Linux style, indentation is 8 spaces. Namespaces, classes, and switches are NOT indented.</td>
<td width="233" valign="top">Java style formatting and indenting. Brackets are attached, indentation is 4 spaces. Switches are NOT indented.</td>
</tr>
<tr>
<td width="233" valign="top">
<pre>namespace foospace
{
int Foo()
{
if (isBar) {
bar();
return 1;
} else
return 0;
}
}</pre>
</td>
<td width="233" valign="top">
<pre>class foospace {
int Foo() {
if (isBar) {
bar();
return 1;
} else
return 0;
}
}</pre>
</td>
</tr>
</tbody>
</table>
<p>If one of these appeals to you as is, just select it from the “Predefined Style” section. If you want to modify one, select it and the other options in the dialog will allow you to override the default settings for a style. For more details about what the command does, select “Display the help text” in the Action section:</p>
<p><a href="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/TipBeautifyyourcode_D95D/image_8.png"><img style="display: inline; border-width: 0px;" title="image" src="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/TipBeautifyyourcode_D95D/image_thumb_3.png" border="0" alt="image" width="162" height="103" /></a></p>
<p>When you are ready to run it, you can either preview the changes in a separate window, or apply them directly to the source code. Of course I would suggest previewing the changes until you figure out exactly what your style is. Note that if your project uses relative paths or named roots, only the preview will work right now since the file naming is different, but you can still copy and paste <img src='http://scitools.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>User Tool</h3>
<p>If you already know what astyle command line options you want to use, you can setup a user tool  to quickly transform a file. Again, this only works for projects with absolute paths.</p>
<p>So here are the command line options I want to use with astyle:</p>
<p>astyle &#8211;style=ansi -t -B -w</p>
<p>To implement these as a user tool, I select Tools | User Tools | Configure</p>
<p>Then I create a new tool. I name it and provide the path to the astyle executable. Then I provide the parameters. The lipstick icon is optional <img src='http://scitools.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://www.scitools.com/blog/wp-content/uploads/2010/04/screenshot.43.png"><img style="display: inline; border-width: 0px;" title="screenshot.43" src="http://www.scitools.com/blog/wp-content/uploads/2010/04/screenshot.43_thumb.png" border="0" alt="screenshot.43" width="343" height="241" /></a></p>
<p>I also decided to bind this to a keyboard shortcut (Ctrl Shift B). You can set the keyboard shortcuts in Tool | Options | Key Bindings.</p>
<p><a href="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/TipBeautifyyourcode_D95D/image_18.png"><img style="display: inline; border-width: 0px;" title="image" src="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/TipBeautifyyourcode_D95D/image_thumb_8.png" border="0" alt="image" width="535" height="97" /></a></p>
<p>Now if I run into an ugly file, I can just hit Ctrl Shift B, and bam, pretty code!</p>
]]></content:encoded>
			<wfw:commentRss>http://scitools.com/blog/2008/11/tip-beautify-your-code.html/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Word Clouds?</title>
		<link>http://scitools.com/blog/2008/10/word-clouds.html</link>
		<comments>http://scitools.com/blog/2008/10/word-clouds.html#comments</comments>
		<pubDate>Fri, 24 Oct 2008 12:35:02 +0000</pubDate>
		<dc:creator>ken</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Understand 2.0]]></category>

		<guid isPermaLink="false">http://scitools.com/blog/http:/scitools.com/blog/archives/2008/10/word-clouds.html</guid>
		<description><![CDATA[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. We thought doing Classes by lines of code, Classes by Sum Complexity and Architectures by the same might also [...]]]></description>
			<content:encoded><![CDATA[<p>We are always on the lookout for new ways to represent source code. Word Clouds caught my fancy.</p>
<p>Here is one of our own source code showing the top 50 most complex functions in source tree.</p>
<p><a href="http://scitools.com/blog/wp-content/uploads/mt-old/clip_image002[5].jpg"></a> <a href="http://scitools.com/blog/wp-content/uploads/mt-old/clip_image002[9].jpg"><img style="border-width: 0px; display: inline;" title="clip_image002" src="http://scitools.com/blog/wp-content/uploads/mt-old/clip_image002_thumb[6].jpg" border="0" alt="clip_image002" width="313" height="496" /></a></p>
<p>We thought doing Classes by lines of code, Classes by Sum Complexity and Architectures by the same might also be interesting.</p>
<p>Q: Worth adding to Understand?</p>
<p>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.<br />
<a href="http://scitools.com/blog/wp-content/uploads/2008/10/wordartpl.zip">File Attachment: wordart.pl.zip</a></p>
]]></content:encoded>
			<wfw:commentRss>http://scitools.com/blog/2008/10/word-clouds.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Tip &#8211; Understand the CountPath Metric</title>
		<link>http://scitools.com/blog/2008/10/tip-understand-the-countpath-metric.html</link>
		<comments>http://scitools.com/blog/2008/10/tip-understand-the-countpath-metric.html#comments</comments>
		<pubDate>Tue, 21 Oct 2008 17:43:28 +0000</pubDate>
		<dc:creator>KevinG</dc:creator>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[Understand 2.0]]></category>
		<category><![CDATA[metrics countpath]]></category>

		<guid isPermaLink="false">http://scitools.com/blog/http:/scitools.com/blog/archives/2008/10/tip-understand-the-countpath-metric.html</guid>
		<description><![CDATA[The CountPath metric counts the number of unique paths though a body of code.
]]></description>
			<content:encoded><![CDATA[<p>So imagine you’re reviewing metrics for a small function:</p>
<blockquote><p>&#160; 61 lines of code, pretty small, keeping functionality nice and modular. Good.</p>
<p>&#160; Cyclomatic complexity of 30. Highly complex, but within the acceptable range. Good.</p>
<p>&#160; CountPath metric 536,870,912. What is this? 536 Million paths in 61 lines of code, that can’t be right, can it?!?</p>
</blockquote>
<p><span id="more-373"></span></p>
<p>The CountPath metric counts the number of unique paths though a body of code. It’s pretty common to have a huge count path metric, even in a small body of code. </p>
<p>In this example, I pull up the code and it looks like this:</p>
<blockquote><p><a href="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/TipUnderstandtheCountPathMetric_C0FB/image_6.png"><img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="139" alt="image" src="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/TipUnderstandtheCountPathMetric_C0FB/image_thumb_2.png" width="465" border="0" /></a> </p>
</blockquote>
<p>29 IF statements in a row. That’s all, logically quite simple code:</p>
<p><a href="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/TipUnderstandtheCountPathMetric_C0FB/image_8.png"><img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="236" alt="image" src="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/TipUnderstandtheCountPathMetric_C0FB/image_thumb_3.png" width="244" border="0" /></a> </p>
<p>But the fun thing about IF statements, is every one doubles the number of potential paths in your code(2<sup>n</sup>) – and as we all remember from our algebra days, exponential growth happens very fast. </p>
<p>So 2 IF statements makes 4 paths. 2<sup>3</sup> is 8 paths. let me demonstrate:</p>
</p>
<p><a href="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/TipUnderstandtheCountPathMetric_C0FB/image_10.png"><img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="236" alt="image" src="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/TipUnderstandtheCountPathMetric_C0FB/image_thumb_4.png" width="244" border="0" /></a> </p>
<p>So for the 3 IF statements here, n=3 and 2<sup>n</sup>= 8 possible paths:</p>
<p>ACE    <br />ACF     <br />ADE     <br />ADF     <br />BCE     <br />BCF     <br />BDE     <br />BDF</p>
</tbody>
</table>
<p>And any guesses what 2<sup>29</sup> is? Yep, 29 IF statements make 536,870,912 paths. Because this metric can grow so large, we do truncate it at 1 Trillion, actually 999,999,999. If we see that many paths, we give up and stop counting. I don’t envy the QA team if they have to test every possible permutation of this, but at least you can believe <em>Understand</em> when it tells you that there are that many paths <img src='http://scitools.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://scitools.com/blog/2008/10/tip-understand-the-countpath-metric.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tip &#8211; Automated Metrics</title>
		<link>http://scitools.com/blog/2008/10/tip-automated-metrics.html</link>
		<comments>http://scitools.com/blog/2008/10/tip-automated-metrics.html#comments</comments>
		<pubDate>Mon, 13 Oct 2008 15:22:00 +0000</pubDate>
		<dc:creator>KevinG</dc:creator>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[Understand 2.0]]></category>
		<category><![CDATA[metrics scheduler task]]></category>

		<guid isPermaLink="false">http://scitools.com/blog/http:/scitools.com/blog/archives/2008/10/tip-automated-metrics.html</guid>
		<description><![CDATA[There are two quick ways to automate metric reports in Understand 2.0, as a scheduled activity and via the command line.
]]></description>
			<content:encoded><![CDATA[<p>Several people have asked me lately about automating metrics with Understand 2.0. There are two quick ways to automate metrics, as a scheduled activity and via the command line:</p>
<p><span id="more-372"></span></p>
<h3>Scheduled Activity</h3>
<p>The quickest way to automatically get metrics is as a scheduled activity. For example I could setup Understand so that every Friday night it reparses my project and generates the current metrics. I can set it up to save the metrics as a comma delimited file and/or as an html report. This is all configured from Tools | Scheduled Activities.</p>
<p><a href="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/AutomaticMetrics_990B/image_2.png"><img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="215" alt="image" src="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/AutomaticMetrics_990B/image_thumb.png" width="244" border="0" /></a> </p>
<h3>Command Line</h3>
<p>Another way to automate the metrics is using the command line tool <font color="#0000ff">und</font>. For a list of the commands available from <strong><font color="#0000ff">und</font></strong>, simply run <strong>und –help</strong>. For more advanced help on a specific command, run <strong>und –help command.</strong> For example <strong>run –help rescan</strong> will show the advanced help for the rescan command.</p>
<p>It most cases the first thing you’ll want to do is update your project by rescanning and analyzing. This can be done with:</p>
<p><strong>und –db c:\project\pixie.udb –rescan &#8211; analyzeAll</strong></p>
<p><font color="#0000ff">Und</font> lets you dynamically specify the parameters for the metrics exports. Simply look at the commands that start –metrics_* for additional options.</p>
<p>For example <font color="#0000ff">metrics_sel</font> lets you specify which metrics you want to report on, so if you just wanted the cyclomatic complexity and the lines of code, first you would need to clear the current metrics and then you would set the option as:</p>
<p><strong>und –db c:\project\pixie.udb –metrics_sel none AvgCyclomatic CountLineCode</strong></p>
<p>Then to actually generate the metrics file, use the –<font color="#0000ff">metrics</font> command, you can specify the filename for the csv export, or if none is specified it will default to the last used filed location. You can see the available metrics at <a title="http://scitools.com/documents/metrics.php" href="http://scitools.com/documents/metrics.php">http://scitools.com/documents/metrics.php</a></p>
<p><strong>und –db c:\project\pixie.udb –metrics “c:\temp\Pixie Metrics\metrics.csv”</strong></p>
<p>You can set the parameters and generate the metrics with the same command, so:</p>
<p><strong>und –db c:\project\pixie.udb –metrics_sel none AvgCyclomatic CountLineCode –metrics &quot;c:\temp\Pixie Metrics\metrics 10-13-2008.csv&quot;</strong></p>
<p>You now have a comma delimited text file that you can open in your favorite spreadsheet editor, or parse however you want:</p>
<p><a href="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/AutomaticMetrics_990B/image_6.png"><img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="82" alt="image" src="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/AutomaticMetrics_990B/image_thumb_2.png" width="338" border="0" /></a> </p>
<p><strong></strong></p>
<p>If you would rather see your metrics as an html report, use the <font color="#0000ff">–metrics_htmlReport</font> command instead of the <font color="#0000ff">–metrics</font> command:</p>
<p><strong>und –db c:\project\pixie.udb –metrics_htmlReport current –dir &quot;c:\temp\Pixie Metrics\html metrics 10-13-2008&quot;</strong></p>
<p>The html reports let you browse by architecture, so you can look at the metrics by filesystem, staff, or whatever architectures you have setup:</p>
<p><a href="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/AutomaticMetrics_990B/image_8.png"><img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="151" alt="image" src="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/AutomaticMetrics_990B/image_thumb_3.png" width="244" border="0" /></a> <a href="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/AutomaticMetrics_990B/image_10.png"><img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="144" alt="image" src="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/AutomaticMetrics_990B/image_thumb_4.png" width="271" border="0" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://scitools.com/blog/2008/10/tip-automated-metrics.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tip &#8211; Finding unused functions in a specific class</title>
		<link>http://scitools.com/blog/2008/09/tip-finding-unused-functions-in-a-specific-class.html</link>
		<comments>http://scitools.com/blog/2008/09/tip-finding-unused-functions-in-a-specific-class.html#comments</comments>
		<pubDate>Tue, 30 Sep 2008 20:42:11 +0000</pubDate>
		<dc:creator>ken</dc:creator>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[Understand 2.0]]></category>

		<guid isPermaLink="false">http://scitools.com/blog/http:/scitools.com/blog/archives/2008/09/tip-finding-unused-functions-in-a-specific-class.html</guid>
		<description><![CDATA[I was walking down to the kitchen to get my afternoon cookie and I met another of our engineers. He asked &#8220;hey, how would I use Understand to clean up a class of functions that are no longer used?&#8221;. I thought for a bit and said &#8220;piece of cake&#8221;. In&#160;short&#8230;. use the entity filter window [...]]]></description>
			<content:encoded><![CDATA[<p>I was walking down to the kitchen to get my afternoon cookie and I met another of our engineers. He asked &ldquo;hey, how would I use Understand to clean up a class of functions that are no longer used?&rdquo;. I thought for a bit and said &ldquo;piece of cake&rdquo;. </p>
<p>In&nbsp;short&hellip;. use the entity filter window to filter on &ldquo;unused functions&rdquo;, turn&nbsp;entity-&gt;long names on, then&nbsp;type in the name of the class. Done.&nbsp; </p>
<p>Here are the steps&hellip;.&nbsp; First select the &ldquo;Unused Functions&rdquo; filter in the Entity Filter window:</p>
<p><img alt="2008-09-30 16.36" src="http://scitools.com/blog/wp-content/uploads/mt-old/2008_2D09_2D30_2016.36.jpg" border="0" /></p>
<p><span id="more-371"></span><br />
<br />Now, turn on Full Entity Names by clicking on the dimple <img alt="07 2008-09-30 16.37" src="http://scitools.com/blog/wp-content/uploads/mt-old/07_202008_2D09_2D30_2016.37.jpg" border="0" />to the right of the Show: field:</p>
<p><img alt="10 2008-09-30 16.38" src="http://scitools.com/blog/wp-content/uploads/mt-old/10_202008_2D09_2D30_2016.38.jpg" border="0" /></p>
<p>The names now have :: in their full name if they are from a class:</p>
<p><img alt="2008-09-30 16.39" src="http://scitools.com/blog/wp-content/uploads/mt-old/2008_2D09_2D30_2016.39.jpg" border="0" /></p>
<p>I&rsquo;m looking to see if class GameBoard has any unused functions, I type &ldquo;GameBoar&rdquo; into the Filter: and find the methods of GameBoard that are not called anywhere in this project:</p>
<p><img alt="2008-09-30 16.40" src="http://scitools.com/blog/wp-content/uploads/mt-old/2008_2D09_2D30_2016.40.jpg" border="0" /></p>
<p>&nbsp;</p>
<p><img src="http://scitools.com/blog/smile5.gif" />&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://scitools.com/blog/2008/09/tip-finding-unused-functions-in-a-specific-class.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Understand 2.0 New Feature: Editor Macros</title>
		<link>http://scitools.com/blog/2008/09/understand-20-new-feature-editor-macros.html</link>
		<comments>http://scitools.com/blog/2008/09/understand-20-new-feature-editor-macros.html#comments</comments>
		<pubDate>Thu, 18 Sep 2008 20:34:13 +0000</pubDate>
		<dc:creator>ken</dc:creator>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[Understand 2.0]]></category>

		<guid isPermaLink="false">http://scitools.com/blog/http:/scitools.com/blog/archives/2008/09/understand-20-new-feature-editor-macros.html</guid>
		<description><![CDATA[We are busy internationalizing important messages in Understand 2.0 so that they can be translated into Japanese. This involves a lot of changes that are identical. For instance, all translatable strings have to be turned into functions that go through a translation function &#8220;tr()&#8221; that will table lookup the string to the corresponding Japanese translation. [...]]]></description>
			<content:encoded><![CDATA[<p>We are busy internationalizing important messages in <em>Understand 2.0</em> so that they can be translated into Japanese. This involves a lot of changes that are identical. For instance, all translatable strings have to be turned into functions that go through a translation function &ldquo;tr()&rdquo; that will table lookup the string to the corresponding Japanese translation.</p>
<p>So take for instance this section of code:</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier"><span style="FONT-WEIGHT: bold; COLOR: #000080">procedure</span>&nbsp;Buffer_Demo&nbsp;<span style="FONT-WEIGHT: bold; COLOR: #000080">is</span><br />&nbsp;&nbsp;&nbsp;EOL&nbsp;&nbsp;<span style="FONT-WEIGHT: bold">:</span>&nbsp;Character&nbsp;<span style="FONT-WEIGHT: bold; COLOR: #000080">renames</span>&nbsp;ASCII<span style="FONT-WEIGHT: bold">.</span>LF<span style="FONT-WEIGHT: bold">;</span><br />&nbsp;&nbsp;&nbsp;Text&nbsp;<span style="FONT-WEIGHT: bold">:</span>&nbsp;<span style="FONT-WEIGHT: bold; COLOR: #000080">constant</span>&nbsp;String<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="FONT-WEIGHT: bold">:=</span>&nbsp;<span style="COLOR: #cc0000">&#8220;Four&nbsp;score&nbsp;and&nbsp;seven&nbsp;years&nbsp;ago&nbsp;our&nbsp;fathers&nbsp;brought&nbsp;forth,&#8221;</span>&nbsp;<span style="FONT-WEIGHT: bold">&amp;</span>&nbsp;EOL&nbsp;<span style="FONT-WEIGHT: bold">&amp;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: #cc0000">&#8220;upon&nbsp;this&nbsp;continent,&nbsp;a&nbsp;new&nbsp;nation,&nbsp;conceived&nbsp;in&nbsp;liberty,&#8221;</span>&nbsp;<span style="FONT-WEIGHT: bold">&amp;</span>&nbsp;EOL&nbsp;<span style="FONT-WEIGHT: bold">&amp;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: #cc0000">&#8220;and&nbsp;dedicated&nbsp;to&nbsp;the&nbsp;proposition&nbsp;that&nbsp;`all&nbsp;men&nbsp;are&nbsp;created&nbsp;equal&#8217;.&#8221;</span><span style="FONT-WEIGHT: bold">;</span></p>
<p>I&rsquo;ve got to make it look like this:</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier"><span style="FONT-WEIGHT: bold; COLOR: #000080">procedure</span>&nbsp;Buffer_Demo&nbsp;<span style="FONT-WEIGHT: bold; COLOR: #000080">is</span><br />&nbsp;&nbsp;&nbsp;EOL&nbsp;&nbsp;<span style="FONT-WEIGHT: bold">:</span>&nbsp;Character&nbsp;<span style="FONT-WEIGHT: bold; COLOR: #000080">renames</span>&nbsp;ASCII<span style="FONT-WEIGHT: bold">.</span>LF<span style="FONT-WEIGHT: bold">;</span><br />&nbsp;&nbsp;&nbsp;Text&nbsp;<span style="FONT-WEIGHT: bold">:</span>&nbsp;<span style="FONT-WEIGHT: bold; COLOR: #000080">constant</span>&nbsp;String<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="FONT-WEIGHT: bold">:=</span>&nbsp;tr<span style="FONT-WEIGHT: bold">(</span><span style="COLOR: #cc0000">&#8220;Four&nbsp;score&nbsp;and&nbsp;seven&nbsp;years&nbsp;ago&nbsp;our&nbsp;fathers&nbsp;brought&nbsp;forth,&#8221;</span><span style="FONT-WEIGHT: bold">)</span>&nbsp;<span style="FONT-WEIGHT: bold">&amp;</span>&nbsp;EOL&nbsp;<span style="FONT-WEIGHT: bold">&amp;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tr<span style="FONT-WEIGHT: bold">(</span><span style="COLOR: #cc0000">&#8220;upon&nbsp;this&nbsp;continent,&nbsp;a&nbsp;new&nbsp;nation,&nbsp;conceived&nbsp;in&nbsp;liberty,&#8221;</span><span style="FONT-WEIGHT: bold">)</span>&nbsp;<span style="FONT-WEIGHT: bold">&amp;</span>&nbsp;EOL&nbsp;<span style="FONT-WEIGHT: bold">&amp;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tr<span style="FONT-WEIGHT: bold">(</span><span style="COLOR: #cc0000">&#8220;and&nbsp;dedicated&nbsp;to&nbsp;the&nbsp;proposition&nbsp;that&nbsp;`all&nbsp;men&nbsp;are&nbsp;created&nbsp;equal&#8217;.&#8221;</span><span style="FONT-WEIGHT: bold">);</span></p>
<p>Fortunately, Understand 2.0 can record editor macros that make repeated tasks easy and possibly fun.</p>
<p>Here is how&hellip;</p>
<p><span id="more-367"></span></p>
<p><strong>Ctrl-Alt-M</strong> toggles recording on / off. This is also available from the Tools-&gt; menu.<br /><strong>Ctrl-M</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; plays the recorded macro.&nbsp; Also available from the Tools-&gt; menu.</p>
<p>I start recording: </p>
<p><strong>Ctrl-Alt-M</strong></p>
<p>The first thing I do is use the editors fast find to find the &ldquo;.&nbsp; I do this with:</p>
<p><strong>ctrl-f &ldquo;&nbsp; ESC&nbsp; &lt;-</strong></p>
<p>Or, in English&hellip; Control-F, double quotation mark, Escape, left arrow.This places me to the left of a &ldquo;</p>
<p>I then add my function text:</p>
<p><strong>tr(</strong></p>
<p>Now I need to find my closing quotation mark:</p>
<p><strong>Ctrl-F &ldquo;&nbsp; Ctrl-F&nbsp; ESC -&gt;</strong></p>
<p>Or, in English&hellip; Control&ndash;F, double quotation mark, Control-F, Escape, Right Arrow. This places me to the right of the closing quotation.&nbsp; </p>
<p>I then close out the function and stop recording:</p>
<p><strong>) CTRL-ALT-M</strong></p>
<p>Now anytime I hit &ldquo;Ctrl-M&rdquo; it will find a left quotation mark and put tr() around the string.</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier"><strong>Note:</strong> For a simple one like this I could probably also use Search-&gt;Find and Replace.</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: courier"><img src="http://scitools.com/blog/smile5.gif" /></p>
]]></content:encoded>
			<wfw:commentRss>http://scitools.com/blog/2008/09/understand-20-new-feature-editor-macros.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Understand 2.0: Favorites</title>
		<link>http://scitools.com/blog/2008/09/understand-20-favorites.html</link>
		<comments>http://scitools.com/blog/2008/09/understand-20-favorites.html#comments</comments>
		<pubDate>Thu, 18 Sep 2008 18:12:55 +0000</pubDate>
		<dc:creator>ken</dc:creator>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[Understand 2.0]]></category>

		<guid isPermaLink="false">http://scitools.com/blog/http:/scitools.com/blog/archives/2008/09/understand-20-favorites.html</guid>
		<description><![CDATA[Understand 2.0 Favorites lets you organize locations (file/line#) or entities (e.g function foo, file foo.cpp) into a named folders. Favorites can be &#8220;project favorites&#8221;, where they are only applicable to the .udb file open when you made them, or &#8220;all project favorites&#8221;, which are available no matter what project you have loaded.&#160; The &#8220;All Projects&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p><em>Understand 2.0</em> Favorites lets you organize locations (file/line#) or entities (e.g function foo, file foo.cpp) into a named folders.</p>
<p>Favorites can be &ldquo;project favorites&rdquo;, where they are only applicable to the .udb file open when you made them, or &ldquo;all project favorites&rdquo;, which are available no matter what project you have loaded.&nbsp; The &ldquo;All Projects&rdquo; variety is useful to me since I have dozens of projects of largely the same source that I use for different testing/evaluation purposes.</p>
<p>Favorites are shown in the &ldquo;Favorites&rdquo; window, which you can show by clicking on the <img alt="2008-09-18 13.55" src="http://scitools.com/blog/wp-content/uploads/mt-old/2008_2D09_2D18_2013.55.jpg" border="0" />&nbsp;toolbar (or by Windows-&gt;Favorites).</p>
<p>I have my favorites organized into three folders:</p>
<p><img alt="2008-09-18 13.56" src="http://scitools.com/blog/wp-content/uploads/mt-old/2008_2D09_2D18_2013.56.jpg" border="0" /></p>
<p>I give a lot of web and in-person demos of <em>Understand, &ldquo;</em>Good Demos&rdquo; is where I store classes, functions, and files that help me simply explain the kinds of things <em>Understand </em>does. For instance, here I have classes and functions and a &ldquo;butterfly&rdquo; view with the [x] Sync box checked. In a demo, I can just click on the favorite and see the graph update auto-magically.</p>
<p><a href="http://scitools.com/blog/wp-content/uploads/mt-old/2008_2D09_2D18_2014.04.jpg"><img alt="2008-09-18 14.04" src="http://scitools.com/blog/wp-content/uploads/mt-old/2008_2D09_2D18_2014.04_thumb.jpg" border="0" /></a></p>
<p>&ldquo;Interfaces&rdquo; provides a handy spot to stash a quick way to see the API&rsquo;s we often work against here. For instance, the &ldquo;Understand database API (udb)&rdquo; or &ldquo;Change API&rdquo;.&nbsp; If I need to know the UDB API details, I just click on it and up comes the source:</p>
<p><a href="http://scitools.com/blog/wp-content/uploads/mt-old/2008_2D09_2D18_2014.07.jpg"><img alt="2008-09-18 14.07" src="http://scitools.com/blog/wp-content/uploads/mt-old/2008_2D09_2D18_2014.07_thumb.jpg" border="0" /></a></p>
<p>&ldquo;ToDo&rdquo; stores places I want to take a peek at again later. Often this is when I find a spot, or a user reports a spot, where a&nbsp; crash or bug can be replicated.&nbsp; It is empty now, but let&rsquo;s pretend I want to come back and look at a spot here in the UDB interface.</p>
<p>First I just click in the editor where I want to remember. Then pull down the Favorites toolbar menu:</p>
<p><img alt="2008-09-18 14.09" src="http://scitools.com/blog/wp-content/uploads/mt-old/2008_2D09_2D18_2014.09.jpg" border="0" /></p>
<p>It asks me to place the favorite, and I specify &ldquo;All Projects&rdquo; and put it inside &ldquo;ToDo&rdquo;:</p>
<p><a href="http://scitools.com/blog/wp-content/uploads/mt-old/2008_2D09_2D18_2014.10.jpg"><img alt="2008-09-18 14.10" src="http://scitools.com/blog/wp-content/uploads/mt-old/2008_2D09_2D18_2014.10_thumb.jpg" border="0" /></a></p>
<p>It is now in my Favorites and I can visit it just by double clicking on it:</p>
<p><img alt="14 2008-09-18 14.11" src="http://scitools.com/blog/wp-content/uploads/mt-old/14_202008_2D09_2D18_2014.11.jpg" border="0" /></p>
<p><img src="http://scitools.com/blog/smile5.gif" /></p>
]]></content:encoded>
			<wfw:commentRss>http://scitools.com/blog/2008/09/understand-20-favorites.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Understand 2.0 New Feature: Graph Toolbar</title>
		<link>http://scitools.com/blog/2008/09/understand-20-new-feature-graph-toolbar.html</link>
		<comments>http://scitools.com/blog/2008/09/understand-20-new-feature-graph-toolbar.html#comments</comments>
		<pubDate>Thu, 18 Sep 2008 15:14:21 +0000</pubDate>
		<dc:creator>ken</dc:creator>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[Understand 2.0]]></category>

		<guid isPermaLink="false">http://scitools.com/blog/http:/scitools.com/blog/archives/2008/09/understand-20-new-feature-graph-toolbar.html</guid>
		<description><![CDATA[Our most frequently asked support question goes something like this: &#8220;I see the graphs on your website, but how do I get them in Understand?&#8221;.&#160; With Understand 1.4 the only way to get a call tree other other graphical view was to right click on the function and choose &#8220;Graphical Views-&#62;Call Tree&#8221;.&#160; That is totally [...]]]></description>
			<content:encoded><![CDATA[<p>Our most frequently asked support question goes something like this: &ldquo;I see the graphs on your website, but how do I get them in <em>Understand</em>?&rdquo;.&nbsp; With <em>Understand 1.4</em> the only way to get a call tree other other graphical view was to right click on the function and choose &ldquo;Graphical Views-&gt;Call Tree&rdquo;.<em>&nbsp; </em>That is totally obvious to some new users and to others a huge mystery. And that is understandable. Not everybody has used applications with right click context menus.</p>
<p><em>Understand 2.0</em> keeps the context menus, but also adds a new Graph Toolbar:</p>
<p><img alt="2008-09-18 11.08" src="http://scitools.com/blog/wp-content/uploads/mt-old/2008_2D09_2D18_2011.08.jpg" border="0" /></p>
<p>This toolbar item updates whenever you click on an entity anywhere in source or any of Understand&rsquo;s graphical or other informational views.</p>
<p>To get a graph, just pull down the menu:</p>
<p><img alt="2008-09-18 11.11" src="http://scitools.com/blog/wp-content/uploads/mt-old/2008_2D09_2D18_2011.11.jpg" border="0" /></p>
<p>and the graph will pop right up.</p>
<p><a href="http://scitools.com/blog/wp-content/uploads/mt-old/CIMG0555_small_.png"></a></p>
<p><a href="http://scitools.com/blog/wp-content/uploads/mt-old/CIMG0555_small_.png"><img alt="CIMG0555_small_" src="http://scitools.com/blog/wp-content/uploads/mt-old/CIMG0555_small__thumb2.jpg" border="0" /></a></p>
<p><img src="http://scitools.com/blog/smile5.gif" /></p>
<p><a href="http://scitools.com/blog/wp-content/uploads/mt-old/CIMG0555_small_.png"></a></p>
]]></content:encoded>
			<wfw:commentRss>http://scitools.com/blog/2008/09/understand-20-new-feature-graph-toolbar.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New!  Butterfly Graphs</title>
		<link>http://scitools.com/blog/2008/09/new-butterfly-graphs.html</link>
		<comments>http://scitools.com/blog/2008/09/new-butterfly-graphs.html#comments</comments>
		<pubDate>Mon, 08 Sep 2008 18:38:07 +0000</pubDate>
		<dc:creator>ken</dc:creator>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[Understand 2.0]]></category>

		<guid isPermaLink="false">http://scitools.com/blog/http:/scitools.com/blog/archives/2008/09/new-butterfly-graphs.html</guid>
		<description><![CDATA[Our hierarchy charts have always shown one relationship, for instance &#8220;Call&#8221;, on a chart. We&#8217;ve just introduced &#8220;Butterfly&#8221; charts, which will show two relationships that are the inverse of each other. For instance, &#8220;Call and CallBy&#8221;, &#8220;Include and Include By&#8221;, &#8220;Derived and Derived By&#8221;. For instance, here is a butterfly chart for a function (click [...]]]></description>
			<content:encoded><![CDATA[<p>Our hierarchy charts have always shown one relationship, for instance &ldquo;Call&rdquo;, on a chart. We&rsquo;ve just introduced &ldquo;Butterfly&rdquo; charts, which will show two relationships that are the inverse of each other. For instance, &ldquo;Call and CallBy&rdquo;, &ldquo;Include and Include By&rdquo;, &ldquo;Derived and Derived By&rdquo;.</p>
<p>For instance, here is a butterfly chart for a function (click on it to see it bigger):</p>
<p><a href="http://scitools.com/blog/wp-content/uploads/mt-old/2008_2D09_2D08_2014.34.jpg"><img alt="2008-09-08 14.34" src="http://scitools.com/blog/wp-content/uploads/mt-old/2008_2D09_2D08_2014.34_thumb.jpg" border="0" /></a></p>
<p>The function queried was &ldquo;add_data_in_datablock&rdquo;. Note that it is in the middle, with calls it makes to the right, and those it is called-by to the left.</p>
<p>These graphs are available for every entity that we have hierarchical graphs for.</p>
<p><img src="http://scitools.com/blog/smile5.gif" /></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://scitools.com/blog/2008/09/new-butterfly-graphs.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>New!  Splitting Workspaces</title>
		<link>http://scitools.com/blog/2008/09/new-splitting-workspaces.html</link>
		<comments>http://scitools.com/blog/2008/09/new-splitting-workspaces.html#comments</comments>
		<pubDate>Mon, 08 Sep 2008 18:27:11 +0000</pubDate>
		<dc:creator>ken</dc:creator>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[Understand 2.0]]></category>

		<guid isPermaLink="false">http://scitools.com/blog/http:/scitools.com/blog/archives/2008/09/new-splitting-workspaces.html</guid>
		<description><![CDATA[We just added this toolbar section to the Understand 2.0 toolbar: It controls workspace splitting. Here are some examples. Click on them to see them bigger. Single document view workspace: Split workspace &#8211; horizontal &#38; vertical &#160; &#160; I love this feature. For instance, in this one&#160;with the check &#160;box checked in the upper right, [...]]]></description>
			<content:encoded><![CDATA[<p>We just added this toolbar section to the <em>Understand 2.0</em> toolbar:</p>
<p><img alt="2008-09-08 14.11" src="http://scitools.com/blog/wp-content/uploads/mt-old/2008_2D09_2D08_2014.11.jpg" border="0" /></p>
<p>It controls workspace splitting. Here are some examples. Click on them to see them bigger.</p>
<p>Single document view workspace:</p>
<p><a href="http://scitools.com/blog/wp-content/uploads/mt-old/2008_2D09_2D08_2014.15.jpg"></a></p>
<p><a href="http://scitools.com/blog/wp-content/uploads/mt-old/2008_2D09_2D08_2014.17.jpg"><img height="163" alt="2008-09-08 14.17" src="http://scitools.com/blog/wp-content/uploads/mt-old/2008_2D09_2D08_2014.17_thumb1.jpg" width="288" border="0" /></a></p>
<p>Split workspace &ndash; horizontal &amp; vertical</p>
<p><a href="http://scitools.com/blog/wp-content/uploads/mt-old/2008_2D09_2D08_2014.18.jpg"><img height="169" alt="2008-09-08 14.18" src="http://scitools.com/blog/wp-content/uploads/mt-old/2008_2D09_2D08_2014.18_thumb1.jpg" width="269" border="0" /></a>&nbsp; <a href="http://scitools.com/blog/wp-content/uploads/mt-old/2008_2D09_2D08_2014.20.jpg"><img alt="2008-09-08 14.20" src="http://scitools.com/blog/wp-content/uploads/mt-old/2008_2D09_2D08_2014.20_thumb.jpg" border="0" /></a>&nbsp; </p>
<p><span id="more-363"></span></p>
<p>I love this feature. For instance, in this one&nbsp;with the check <img alt="2008-09-08 14.22" src="http://scitools.com/blog/wp-content/uploads/mt-old/2008_2D09_2D08_2014.22.jpg" border="0" />&nbsp;box checked in the upper right, I can walk the butterfly (calls and callbys on same graph) view of this function and visit source in the left pane. Handy.</p>
<p>Similarly, I can setup a class browser with lots of useful information about classes in like this:</p>
<p><a href="http://scitools.com/blog/wp-content/uploads/mt-old/2008_2D08_2D22_2016.46.jpg"><img alt="2008-08-22 16.46" src="http://scitools.com/blog/wp-content/uploads/mt-old/2008_2D08_2D22_2016.46_thumb.jpg" border="0" /></a></p>
<p>Here I have the 4 graphs (Declaration, UML, Derivation and Derived From) up and synched. This means they follow whatever I click on.&nbsp; </p>
<p>To move tabs from one workspace to the other, just right click on the tab. In the near future you will be able to drag tabs between the splits. We also intend to provide more than one workspace (that can then be split and moved to alternate monitors).</p>
<p><img src="http://scitools.com/blog/smile5.gif" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://scitools.com/blog/2008/09/new-splitting-workspaces.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tip: Understand Context menu in EMACS, Visual Studio and Vi</title>
		<link>http://scitools.com/blog/2008/08/understand-context-menu-in-ema.html</link>
		<comments>http://scitools.com/blog/2008/08/understand-context-menu-in-ema.html#comments</comments>
		<pubDate>Wed, 13 Aug 2008 19:14:03 +0000</pubDate>
		<dc:creator>KevinG</dc:creator>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[Understand 2.0]]></category>
		<category><![CDATA[external editor]]></category>

		<guid isPermaLink="false">http://scitools.com/blog/http:/scitools.com/blog/archives/2008/08/tip-understand-context-menu-in-emacs-visual-studio-and-vi.html</guid>
		<description><![CDATA[In Using Understand with an external editor &#8211; SlickEdit I explained how to hook up Understand to run with SlickEdit. As a follow up, here are the commands to setup the same Understand menu inside of EMACS, Visual Studio, and Vi. Do let me know if I made any mistakes here since I&#8217;m not an [...]]]></description>
			<content:encoded><![CDATA[<p>In <a href="http://scitools.com/blog/2008/05/using-understand-with-an-exter-2.html" target="_blank">Using Understand with an external editor &#8211; SlickEdit</a> I explained how to hook up Understand to run with SlickEdit. As a follow up, here are the commands to setup the same Understand menu inside of EMACS, Visual Studio, and Vi. Do let me know if I made any mistakes here since I&#8217;m not an expert on these editors.</p>
<p><span id="more-359"></span></p>
<h3>EMACS</h3>
<p>Add the following lisp to your .emacs file to open the Understand right click menu when C-c u is pressed (thanks for the correction Guillaume):    <br />Note: this assumes the understand executable is in your path</p>
<blockquote><p><code>(defun understand-word-at-point ()        <br />&#160; &quot;Run understand menu for the word at point.&quot;         <br />&#160; (interactive)         <br />&#160; (setq understand-command         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; (concat         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &quot;understand -existing -contextmenu &quot; (buffer-file-name)         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &quot;-text &quot;(current-word)&quot; -line &quot;         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; (number-to-string (count-lines (point-min) (point)))         <br /></code><code>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </code><code>&quot; -col &quot; (number-to-string (current-column))        <br />&#160;&#160; )&#160;&#160;&#160;&#160; )         <br />&#160; (shell-command understand-command)         <br />)         <br />(global-set-key &quot;\C-cu&quot; 'understand-word-at-point)</code></p>
</blockquote>
<p><code></code></p>
<p><code></code></p>
<h3>Visual Studio</h3>
<p>Step 1: Add Understand to Visual Studio&#8217;s External Tools</p>
<ul>
<li>On the Tools menu, click External Tools </li>
<li>Click Add </li>
<li>Type &quot;&amp;Understand Menu&quot; in the Title box </li>
<li>Type &quot;C:\Program Files\STI\bin\pc-win32\understand.exe&quot; in the Command box </li>
<li>Type &quot;-existing -contextmenu $(TargetPath) -line $(CurLine) -col $(CurCol) -name $(CurText) in the Arguments box </li>
<li>Click OK </li>
</ul>
<p> Step 2: Add a keyboard shortcut to Visual Studio
<ul>
<li>On the Tools menu, Click Options </li>
<li>Expand the Environment Folder and select Keyboard </li>
<li>Type &quot;Tools.ExternalCommand&quot; in the box labeled &quot;Show commands containing&quot; </li>
<li>Select the ExternalCommand associated with the &quot;&amp;Understand Menu&quot; External Tool. If &quot;&amp;Understand Menu&quot; was 8th on the list (default) then select Tools.ExternalCommand8 </li>
<li>Click the box labeled &quot;Press shortcut key(s)&quot;. Type in a keyboard combination such as Ctrl+U or Ctrl+` </li>
<li>Click Assign </li>
<li>Click Ok </li>
</ul>
<h3>Vi</h3>
<p>Add the following to your vi startup file -.vimrc, _vimrc, etc. Note: this assumes the understand executable is in your path:</p>
<p><strong>Linux/Unix</strong> <img src='http://scitools.com/blog/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> courtesy of Devin)</p>
<blockquote><p>:command! UMenu silent: exe &quot;!understand -existing -contextmenu %:p -line &quot; line(&#8216;.&#8217;) &quot; -col &quot; col(&#8216;.&#8217;) &quot; -text &lt;cword&gt; &amp;&quot; | redraw!      <br />map &lt;C-u&gt; :UMenu&lt;CR&gt;</p>
</blockquote>
<p><strong>Windows: </strong>(thanks for the help Ilguiz):     </p>
<blockquote><p>command UMenu silent: exe join(['!understand -existing -contextmenu &quot;$(cygpath -w &quot;%:p&quot;)&quot; -line ', line('.'), ' -col ', col('.'), ' -text ', '&lt;cword&gt;', ' &amp;']) | redraw!      <br />map &lt;C-u&gt; :UMenu&lt;CR&gt;</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://scitools.com/blog/2008/08/understand-context-menu-in-ema.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>New Feature: Making Snapshots from TrackBack</title>
		<link>http://scitools.com/blog/2008/07/new-feature-making-snapshots-from-trackback.html</link>
		<comments>http://scitools.com/blog/2008/07/new-feature-making-snapshots-from-trackback.html#comments</comments>
		<pubDate>Thu, 31 Jul 2008 00:19:06 +0000</pubDate>
		<dc:creator>ken</dc:creator>
				<category><![CDATA[Documentation]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Understand 2.0]]></category>

		<guid isPermaLink="false">http://scitools.com/blog/http:/scitools.com/blog/archives/2008/07/new-feature-making-snapshots-from-trackback.html</guid>
		<description><![CDATA[I&#8217;ve covered making Snapshots from the Current Database and by checking out source to an alternate location in earlier posts.&#160; Now I&#8217;m going to tell you the EASY way to do it&#8230;. Just use TrackBack. Assuming you have had TrackBack B443 or later monitoring your source trees, you can recreate the state of any monitored [...]]]></description>
			<content:encoded><![CDATA[<p>I&rsquo;ve covered making Snapshots from the Current Database and by checking out source to an alternate location in earlier posts.&nbsp; Now I&rsquo;m going to tell you the EASY way to do it&hellip;. Just use <strong>TrackBack</strong>. </p>
<p><img alt="2008-07-30 19.42" src="http://scitools.com/blog/wp-content/uploads/mt-old/2008_2D07_2D30_2019.42.jpg" border="0" /></p>
<p>Assuming you have had TrackBack B443 or later monitoring your source trees, you can recreate the state of any monitored directory at any time. This includes file modification, file existance, file renaming, everything.</p>
<p><span id="more-357"></span></p>
<p><strong>The Problem &ndash; I don&rsquo;t have a snapshot for the time period. </strong></p>
<p>I&rsquo;m trying to see if a bug reported has been fixed. I know the area and&nbsp;I know we made changes for a similar bug, I just need to see if the changes cover the situation the user reports. He is using B453&hellip; my source is at B456+local changes.&nbsp;I&rsquo;d like to easily compare the area affected between B453 and now.</p>
<p>I will need to grab the source for B453, build a snapshot, and compare the &ldquo;Managed DB API&rdquo; architectural area&nbsp;for changes.</p>
<p><strong>Getting The Source &ndash; Piece of Cake</strong></p>
<p>First I choose &ldquo;<strong>Change-&gt;Make a Snapshot-&gt;From Any Point in Time</strong>&rdquo;</p>
<p>If this is your first snapshot of this project it will caution you that Project Portability settings cannot be changed after making a snapshot.&nbsp; Don&rsquo;t worry about that. Just click through it.</p>
<p>Now I&rsquo;m basically asked &ldquo;When&rdquo;, using th the calendar pulldown I specify the 23rd at 1700 hours (end of programming day):</p>
<p><img alt="2008-07-30 19.47" src="http://scitools.com/blog/wp-content/uploads/mt-old/2008_2D07_2D30_2019.47.jpg" border="0" /></p>
<p>&nbsp;</p>
<p>Understand and TrackBack then work together to build up a preview of what the new snapshot will contain:</p>
<p><img alt="2008-07-30 19.49" src="http://scitools.com/blog/wp-content/uploads/mt-old/2008_2D07_2D30_2019.49.jpg" border="0" /></p>
<p>The first box is files in common. The second is files that existed in B453 but not in the current source. The third is files that exist now but didn&rsquo;t back then.</p>
<p>This looks right to me. I accept it.</p>
<p>It then grabs the source needed for the snapshot from the TrackBack history and starts parsing the snapshot:</p>
<p><img alt="2008-07-30 19.51" src="http://scitools.com/blog/wp-content/uploads/mt-old/2008_2D07_2D30_2019.51.jpg" border="0" /></p>
<p>&nbsp;Elapsed time to start&hellip; about 1 second.&nbsp; I didn&rsquo;t have to use SVN, I didn&rsquo;t have to make a directory, I just need to know what TIME I wanted to compare against.</p>
<p><strong>Snapshot Made &ndash; now find the changes</strong></p>
<p>I could, and usually would, just compare all of my current database against the snapshot I made for B453.&nbsp; But in this case I know the area I want to check. </p>
<p>So I&rsquo;ll choose &ldquo;<strong>Change-&gt;Compare Snapshots</strong>&rdquo;&nbsp; and specify the particular area I want to search changes for:</p>
<p><a href="http://scitools.com/blog/wp-content/uploads/mt-old/2008_2D07_2D30_2020.00.jpg"></a><a href="http://scitools.com/blog/wp-content/uploads/mt-old/2008_2D07_2D30_2020.15.jpg"><img alt="2008-07-30 20.15" src="http://scitools.com/blog/wp-content/uploads/mt-old/2008_2D07_2D30_2020.15_thumb.jpg" border="0" /></a><a href="http://scitools.com/blog/wp-content/uploads/mt-old/2008_2D07_2D30_2019.57.jpg"></a></p>
<p>&nbsp;</p>
<p>I&rsquo;m then presented with the changes to that area and I check them out:</p>
<p><a href="http://scitools.com/blog/wp-content/uploads/mt-old/2008_2D07_2D30_2020.17.jpg"><img alt="2008-07-30 20.17" src="http://scitools.com/blog/wp-content/uploads/mt-old/2008_2D07_2D30_2020.17_thumb.jpg" border="0" /></a></p>
<p>After perusing them I decide the bug is not fixed and I make a note to talk to [new]Rob, the owner of that code, &nbsp;tomorrow to make sure he gets this one fixed before the next build.</p>
<p><img src="http://scitools.com/blog/smile5.gif" /></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://scitools.com/blog/2008/07/new-feature-making-snapshots-from-trackback.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tip: Making a custom User Tool</title>
		<link>http://scitools.com/blog/2008/07/tip-making-a-custom-user-tool.html</link>
		<comments>http://scitools.com/blog/2008/07/tip-making-a-custom-user-tool.html#comments</comments>
		<pubDate>Tue, 29 Jul 2008 20:33:02 +0000</pubDate>
		<dc:creator>KevinG</dc:creator>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[Understand 2.0]]></category>
		<category><![CDATA[user tools]]></category>

		<guid isPermaLink="false">http://scitools.com/blog/http:/scitools.com/blog/archives/2008/07/tip-making-a-custom-user-tool.html</guid>
		<description><![CDATA[User tools are a convenient way to quickly access external tools or other applications. In an earlier post, Ken shared his SVN User Tools, which provide quick access to version control commands right inside the application.&#160; If you use a different version control system, or want to launch another application, you&#8217;ll need to know how [...]]]></description>
			<content:encoded><![CDATA[<p>User tools are a convenient way to quickly access external tools or other applications. In an earlier post, Ken shared his <a href="http://scitools.com/blog/2008/06/tip-setting-up-user-tools-for.html" target="_blank">SVN User Tools</a>, which provide quick access to version control commands right inside the application.&#160; If you use a different version control system, or want to launch another application, you&#8217;ll need to know how to make your own user tools.</p>
<p><span id="more-356"></span></p>
<h1>Launch an External Application</h1>
<p>For example, suppose I want to open the current file in Notepad. First select Tools | Configure User Tools</p>
<p><a href="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/TipMakingacustomUserTool_C7F5/image_2.png"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="112" alt="image" src="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/TipMakingacustomUserTool_C7F5/image_thumb.png" width="279" border="0" /></a>&#160;</p>
<p>Enter the name you want to appear for your tool, and the executable that is being launched:</p>
<p><a href="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/TipMakingacustomUserTool_C7F5/image_6.png"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="70" alt="image" src="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/TipMakingacustomUserTool_C7F5/image_thumb_2.png" width="272" border="0" /></a> </p>
<p>The parameters section is a little more tricky. What you enter here will vary wildly based on what application you are launching. If you look at the arrow on the right of the parameters checkbox, you will see a list of variables that Understand can pass to another application.</p>
<p><a href="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/TipMakingacustomUserTool_C7F5/image_8.png"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="129" alt="image" src="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/TipMakingacustomUserTool_C7F5/image_thumb_3.png" width="190" border="0" /></a> </p>
<p>In this case we want to pass Notepad the name of the current file, so we select <strong>$CurFile</strong></p>
<p>If the application needs a working directory specified, you can set that, and if you would like to specify an icon for the tool, you can select something different than the application. These settings aren&#8217;t needed for this tool, so I leave them alone. Likewise there is no command line output and this is not an STI Perl script, so I&#8217;ll leave those checkboxes blank.</p>
<p>Finally we need to decide where we want the tool to appear inside of Understand. There are several option. </p>
<p><a href="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/TipMakingacustomUserTool_C7F5/image_10.png"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="65" alt="image" src="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/TipMakingacustomUserTool_C7F5/image_thumb_4.png" width="244" border="0" /></a> </p>
<table cellspacing="0" cellpadding="0" width="700" border="0">
<tbody>
<tr>
<td valign="top" width="233"><strong>Pop up Menu</strong>           <br />Appears anywhere you right click</td>
<td valign="top" width="233"><strong>Main Menu</strong>           <br />Appears under Tools | User Tools</td>
<td valign="top" width="233"><strong>Toolbar</strong>           <br />Appears in the User Tools Toolbar</td>
</tr>
<tr>
<td valign="top" width="233"><a href="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/TipMakingacustomUserTool_C7F5/image_14.png"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="85" alt="image" src="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/TipMakingacustomUserTool_C7F5/image_thumb_6.png" width="244" border="0" /></a></td>
<td valign="top" width="233"><a href="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/TipMakingacustomUserTool_C7F5/image_18.png"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="51" alt="image" src="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/TipMakingacustomUserTool_C7F5/image_thumb_8.png" width="244" border="0" /></a><a href="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/TipMakingacustomUserTool_C7F5/image_16.png"></a></td>
<td valign="top" width="233"><a href="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/TipMakingacustomUserTool_C7F5/image_18.png"></a><a href="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/TipMakingacustomUserTool_C7F5/image_16.png"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="56" alt="image" src="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/TipMakingacustomUserTool_C7F5/image_thumb_7.png" width="114" border="0" /></a></a></td>
</tr>
</tbody>
</table>
<p>This tool will now open the current file in Notepad. Here are the complete settings.</p>
<p><a href="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/TipMakingacustomUserTool_C7F5/image_20.png"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="217" alt="image" src="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/TipMakingacustomUserTool_C7F5/image_thumb_9.png" width="244" border="0" /></a> </p>
<p>Here are a couple more examples of some basic tools.</p>
<h1>Launch Build System</h1>
<p><a href="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/TipMakingacustomUserTool_C7F5/image_22.png"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="189" alt="image" src="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/TipMakingacustomUserTool_C7F5/image_thumb_10.png" width="426" border="0" /></a> </p>
<p>&#160;</p>
<p>In this sample I want to launch my Make script. Note the parameter. In this case I don&#8217;t want to send it a file name, I want it to ask me what to build. The $Prompt parameters will ask you for input. When I run this tool, it will ask me for my build target, which is what I wanted</p>
<p><a href="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/TipMakingacustomUserTool_C7F5/image_24.png"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="123" alt="image" src="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/TipMakingacustomUserTool_C7F5/image_thumb_11.png" width="384" border="0" /></a> </p>
<p>Then the build output displays in the Understand command window. The great part of building in Understand is that if there are errors, you can simply click on the error message and Understand will jump straight to that line of code in the editor</p>
<p><a href="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/TipMakingacustomUserTool_C7F5/image_26.png"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="38" alt="image" src="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/TipMakingacustomUserTool_C7F5/image_thumb_12.png" width="918" border="0" /></a> </p>
<h1>Code Lookup</h1>
<p>In this sample, I want to lookup the selected text in MSDN&#8217;s library.&#160; There are many different ways to do this, but I think I&#8217;ll launch firefox with the following parameters:</p>
<p>http://www.google.com/search?q=<strong>$CurSelection</strong> site:msdn.microsoft.com+OR+site:support.microsoft.com</p>
<p><a href="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/TipMakingacustomUserTool_C7F5/image_34.png"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="189" alt="image" src="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/TipMakingacustomUserTool_C7F5/image_thumb_16.png" width="420" border="0" /></a> </p>
<p>This will search for the current highlighted text with Google on the MSDN site and the support site.</p>
<p><a href="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/TipMakingacustomUserTool_C7F5/image_32.png"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="80" alt="image" src="http://scitools.com/blog/wp-content/uploads/mt-old/WindowsLiveWriter/TipMakingacustomUserTool_C7F5/image_thumb_15.png" width="197" border="0" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://scitools.com/blog/2008/07/tip-making-a-custom-user-tool.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

