<?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>Elegant Code &#187; Tools &amp; Utilities</title>
	<atom:link href="http://elegantcode.com/tag/tools-utilities/feed/" rel="self" type="application/rss+xml" />
	<link>http://elegantcode.com</link>
	<description></description>
	<lastBuildDate>Tue, 20 Jul 2010 12:52:47 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Tool List 2008</title>
		<link>http://elegantcode.com/2008/12/08/tool-list-2008/</link>
		<comments>http://elegantcode.com/2008/12/08/tool-list-2008/#comments</comments>
		<pubDate>Tue, 09 Dec 2008 03:58:23 +0000</pubDate>
		<dc:creator>Chris Brandsma</dc:creator>
				<category><![CDATA[Esoterica]]></category>
		<category><![CDATA[Tools and Utilities]]></category>
		<category><![CDATA[Tools & Utilities]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2008/12/08/tool-list-2008/</guid>
		<description><![CDATA[I recently received the opportunity to reinstall my operating system on my work laptop.  Good times, completely hosed.  So I thought I would take a moment to document what went back onto my laptop after the format and reinstall.  Essentially, this is my productivity tools list.
Operating system

Windows Vista.  I&#8217;ll take some flack for this one, [...]]]></description>
			<content:encoded><![CDATA[<p>I recently received the opportunity to reinstall my operating system on my work laptop.  Good times, completely hosed.  So I thought I would take a moment to document what went back onto my laptop after the format and reinstall.  Essentially, this is my productivity tools list.</p>
<h3>Operating system</h3>
<ul>
<li>Windows Vista.  I&#8217;ll take some flack for this one, but I still like this OS.  And the boot time is screaming fast before you load every tool/service under the sun on it.</li>
</ul>
<h3>Tools and Utilities</h3>
<ul>
<li><a href="http://www.windowslive.com/explore/writer">Windows Live Writer</a>.  I&#8217;m listing this one because that is what I&#8217;m writing the blog post with.  Simply the best blog writer that I have found so far.  Works with WordPress, Blogger, and many more tools.  There are a few other tools in the Live suite that are also cool.  SkyDrive, Photo Gallery, and that  messenger thing are nice.</li>
<li><a href="http://skype.com/">Skype</a>.  This is the reason I don&#8217;t use Messenger anymore.  I have Skype, which does the same thing plus more.  This tool allowed me to finally drop my home phone (coupled wih a pair of cell phones).</li>
<li>Office 2007.  Word, Excel, Outlook, OneNote, and PowerPoint.  There is other stuff there, oh well.  Those are the ones I use.
<ul>
<li><a href="http://www.xobni.com/">Xobni</a>.  This is an add-on for Outlook that gives you metrics and stuff for email.  If you live in Outlook, you will love this tool. (Look, it is inbox spelled backwards!)</li>
<li><a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=F1FC413C-6D89-4F15-991B-63B07BA5F2E5&amp;displaylang=en">Microsoft Office Save as PDF</a>. The law suite over this tool made me hate Adobe forever.  This should be installed with Office, no excuse.</li>
</ul>
</li>
<li><a href="http://www.bayden.com/SlickRun/">SlickRun</a>.  There are many launchers out there.  This one is simply an oldie-but-goodie.</li>
<li><a href="http://technet.microsoft.com/en-us/sysinternals/default.aspx">SysInternals</a>.  All of it. Easier now that there is a single download for all of the tools.  AutoRun and ProcExplorer are the ones I find myself using more and more.</li>
<li><a href="http://www.getpaint.net/">Paint.Net</a>.  Simply a better paint program.</li>
<li><a href="http://www.foxitsoftware.com/pdf/rd_intro.php">FoxIt Reader</a>.  Pdf Reader.  Adobe Acrobat might not be as bad as it used to be, I don&#8217;t care.  This pdf reader is better than Acrobat ever was.</li>
<li><a href="http://www.mozilla.com/en-US/firefox/">FireFox</a>.  Web Browser.  I&#8217;m not so much anti-IE7 as I am pro-Firefox.  When it comes to picking technologies, I believe in following the most vibrant community.  That is Firefox.  Better CSS support and faster Javascript doesn&#8217;t hurt either.  But it is the add-ons where Firefox really shines&#8230;
<ul>
<li><a href="http://getfirebug.com/">FireBug</a>:  Firefox add-on. I&#8217;m a web developer.  If you are a web developer and don&#8217;t have this add-on you aren&#8217;t taking yourself seriously.  Hands down the best browser add-on on the planet.  In fact, the IE8 team liked it so much they stole it outright (and I couldn&#8217;t be happier).
<ul>
<li>Y-Slow: an add-on just for FireBug, create by Yahoo.  Designed to tell you why your web page is so blasted slow.</li>
</ul>
</li>
<li><a href="http://www.ideashower.com/ideas/launched/read-it-later/">Read-it-later</a>: add on that allows you to save bookmarks and share them between multiple computers.  Very well done.</li>
<li><a href="http://adblockplus.org/en/">Adblock Plus</a>:  Ads? What ads?</li>
</ul>
</li>
<li><a href="http://www.7-zip.org/">7-Zip</a>: Zip Compression tool, and free.  I like as much as WinZip or I wouldn&#8217;t list it.</li>
<li><a href="http://filezilla-project.org/">FileZilla</a>: FTP client.  Not everyone needs one of these&#8230;but I do.</li>
<li><a href="http://www.google.com/chrome">Google Chrome</a>.  I&#8217;m a glutton for punishment. I install every windows browser out there.  And I kind of like this one.  It has some significant differences from FireFox.</li>
<li><a href="http://www.opera.com/">Opera</a>.  See above.  Probably the most standards compliant browser out there.</li>
<li><a href="http://silverlight.net/">SilverLight</a>.  I&#8217;m a Microsoft fan box.  I admit it.  And this one is just cool.</li>
<li><a href="http://www.codesector.com/teracopy.php">TeraCopy</a>.  Copying files is a major weakness in Vista (and a core utility of what a OS is supposed to do well).  TeraCopy fixes some of that.</li>
<li><a href="http://notepad-plus.sourceforge.net/uk/site.htm">Notepad++</a>.  Because someone had to make a better notepad.  I used to use <a href="http://www.contexteditor.org/index.html">ConTEXT</a> (I loved ConText), but the updates have stopped.  Plus the add-ons for Notepad++ do so much more.</li>
<li><a href="http://www.freedownloadmanager.org/">Free Download Manager</a>. You might not realize how much better downloading files from the Internet could be, but this tool is just that.</li>
<li><a href="http://www.twhirl.org/">twirl</a>. My twitter tool of choice.  Written in Adobe Air, it is a good ambassador for the product.</li>
<li><a href="http://picasa.google.com/">Picasa</a>.  Picture management and adjustment tool so easy even my wife loves it.</li>
</ul>
<h3>Developer Tools</h3>
<p>I am a software developer.  My job centers around the windows/.net universe.  WinForms, WebForms, WPF, Silverlight, etc.  That is what I do.  Don&#8217;t be mad if your favorite Java/Ruby/PHP/Objective C tool isn&#8217;t in this list.</p>
<ul>
<li>Visual Studio 2008.  Obviously.  This is my work horse.  But I did not install Visual Studio 2005.  I&#8217;m hoping to make a clean break away from that one.</li>
<li><a href="http://www.jetbrains.com/resharper">ReSharper</a>.  I don&#8217;t code without it.  But, if you have DevExpress CodeRush and Refactor I give you a free pass.</li>
<li>SQL Server 2008.  Did not install 2005 (yet), and hope not to.  This is still my go-to database of choice.  BTW: this also installs PowerShell out of the box.</li>
<li><a href="http://www.microsoft.com/expression/products/Overview.aspx?key=blend">Expression Suite.  Especially Blend</a>.  I&#8217;m heading more and more to Silverlight and WPF.  I need this tool.</li>
<li><a href="http://tortoisesvn.tigris.org/">TortoiseSVN</a>.  Source control UI for SubVersion.  I love this one.</li>
<li><a href="http://www.visualsvn.com/server/">Visual SVN Server</a>.  If you need a Subversion server, and you are on windows, this is the one to get.</li>
<li><a href="http://www.sourcegear.com/diffmerge/">SourceGear DiffMerge.</a> I love TortoiseSVN.  I hate their merge tool.  This one make the pain go away.</li>
<li><a href="http://www.red-gate.com/products/reflector/">Reflector</a>.  I can&#8217;t believe that .net developers still don&#8217;t know about this tool.  RedGate like it so much they bought it.</li>
<li><a href="http://litmusapp.com/labs">CSS Vista</a>.  Quick way to check your CSS in FireFox and IE&#8230;and adjust the css.  Wonderful tool.</li>
<li><a href="http://www.blumentals.net/csstool/">Free CSS Toolbox</a>.  I just started playing with this tool a month back.  Very nice.</li>
<li><a href="http://www.jetbrains.com/profiler/index.html">dotTrace</a>. Another JetBrains tool makes the list.  Best .Net profiler I&#8217;ve tried.</li>
<li>TeamCity. Another JetBrains tool make the list. Continuous Integration.  If you don&#8217;t know what that is, you should look it up.</li>
<li><a href="http://www.nunit.org/index.php">NUnit</a>.  There are other Unit Testing frameworks out there, but I keep coming back to this one.  Mainly because of ReSharper integration.  Looks like version 2.5 will be released soon as well.</li>
<li><a href="http://ayende.com/projects/rhino-mocks.aspx">Rhino Mocks</a>.  If you say you are TDD, but don&#8217;t know about mock objects, you are not TDD.</li>
<li><a href="http://www.linqpad.net/">LinqPad</a>.  You would think this is LINQ specific, but it isn&#8217;t.  This is a full on .Net notepad.</li>
<li><a href="http://www.fiddler2.com/fiddler2/">Fiddler2</a>. A Web traffic debugger.  When you need it, you really need it.</li>
<li><a href="http://www.wireshark.org/">WireShark</a>.  Similar to Fiddler, but covers anything that travels over a network card.</li>
<li>Sybase IAnywhere.  This is my companies standard database.  Not a bad tool, but the management tools could be a lot better.</li>
<li><a href="http://www.vmware.com/products/player/">VMWare Player</a>.  In development, virtual machines are a fact of life.</li>
<li><a href="http://www.microsoft.com/windows/downloads/virtualpc/default.mspx">Window Virtual PC 2007</a>.  See above.</li>
<li><a href="http://www.mygenerationsoftware.com">MyGeneration</a>.  Code Generators are cool.</li>
<li><a href="http://www.codesmithtools.com/">CodeSmith Pro</a>. See above&#8230;but with a better syntax for creating your own custom files.
<ul>
<li>Note: <a href="http://www.hanselman.com/blog/T4TextTemplateTransformationToolkitCodeGenerationBestKeptVisualStudioSecret.aspx">T4</a> comes with Visual Studio.  I&#8217;m still learning that one.</li>
</ul>
</li>
<li><a href="http://www.apexsql.com/">Apex SQL Studio</a>.  Similar to <a href="http://www.red-gate.com/">RedGate</a>.  Does cool stuff with SQL Server.  I&#8217;m sticking with this until I can get Visual Studio Team System Data Dude.</li>
<li><a href="http://www.daemon-tools.cc/dtcc/download.php">DaemonTools</a>.  Runs a CD image as a drive.  Without this, my MSDN subscription would be worthless.</li>
</ul>
<h3>Presentation Stuff</h3>
<ul>
<li><a href="http://technet.microsoft.com/en-us/sysinternals/bb897434.aspx">ZoomIt</a>. Blow up part of your screen so people in the back row can see what your doing.</li>
<li><a href="http://www.techsmith.com/camtasia.asp">Camtasia 3</a>.  I don&#8217;t use this nearly enough.  Screen recorder with sound.</li>
</ul>
<p>OK, that is my list.  Let me know what I missed.</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2008/12/08/tool-list-2008/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Data Dude Extensibility &#8211; How IBM integrated DB2 into Visual Studio</title>
		<link>http://elegantcode.com/2008/06/06/data-dude-extensibility-how-ibm-integrated-db2-into-visual-studio/</link>
		<comments>http://elegantcode.com/2008/06/06/data-dude-extensibility-how-ibm-integrated-db2-into-visual-studio/#comments</comments>
		<pubDate>Fri, 06 Jun 2008 13:52:59 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[SQL]]></category>
		<category><![CDATA[Team System]]></category>
		<category><![CDATA[Tools & Utilities]]></category>
		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2008/06/06/data-dude-extensibility-how-ibm-integrated-db2-into-visual-studio/</guid>
		<description><![CDATA[I am sitting in a room at Tech Ed 208 with about 15 people who got up early enough for this session. I am blown away there aren&#8217;t more people in here, but I guess the after-party at Universal Studios last night kept people in bed late this morning. This session is a joint presentation [...]]]></description>
			<content:encoded><![CDATA[<p>I am sitting in a room at Tech Ed 208 with about 15 people who got up early enough for this session. I am blown away there aren&#8217;t more people in here, but I guess the after-party at Universal Studios last night kept people in bed late this morning. This session is a joint presentation by <a href="http://blogs.msdn.com/gertd/" target="_blank">Gert Drapers</a> (the actual Data Dude) and Brent Gross the from IBM for the DB2 integration project team.</p>
<p>It is clear (and stated) that other RDBMS vendors will follow suit as MS has provided a fundamentally pluggable model for vendors to integrate their DBs into Visual Studio with a provider model. Can you smell Oracle, boys and girls? I can. Gert is being vague about who they are working with. MySQL will be cool.</p>
<p>There are several levels of extensibility:</p>
<ul>
<li>DB Provider</li>
<ul>
<li>This is the actual connectivity to your own RDBMS. This provider is responsible for talking to the VS model layer for the DB project and translating between your DB and the model. </li>
</ul>
<li>VS Features</li>
<ul>
<li>The ability to alter features in Visual Studio, like: </li>
<ul>
<li>Refactorings available for a given provider.</li>
<li>Syntax highlighting</li>
<li>language formatting rules for reverse engineering operations</li>
</ul>
<li>Static analysis rules for your particular SQL language</li>
<ul>
<li>Yes, you get static analysis rules for TSQL. This is the death clock for select * from &#8230;</li>
<li>Static analysis in BD2 SQL may be different than that in MS TSQL</li>
<li>You can write your own static analysis rules in .Net by inheriting from the provided Rule class or *yeah* implementing an interface (are we hearing a theme out of MS?) I suppose if your company were anal enough, you could actually implement your proprietary naming convention rules as static analysis rules. Gert actually did this is an demo by writing a rule that checked column names to ensure they were in Pascal case. Neato. The funny part is when some of the developers in the room started telling him how his demo code could be refactored. Lol.</li>
</ul>
</ul>
<li>Model Extensibility</li>
<ul>
<li>VS actually works against a model of the data store and lets the provider do the translation.</li>
<li>Using the model paradigm for DB development provides full round trip model to implementation support for any given DB.</li>
<li>Gert actually showed a little command line app that looked at a Northwind DB in Access and a different Northwind DB in SQL Server and compared them. There would be very different SQL syntaxes if we were simply comparing creation scripts. The DBs showed as the same. More accurately, the models checked as the same. Cool.</li>
<li>So, I could script the process of taking a DB2 database and migrating it to SQL Server, or visa versa, in this model paradigm.</li>
</ul>
</ul>
<p>This session signaled several things to me.</p>
<ol>
<li>MS products really are being designed with extensibility and integration in mind. No really, this time.</li>
<li>The Data Dude model of working with databases has genuine merit. The days of SSMS (SQL Server Management Studio) and the Query Analyzer fan base are numbered. Treating DBAs as developers really is a better model.</li>
<li>Something different is occurring at MS with the changing of the guard.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2008/06/06/data-dude-extensibility-how-ibm-integrated-db2-into-visual-studio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I&#8217;m on Twitter. Now what?</title>
		<link>http://elegantcode.com/2008/06/04/im-on-twitter-now-what/</link>
		<comments>http://elegantcode.com/2008/06/04/im-on-twitter-now-what/#comments</comments>
		<pubDate>Thu, 05 Jun 2008 04:35:57 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Tools & Utilities]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2008/06/04/im-on-twitter-now-what/</guid>
		<description><![CDATA[I just set up on Twitter and got everything set up, I think.
http://twitter.com/DaddyStarr
So, how do I get the most out of this? Should I switch to Jabber? 
Can I tweet from MSN Messenger? 
Who should I follow? 
Will I care about this in 1 month?
]]></description>
			<content:encoded><![CDATA[<p>I just set up on Twitter and got everything set up, I think.</p>
<p><a title="http://twitter.com/DaddyStarr" href="http://twitter.com/DaddyStarr">http://twitter.com/DaddyStarr</a></p>
<p>So, how do I get the most out of this? Should I switch to Jabber? </p>
<p>Can I tweet from MSN Messenger? </p>
<p>Who should I follow? </p>
<p>Will I care about this in 1 month?</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2008/06/04/im-on-twitter-now-what/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>NDepend &#8211; Static Analysis Made in Heaven</title>
		<link>http://elegantcode.com/2008/06/02/ndepend-static-analysis-made-in-heaven/</link>
		<comments>http://elegantcode.com/2008/06/02/ndepend-static-analysis-made-in-heaven/#comments</comments>
		<pubDate>Mon, 02 Jun 2008 21:38:41 +0000</pubDate>
		<dc:creator>Jan Van Ryswyck</dc:creator>
				<category><![CDATA[Tools & Utilities]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2008/06/02/ndepend-static-analysis-made-in-heaven/</guid>
		<description><![CDATA[What is elegant code? Everyone agrees that this is a rather subjective topic. I wrote down my take on this matter not so long ago. Almost every developer out there (an probably myself included) thinks that their own code is the greatest thing since sliced bread and that code written by other developers is just, [...]]]></description>
			<content:encoded><![CDATA[<p>What is elegant code? Everyone agrees that this is a rather subjective topic. I wrote down <a href="http://elegantcode.com/2008/03/30/elegant-code-essay-contest-winner/" target="_blank">my take</a> on this matter not so long ago. Almost every developer out there (an probably myself included) thinks that their own code is the greatest thing since sliced bread and that code written by other developers is just, well &#8230; old bread with hair on it.</p>
<p>Inheriting the code base of some legacy application that needs to be extended with a ton of new features which should have gone into production yesterday. Sure, we all have our war stories as developers. The first thing we usually do in a situation like this is reading the code. Then after some (short) time, we start complaining against our peers and managers how bad this code base really is. In fact, managers have grown a special skin against this kind of complaints coming from developers. This kind of complaints are not taken seriously by anyone just because it seems like such a subjective matter.</p>
<p>Actually, a good code base that is easy to maintain is not that subjective anymore. Object-oriented design has <a href="http://www.objectmentor.com/omSolutions/oops_what.html" target="_blank">many principles</a>, like the <a href="http://www.objectmentor.com/resources/articles/srp.pdf" target="_blank">Single Responsibility Principle</a> and <a href="http://en.wikipedia.org/wiki/Separation_of_concerns" target="_blank">Separation of Concerns</a> among many others, that exactly describe how good code should look like. In order to prove to ourselves and our managers that we are writing good code an that the inherited legacy application is bad, we have to come up with some cold, hard facts. Besides code reviews, static analysis tools are the next best thing to verify the quality of our code. Such tools, integrated with daily builds and continuous integration, can help you and your team to figure out how well your project is doing. Note that these are just tools and that code reviews are still a lot better at the time of this writing. </p>
<p>We are using <a href="http://en.wikipedia.org/wiki/Separation_of_concerns" target="_blank">FxCop</a> for number of years now and we are very pleased with it, although writing custom rules is rather cumbersome and has a high threshold to my feeling, probably because it is not that well documented. However, the rules that ship out-of-the-box are OK most of the time, so we keep using it. </p>
<p>I briefly looked at <a href="http://code.msdn.microsoft.com/sourceanalysis" target="_blank">Microsoft Source Analysis</a> last weekend, but I really didn&#8217;t like it.</p>
<p>A couple of months ago, <a href="http://codebetter.com/blogs/patricksmacchia/" target="_blank">Patrick Smacchia</a> provided me a review copy of <a href="http://www.ndepend.com/" target="_blank">NDepend</a>. I gave it a try last week and it literally blew me away. This tool performs a complete X-ray on the code base of your project and provides an extended report with a huge amount of information about the quality and maintainability of your project. </p>
<p><em>&lt;confession&gt;</em></p>
<p><em>Actually, I briefly reviewed this tool when it was in an early beta a couple of years ago. For some reason (probably stupidity on my behalf), I dismissed this tool entirely. What a mistake! Good that I finally come to my senses.</em></p>
<p><em>&lt;/confession&gt;</em></p>
<p>I thought I&#8217;d unleash this power to <a href="http://msdn.microsoft.com/en-us/library/aa479071.aspx" target="_blank">Pet Shop 4.0</a>. After creating the project, I already got a huge HTML file that contained a lot of information. Here is an example of a chart that shows the Abstractness versus Instability.</p>
<p><a href="http://elegantcode.com/wp-content/uploads/2008/06/abstractnessvsinstability.jpg"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="451" alt="AbstractnessVSInstability" src="http://elegantcode.com/wp-content/uploads/2008/06/abstractnessvsinstability-thumb.jpg" width="486" border="0"></a> </p>
<p>The X-axis shows the instability, that indicates how easy it is for the public interface of an assembly to change incorporating the number of other assemblies depending on it. The Y-Axis indicates the abstractness, i.e. how easy it is to extend the types in an assembly without a recompilation. </p>
<p>Notice that the <em>PetShop.Model</em> assembly is in the Zone of Pain. This means that it is used by a lot of other assemblies and that it is hard to extend the types that it contains.&nbsp; A couple of other assemblies are in the Zone of Uselessness, which means their types are very extensible but with few dependencies from other assemblies.</p>
<p>The report also contains a diagram that shows the dependencies between the different assemblies.</p>
<p><a href="http://elegantcode.com/wp-content/uploads/2008/06/componentdependenciesdiagram.png"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="723" alt="ComponentDependenciesDiagram" src="http://elegantcode.com/wp-content/uploads/2008/06/componentdependenciesdiagram-thumb.png" width="338" border="0"></a> </p>
<p>These diagrams are just a small part of the information that is contained by the report. When you close the report, you can use the NDependViewer application to further analyze the data.</p>
<p><a href="http://elegantcode.com/wp-content/uploads/2008/06/ndepend-screenshot-1.jpg"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="341" alt="NDepend Screenshot 1" src="http://elegantcode.com/wp-content/uploads/2008/06/ndepend-screenshot-1-thumb.jpg" width="448" border="0"></a></p>
<p>Now we come to the part where NDepend really shines: CQL or the <a href="http://www.ndepend.com/CQL.htm" target="_blank">Code Query Language</a>. NDepend treats the code of your application as a database. With CQL you can perform all sorts of queries on its code base. NDepend already provides a lot of&nbsp; CQL queries out-of-the-box and also lets you write you own queries. It even has intellisense!</p>
<p><a href="http://elegantcode.com/wp-content/uploads/2008/06/ndepend-screenshot-2.jpg"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="351" alt="NDepend Screenshot 2" src="http://elegantcode.com/wp-content/uploads/2008/06/ndepend-screenshot-2-thumb.jpg" width="458" border="0"></a> </p>
<p>This gets my geek heart pounding. This means that there&#8217;s a lot less friction involved when writing custom CQL queries as opposed to writing custom rules for FxCop. This particular CQL query returns the methods that have a <a href="http://en.wikipedia.org/wiki/Cyclomatic_complexity" target="_blank">Cyclomatic Complexity</a> greater than 10, indicating that the <em>OracleMembershipProvider</em> needs some attention. When you double click one of the selected methods on the left, the code gets shown in Visual Studio. After a short inspection, it seems that the implementation of this class looks rather messy (&#8220;cough&#8221;, understatement, &#8220;cough&#8221;).</p>
<p>This is all just a tip of the iceberg. NDepend also lets you compare two different versions of your code base, performing CQL queries for determining the quality of the new code that was added. The latest version also supports <a href="http://codebetter.com/blogs/patricksmacchia/archive/2008/04/09/make-the-most-of-your-test-coverage-data.aspx" target="_blank">test coverage metrics</a> generated by <a href="http://www.ncover.com/" target="_blank">NCover</a> or Visual Studio. To make things even sweeter, NDepend ships with NAnt / MsBuild&nbsp; tasks letting you generate this information as part of your daily builds / continuous integration.</p>
<p>With this tool, we as developers can come up with the hard facts. It allows you to dig right into the problem areas of a particular code base. There is even a CQL query that indicates which particular methods need refactoring.</p>
<p><a href="http://elegantcode.com/wp-content/uploads/2008/06/ndepend-screenshot-3.jpg"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="361" alt="NDepend Screenshot 3" src="http://elegantcode.com/wp-content/uploads/2008/06/ndepend-screenshot-3-thumb.jpg" width="477" border="0"></a> </p>
<p>The documentation of this tool is just great, the <a href="http://www.ndepend.com/" target="_blank">home page</a> is filled with short demo movies and make sure to check out the <a href="http://www.ndepend.com/Metrics.aspx" target="_blank">metrics definitions</a> and the <a href="http://www.hanselman.com/blog/content/binary/NDepend%20metrics%20placemats%201.1.pdf" target="_blank">quick reference</a>.</p>
<p>You might suspect that I&#8217;m getting paid for this post, but actually, I&#8217;m not. This is just another great tool in my tool bag, not a silver bullet. The hardest part of starting out with this tool is the first 15 minutes. When you give it a fair chance and get past those 15 minutes, it will all be worth it. Just amazing work! My two thumbs up.</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2008/06/02/ndepend-static-analysis-made-in-heaven/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
