Improving Quality with Visual Studio Diagnostic Tools

What is code quality? Correctness, performance, maintainability, and even elegance are all involved in creating great code. However you define it, Visual Studio diagnostic tools can help you and your team to develop and sustain high standards of code excellence.

Requirements

  • Some of the tools and features that are described in this section are available only in specific editions of Visual Studio—they aren’t universally available in Visual Studio. We list the specific edition requirements in the documentation for these tools and features.

In this section

In the following table, you can find descriptions of common tasks that support this scenario and links to more information about how you can successfully complete those tasks.

What's New in Developer Quality and Diagnostic Tools in Visual Studio 2013

Learn about new tools and added features in Visual Studio 2013s.

Debug your app by recording code execution with IntelliTrace

IntelliTrace enhances the live debugging experience by adding a history of events and function calls. By using the stand-alone data collector, you can also collect historical data on remote machines, such as ASP.NET production servers.

Verifying Code by Using Unit Tests

Test Explorer makes it easy to integrate unit tests in your development practice. You can use the Microsoft unit test framework or one of several third-party and open source frameworks.

Analyzing Application Quality by Using Code Analysis Tools

Static code analysis tools find design, usage, maintainablity, and style issues in C++ and managed code. Many of these issues can lead to bugs that are hard to reproduce in standard testing environment.

Analyzing Application Performance by Using Profiling Tools

The Visual Studio Profiling Tools let developers measure, evaluate, and target performance-related issues in their code. You can analyze performance issues related to timing, memory, resource contention, and database interaction.

Concurrency Visualizer

Using the Concurrency Visualizer, you can examine how your multithreaded app performs. The views in the Concurrency Visualizer provide graphical, tabular, and textual data that shows the temporal relationships between the threads in your program and the system as a whole. You can use the Concurrency Visualizer to locate performance bottlenecks, CPU underutilization, thread contention, cross-core thread migration, synchronization delays, DirectX activity, areas of overlapped I/O, and other information.

Measuring Complexity and Maintainability of Managed Code

Code metrics is a set of software measures that provide developers better insight into the code they are developing. The metrics include a maintainability index for functions and classes, cyclomatic complexity of functions, the inheritance depth of classes, and the amount of coupling among classes.

Finding Duplicate Code by using Code Clone Detection

The code clone tool searches for duplicate or highly similar code in Visual C# and Visual Basic projects throughout your Visual Studio solution. You can often refactor the code to eliminate the duplication for a more maintainable solution.

PreEmptive Analytics for Team Foundation Server

PreEmptive Analytics for TFS CE helps you to integrate feedback-driven development processes into your development workflow. Your applications automatically send back exception report data to the PreEmptive Analytics service as errors occur during their execution. The service then creates or updates work items in Microsoft Team Foundation Server based on rules and thresholds you define.

PreEmptive Dotfuscator and Analytics CE

PreEmptive Dotfuscator is a.NET obfuscator and compactor that helps protect programs against reverse engineering while making them smaller and more efficient. 

Profile Guided Optimization in the Performance and Diagnostics Hub

The Profile Guided Optimization for Visual C++ plug-in uses user scenario training to build native apps that have the fastest, smallest code.

  • Adopting Visual Studio and Team Foundation Server for Application Lifecycle Management
    If you are unfamiliar with Visual Studio Team Foundation, you can learn more about how you can use it in a team development environment to improve productivity and reduce risks that are associated with application development.

  • Modeling the Application
    You can use Microsoft Visual Studio Premium to manage the challenges and complexity of designing software. Visual Studio Premium lets you visually model your application, both as it exists now and as you want it to exist in the future. You can create and maintain diagrams to help you visualize the logical models of your application at the same time that they map to the physical models; this enables you to change, validate, and analyze the software that is "under design."

  • Testing the application
    You can use Visual Studio Premium and Visual Studio Ultimate to be more productive throughout the testing life cycle. Visual Studio Premium or Visual Studio Ultimate let you plan your testing effort. You can create, manage, edit, and run both manual and automated tests. You can also review your testing progress based on your plan.

  • Build the application
    You can use Team Foundation Build to create and manage automated builds for your code. Team Foundation Build lets you create drop servers to deploy builds. In addition, you can analyze build trends.

  • Track work with Visual Studio ALM and TFS
    You can use Visual Studio Team Foundation Server to plan and track your projects whether you use the agile process, the formal process, or a variation on those processes. By planning your projects, tracking your progress against the plan, and making necessary adjustments, you can reduce risks, avoid unpleasant surprises, and manage the cost of your projects.