Review: Squash Bugs Before They Hobble .Net Apps
DevPartner, which fully integrates with Visual Studio 2005, uses a database of more than 600 rules from best practices that Compuware has accumulated for .Net applications. The static code analysis is extremely simple. After parsing .Net code, DevPartner compares it with all known problems in its database and returns a list of rules that were broken in the code.
Each rule provides an explanation section, a source line, what triggered the error, a repair section, and a notes section. The repair section shows that sample code can be written in either C#, Visual Basic .Net, or C++. The errors correlate with parsed code.
(click image for larger view)
\
\
\
Find the cause of performance bottlenecks.
Developers can change DevPartner configurations so it only detects certain errors that are implementation-specific such as .Net, Component Object Model, and Win32 API. Repair sections in a feature known as Code Review will display either managed code or Win32 code, depending on the error found. In addition to scanning code, Code Review can be programmed to analyze object and variable declarations to make sure code follows company-accepted naming conventions, including specific coding standards used by the industry such as Pascal or Hungarian notation.
During run-time analysis, DevPartner provides a real-time graph of memory use. The graph explores .Net's memory manager, which runs the garbage collector. The analysis is dynamic, so developers can inspect memory as they traverse an application by clicking on buttons or just navigate through HTML pages. The memory graph also identifies how temporary objects in an application are using the .Net heap. DevPartner can identify memory leaks by performing memory leak checks in specific regions holding allocated objects that may be dangling without being picked up by .Net's garbage collector.
Memory Aid
DevPartner can force multiple garbage-collecting instances that allow developers to compare a baseline memory with a current memory execution. The comparison can point out objects that were allocated but not collected. The software also can point to the line of code that created a leak. The memory detection checks .Net's stack, which holds pointers to objects and variable addresses. This feature can save .Net developers dozens of hours trying to capture memory-based exceptions using all sorts of kludgy techniques. Because .Net hides so much code, memory leaks are one of the most difficult things to identify.
DevPartner provides high-level Code Coverage reports to identify what percentage of a form or pane in an application is covered under its tests. If code blocks of an application fall out of coverage, it can indicate that it might be dead code or that DevPartner missed targeting this code. The reports make it easy to identify dead code at the unit test level. The reports also help when performing regression and black-box testing. Although the DevPartner software provides mixed-language analysis, not all .Net languages are supported. C#, for instance, isn't supported in this mode.
Legacy C and C++ code from Visual Studio 6.0 is covered by a DevPartner tool called Error Detection. This tool identifies memory overruns, pointer reference problems, unsafe threads, and various function failures. Error Detection also builds detailed lists of all application dependencies.
Partnerships
Compuware offers channel partners its 360 Solutions Partner Program, which enables solution providers to participate at one of three levels: Business Partners, 360 Solutions Partner, or Strategic Partner, all of which denote an increasing level of commitment and involvement with Compuware. Strategic Partners have a designated Compuware Global Partner Manager and receive additional marketing assistance and business development benefits.
The partner program is designed to move solution partners to the Strategic Partner level, after commitments are demonstrated. The program's 360 Solutions Partners receive similar benefits, but at a lower level. The entry-level Business Partner designation is basically for providers that resell, influence, or add value to any of Compuware's products.
The company offers other specialized partner levels, which are aimed at ISVs, distributors, and developers. It declined to disclose margin information.