Global Bank: Coding the New Service, Part 1

Visual Studio Team System 2008 includes new tools to measure the complexity and maintainability of your code, and provides improved code analysis capabilities to help you write cleaner code. This is the third in a series of articles that will describe a common development scenario at the fictitious Global Bank and show how you can use Visual Studio Team System for your next project. If you're new to the series, you can meet the Global Bank team by reading the introductory article Global Bank: A Scenario for Visual Studio Team System 2008.

Introducing the C# Developer

Martin, a C# developer, started working at Global Bank directly out of college. In his first year of employment, Martin worked on the Test team, but quickly moved to a full-time development position, which he's held for the last five years. His early experience as a tester has helped him appreciate unit testing and code analysis tools. Martin has Visual Studio Team System 2008 Development Edition installed on his main computer.

Coding the New Service

Martin receives e-mail from Alice telling him that she has completed the database portion for CDService. He opens his related work item and reviews the notes left for him by Ken, the architect and project manager. Martin synchronizes the GlobalBankDB project, and then builds and deploys GlobalBankDB to his development environment. This technique allows Martin to code against the updates made by Alice while avoiding conflict with other developers who might be working in the database.

Martin first wants to identify any changes in the project since the last time he looked at it, so he opens the CDService project and uses the Compare feature on folders in the project. He also uses the Compare feature to see what's changed in several files he codes in regularly. Martin then checks out CDServices.cs, the file automatically generated by Ken. He then begins to write the code needed to implement CDService based on the architect's design and the database developer's implementation for the SQL Server back-end.

Analyzing the New Code

As soon as Martin has finished coding, he checks his code for programming and design issues. First, he looks for Microsoft .NET Framework Design Guidelines rule violations with the Run Code Analysis feature to make sure he meets company guidelines. Martin sees a few performance-related suggestions in the Error List window, which he quickly implements.

Figure 1: Code Analysis Report

Global Bank Code Analysis Report

Debugging the New Code

Next, he presses F5 to debug the Web site. A message appears, indicating that debugging has not been enabled in the web.config file for the site. Martin chooses to modify the web.config file for debugging. After he has stopped the debugger, he reviews the Output window information and then the Error List window for issues. Martin fixes any issues found, and then runs the debugger again to verify his fixes and flush out new errors.

Calculating the Code Metrics

Last, Martin wants to check the complexity and maintainability of his code. He uses the Calculate Code Metrics feature to generate a report listing facts such as the number of lines of code in the project as well as the depth of inheritance. Martin uses the report to fine-tune his code.

Figure 2: Code Metrics Report

Global Bank Code Metrics Results

Shelving the New Code

Because it's nearly time for Martin to head home, he uses the Shelve command to save his work under source control without checking in his changes. Tomorrow he'll finish analyzing and testing his code.

Further Reading from MSDN Online

Comparing Folders and Files in Version Control

Guidelines for Using Code Analysis Tools

Debugging Web Applications and Script

Code Metrics Overview

What's New in Development Edition