Microsoft's Visual Studio 6.0 is a remarkable package, delivering advanced editions of the most popular development tools for Windows. Yet for all of its enhancements in editing and project management, Microsoft seems to have left us imperfect programmers to our own devices. Visual Studio's debuggers, for C++ in particular, have not seen a significant advance in years. Now, finally, help for C++ and other languages is on the way.
NuMega Lab, a division of Compuware, is shipping Version 6.1 of its DevPartner Studio suite. With comprehensive code analysis and debugging tools for Visual Basic (VB), Visual J++, and Visual C++, DevPartner Studio should be included with every copy of Visual Studio.
Breaking the code
The package includes Bounds-Checker, CodeReview, Smart-Check, FailSafe, JCheck, TrueTime, TrueCoverage and SoftICE. For starters, C++ BoundsChecker zeros in on the most obscure bugs: bad pointers, out-of-bounds array access, and invalid or improper API arguments. After the bugs are eradicated, BoundsChecker tightens your code by finding your memory and resource leaks.
Every time I used it, it found at least one major flaw; none of my contrived efforts to slip a covered error by it met with success.
A helping hand
As you write, CodeReview guides you away from creating disorganised code that is difficult to maintain.
By enforcing naming rules and identifying erroneous and inefficient code before it runs, Code-Review teaches you good VB programming while preventing you from placing bad software in users' hands.
CodeReview operates from a rules set to determine what Code-Review flags as bad code. This way development shops can create their own policies for programmers to follow.
In order to build a collection of policies that are specific to your function, you can modify and extend the rules set.
Some VB errors - such as the misuse of objects, array bounds violations, and bad system calls - can only be detected at run time. SmartCheck works somewhat like BoundsChecker for C++, watching for error conditions and working with the debugger to identify the location and type of error.
Instead of relying on VB's terse, cryptic run-time errors and exceptions, a programmer using SmartCheck will learn the deeper meaning of the consequence of the code if it stays as it is. In VB, most error messages are vague, amounting to "something went wrong just about here". SmartCheck is precise, identifying the offending line of code and providing a more detailed description of the error.
And whatever makes it past SmartCheck is not likely to go undetected by FailSafe; SmartCheck runs in the VB debugger and FailSafe runs at the customer's site after you deliver the software. A boon for beta releases and rushed shipments is that FailSafe catches and logs VB run-time errors.
In my tests, FailSafe's detailed logs made locating and fixing run-time errors effortless compared with manual logging and tracking.
Java applications are usually multi-threaded; yet integrated debuggers make it difficult to track problems down to the thread level.
JCheck exposes your Java application's threads and events for your scrutiny, and even generates a chronological log of your program's events for a postmortem analysis.
You can examine the details of any running thread, locating elusive deadlocks and tracking Windows resources allocated by the Java machine. NuMega supplies one JCheck each for Visual J++ and Sun's Java software developer's kit, with IDE integration included in the Visual J++ version.
Rounding out the suite are TrueTime and TrueCoverage, tools that aid in profiling and testing the applications that you built.
TrueTime is a multilanguage profiler for VB, C++ and Java. After a run, TrueTime will produce a report showing you which functions and objects occupied the lion's share of the CPU. It tracks usage of ActiveX/COM objects, even without their source code.
TrueCoverage tells developers which lines of code have been hit during testing. This is a simple step, yet it is the core of a thorough quality-assurance workout.
Smarter than average
For those times when you could pull hair from your head in great clumps, SoftICE offers a sweet deal: if you take the time to learn it, SoftICE will tell you everything about your application. This text-based debugger knows the Windows kernel intimately.
There are, however, a few errors - even hard system crashes, hardware lock-ups caused by software and tight loops - that SoftICE can't catch. Also, it isn't pretty or easy to use, but it is smart. Unlike some low-level debuggers, SoftICE will use symbolic names and even display source code when you have it. It's a tool of last resort for application developers (primarily C++), but a constant companion for those crafting device drivers, complex services, and system code.
Tests using my own C++, Java, and VB pro-jects and NuMega's samples, proved that DevPartner Studio is smarter than ever by catching a wider variety of errors and presenting clearer explanations.
Needs better documentation
My complaints about DevPartner Studio are few. The online documentation (printed manuals are optional) is delivered in a mix of PDF (Adobe Acrobat) and Windows help files. Neither format is particularly easy to use, and both versions feel archaic next to Visual Studio's integrated HTML help.
Also, I understand that VB outsells other languages, but I'd selfishly like to see NuMega lavish more attention on C++.
C++ could also use a code-analysis tool like CodeReview, and I would like to see BoundsChecker become more aware of Active Template Library, or ATL, and Transaction Server, the commonly used facilities of Windows that make debugging difficult.
DevPartner Studio's primary competition comes from Microsoft's built-in debuggers, plus tools such as Gimpel Software's PC-Lint code analyser and Geodesic Systems' Great Circle memory management software.
Uniquely, NuMega's tools (which you can purchase separately) teach, protect, tighten, and reveal better code. No responsible Windows developer should dare ship software in any language until DevPartner Studio has analysed the code.
The Bottom Line
DevPartner Studio, Version 6.1
This program works with Microsoft Visual Studio 6.0 to analyse and debug Visual C++, Java, and Visual Basic applications.
Pros: Multilanguage support; detailed, extensive error descriptions; foolproof coverage for Visual Basic.
Cons: C++ could use more tools.
Platforms: Windows NT, Windows 98, Windows 95, and Windows CE.
Price: $1814; smart subscription (optional) includes upgrades and updates $824..
NuMega Lab Tel (02) 9927 2742 www.numega.com