Customers:   Microsoft   Intel   Computer Associates    Compuware   American Electric   Northrop Grumman   Bell Helicopter    US Air Force   Continental Airlines

This page contains a brief presentation illustrating the main features CodeSMART 10 with VS10x Extensions adds to Visual Studio 2013/2012/2010.

  • While browsing this page, why not download a free 30-day evaluation setup kit (no questions asked):
  • File: codesmart_2013_vs.zip

1. INTEGRATION WITH THE IDE

1.1. General Integration Notes

CodeSMART is tightly integrated with Visual Studio - all its commands and tools are accessible through the main menu and four toolbars it adds to the environment, as well as from the code window popup menu. Other CodeSMART tools are hosted or display their results within special tool windows - for example, pictured below are the 'VS10x CodeMAP' and the CodeSMART 'Find and Replace 1' windows.
CodeSMART Integration in the Visual Studio 2013/2012/2010 IDE
The CodeSMART main menu contents: CodeSMART Integration in the Visual Studio 2013/2012/2010 IDE

2. EXPLORER TOOLS

2.1. CodeMAP

Have a look at the small sample below. Notice the way nested types are represented, as well as the implemented interface. The region sub-container is prefixed with a # for an easier identification. Members have distinctive icons, with special overlays for constructors, public items (not pictured in the below example) and members belonging to implemented interfaces.
The CodeSMART Code Flow Explorer
Containers can be collapsed in order to help you stay focused on items that are currently in development. What's worth to notice is that a collapse operation in CodeMAP will also collapse the corresponding part in the code editor. Moreover, it works both ways, so if you for example collapse a class in the code editor, the corresponding container in CodeMAP will get collapsed as well!

CodeMAP is also a navigational tool - if you double-click an item, its position in code will be brought into view. That is something you should expect, of course, but CodeMAP also makes returning to the last viewed/edited members a breeze by implementing a local history system i.e. highlighting the last 10 accessed or edited (C# only) items in various ways:

  • In CodeMAP, with a distinctive background color (grey in this example, but configurable) or with a variable opacity clock image
  • In the editor, with a bluish background color for the entire member body (can be disabled)
  • On the Scroll Map (a special area added by CodeMAP to the left of the vertical scrollbar), blue rectangles are added to represent the member position relative to the entire code file (you can align the scroll thumb with the blue marker to bring the item into view)
Please note that the above behavior is fully customizable, there's a CodeMAP Options dialog where this can be done.
The CodeSMART Code Flow Explorer
Now, highlighting recently accessed items may be good, but what if you have items you return to over and over? Well, you can apply special highlight colors in order to mark items. As with history, favorite items are emphasized in various ways:
  • In CodeMAP, with a certain background color, as pre your choice
  • In the editor, with a sync background color for the entire member body (can be disabled)
  • On the Scroll Map red rectangles are added to represent the member position relative to the entire code file (you can align the scroll thumb with the marker in order to bring the item into view)
The behavior for the above last two emphasizing techniques is customizable.
The CodeSMART Code Flow Explorer

2.2. Code Flow Explorer

The Visual Studio code editor doesn't have tools to assist the developer in navigating inside a method body. When working with fairly simple methods browsing their code inside the code window is usually enough to grasp a general idea about the code logic, but trying to navigate complex methods with hundreds of code lines, nested conditional blocks and loops, can be a very tedious job.

The CodeSMART Code Flow Explorer can parse method code and output a tree representation thus offering instant access to the method's internal structure and logical code blocks. The CodeSMART Code Flow Explorer

2.3. Designer Explorer

With the CodeSMART Designer Explorer you can visualize a designer control hierarchy, select a control (which normally is not an easy job controls when controls overlap, are included in containers or simply are out of the visibility window) and benefit of several additional control-related operations and enhancements. The CodeSMART Designer Explorer

2.4. Code Library Explorer

The CodeSMART Code Library Explorer represents a convenient way to quickly store and retrieve code pieces written in VB, C#, C++, HTML, XML etc, thus providing a valuable help in reusing, managing and sharing pre-written code. It can be seen as a code repository in which you can store and organize different code items, group them in logical folders and share them within a team. The CodeSMART Code Library Explorer

3. CODE EDITOR ENHANCEMENTS

3.1. Editor View Enhancer

Allright, here's how the code editor normally looks like - yes, I know you know, but it's easier this way to see what goes in:
The CodeSMART Code Flow Explorer
And now, here's how it looks like with the VS10x Editor View Enhancer turned on:
The CodeSMART Code Flow Explorer
Type names are by default displayed with red foreground color and in bold, while method/property names are by default displayed with red foreground color. Type and member definitions lines get a semi-transparent distinctive image added to the left side. It's not shown here, but single-line property definitions don't get the red foreground, as that would have been a visual overkill since these single-line property definitions usually come in packs :-)

And all these can be customized - if you want, you can even get extreme:
The CodeSMART Code Flow Explorer

3.2. Comments Extender

We have designed the Comments Extender with the goal of making code commenting more useful from both a documenting and a productivity standpoint. By using a simple comment prefix system, you can change the default formatting of a comment by affecting its foreground color, font size and style. It works with C#, VB, C++, F# and markup language (HTML, ASPX, XML, XAML) documents.

Let's start with a brief example of what Comments Extender can help you achieve:

How does it work? Well, when you start a comment with // (C#, C++, F#) or ' (VB), you can add some extra characters (minimum one, maximum three) in order to define how this comment will look like. The Comments Extender will read these prefixes and format the comment accordingly. Here are the possible combinations:

C#, C++, F# VB XAML, HTML Meaning Formatting (customizable)
//+ '+ <--+ Large size Normal text color, large size
//++ '++ <--++ Extra large size Normal text color, extra large size
//- '- <--- Small size Normal text color, small size
//-- '-- <---- Extra small size Normal text color, extra small size
//! '! <--! Important comment Red text color
//!+ '!+ <--!+ Important comment, large Red text color, large size
//!++ '!++ <--!++ Important comment, extra large Red text color, extra large size
//? '? <--? Question Magenta text color
//?+ '?+ <--?+ Question, large Magenta text color, large size
//?++ '?++ <--?++ Question, extra large Magenta text color, extra large size
//x 'x <--x Removed code Light gray color, strikethrough

Also, you can format task comments (TODO, HACK, UNDONE) in terms of foreground color.

Let's have a look at two comment styles (i.e. "removed code" and "important") - notice the strikethrough font style and grayed-out color used to visually isolate removed code, and the red color used to emphasize an important comment:

Additionally, a "question" style is available (actually, you can use any different meaning according to your needs) that stands out by using a magenta foreground color:

And this obviously is not all of it. You can affect the size - currently, two large sizes (large and extra large) are implemented; see the below "Column" comment text in extra large size:

3.3. Selection Popup

The Selection Popup displays an unobtrusive toolbox in the immediate vicinity of a text selection, offering quick access to text operations like the classic cut-copy-paste-delete, as well as some more specific tasks like indent, unindent, case transformation and spaces to tabs conversions. Also, a quick information area displays the current selection size in characters.

Moreover, a second row containing CodeSMART commands is displayed (it currently contains Find, Find Selection In Component, Find Selection In Solution, Highlight Code, Create AutoText From Selection).

Here's how the Selection Popup works: when some text is selected in the code editor, a semi-transparent toolbox is displayed near the selection:
The CodeSMART Code Flow Explorer
As the mouse pointer enters the toolbox area, this one becomes fully opaque:
The CodeSMART Code Flow Explorer

3.4. Code Marker

The Code Marker allows you to mark (that is, apply a custom background in highlighter-style) any text area in the code editor. Four standard marker colors are available (yellow, green, cyan and magenta).

The easiest way to mark a piece of code is by using the Selection Popup, i.e. select the code and pick the marker color from the popup toolbox that appears in the selection proximity:
The CodeSMART Code Flow Explorer
And the result:
The CodeSMART Code Flow Explorer

3.5. Method Block Highlighter

By using the Method Block Highlighter you can highlight (that is, apply a custom background in highlighter-style) favorite methods in the code editor. Four standard marker colors are available (yellow, green, cyan and magenta).

Again, the easiest way to highlight a method is by using the Selection Popup, i.e. select any code piece in the method and pick the highlight color from the popup toolbox that appears in the selection proximity:
The CodeSMART Code Flow Explorer
And the result:
The CodeSMART Code Flow Explorer

3.6. Super Copy Paste

Whenever you copy a piece of text, the Super Copy Paste extension keeps track of that code piece and adds it to the copy history. Upon paste, the last copied text will be pasted and a popup will be displayed in the bottom-right corner of the code editor, allowing you to replace the just-pasted buffer with one from the history list.

Please note that if there is no history (i.e. only one copy operation was performed), then obviously no copy history popup will be displayed.

Have a look below, notice the current code piece (the one that was last copied) that was just pasted (it is slightly highlighted) and the 3-item history list (it can grow up to 10 items). In order to replace the current pasted code piece with one from history, the corresponding keyboard key (in this case, 1, 2 or 3) has to be pressed. Simple and effective!
The CodeSMART Code Flow Explorer

3.7. AutoText

Many times during the process of code writing you have probably used identical or similar code blocks, or written the same long code sequence over and over. In such cases, an auto-text feature like the one found in many professional text editors could have saved you a lot of time. Typing a few letters and then hitting a special keyboard combination is obviously much more productive than writing the same code piece again and again. This is what the CodeSMART AutoText system was built for; here's a sample of this system in action: The CodeSMART AutoText Feature

4. FIND TOOLS

4.1. Extended Find and Replace

The Extended Find and Replace subsystem adds powerful search and replace capabilities to the Visual Studio environment. It can perform code searches and replacements at any scope (member, document, project, solution) with a set of user-defined filters. The search target can consist of a single code line or of multiple lines and can contain wildcards or regular expressions. After the operation finishes, a comprehensive result list is displayed and matches are highlighted in code. The CodeSMART Extended Find and Replace Two Extended Find and Replace panes hold result lists for two different find/replace operations. Results found within strings and comments (if these were not configured to be skipped) are displayed by using specific colors. Additionally, a history combo-box can be used to access previous find/replace operations.

5. ANALYZER TOOLS

5.1. Code Analyzer

The CodeSMART Code Analyzer is a valuable tool that can be used to examine Visual Basic and C# code. It can be seen as a control quality tool for Visual Studio programmers who want to refine the code they write by making it smaller, faster and less error-prone. Code Analyzer features include detecting private dead code, code complexity issues, potential problems, optimization flaws and coding standards infringements. The CodeSMART Code Analyzer

5.2. Designer Analyzer

The CodeSMART Designer Analyzer can be used to examine Windows Forms components for known problems. It can be seen both as a UI quality control tool and as a UI standards enforcement tool. Several options are available and grouped by problem categories. The analysis result set is listed in a comprehensive window. The CodeSMART Designer Analyzer

5.3. Spelling Checker

What can be more embarrassing than delivering an application and realizing you have spelling errors in its user interface? Let's face it, we all felt bad because of this at least once in our lives. We did it too - so we decided it's the time to have a Spelling Checker feature in CodeSMART. The CodeSMART Spelling Checker

5.4. Strings Review

The Strings Review tool does somehow share part of its goals with the spelling checker. Its exact purpose is to offer a global and complete perspective on all the string constants used in code, but while the spelling checker focuses on individual words correctness, this new tool was designed to ease the phase of logical word combination (phrasing) analysis and correction. The CodeSMART Review Strings Tool

6. CODE GENERATING TOOLS

6.1. Simple Code Builders

These represent a set of wizards for creating basic code constructs like class definitions, methods, properties and indexers. The CodeSMART Simple Code Builders

6.2. Advanced Code Builders

Advanced Code Builders represent a set of tools which can be used to insert complex code constructs into Visual Basic and C# projects. By using these tools you can considerably reduce the time and effort that's usually necessary to write certain code like interface implementations, overridden methods, object construction and destruction, custom exception classes, custom formatter classes, collection classes, etc. The CodeSMART Advanced Code Builders

6.3. Generate Exception Handling Code

Adopting an appropriate strategy for exception management can help you build successful and flexible applications that can be easily maintained and debugged. However, implementing a proper and consistent exception handling policy is not a trivial task - this is where the CodeSMART Exception Handling Tools come into play, as by using these tools you can:

  • define your own exception handling templates enriched with CodeSMART standard parameters.
  • designate a default template to be used for a specific programming language.
  • share the same templates within a development team.
  • explicitly mark different methods, properties and classes to use a specific exception handling template
  • automatically insert and remove exception handling code at different levels (current selection, method, class, document, project, solution).
The CodeSMART Try-Catch Templates Manager

7. CODE MAINTENANCE TOOLS

As projects become more and more complex, adhering to certain standards usually becomes a necessity. These standards may include specifications and recommendations on how code should be formatted and documented. CodeSMART has dedicated tools that can help you meet such requirements.

7.1. Code Formatter

The CodeSMART Code Formatter can be used to reshape Visual Basic and C# code based on certain standards. These standards can be specific to a single programmer or can be used for an entire programming team. The CodeSMART Code Formatter

7.2. Sort Procedures

Occasionally you may consider it necessary to rearrange code in a more logical and intelligible manner. The CodeSMART Sort Procedures tool comes to meet this requirement. The CodeSMART Sort Procedures

7.3. XML Comments Support

CodeSMART offers an unified and flexible way to standardize XML Comments in both Visual Basic and C# through the XML Comment Templates: The CodeSMART XML Comment Templates

CodeSMART also comes with the XML Comments Preview tool which provides an easy way to visualize pre-formatted XML comments when editing or browsing code. The CodeSMART XML Comments Preview

7.4. Regular Comments

Comments standardization is a must for every company, and adoption of such a standard by a single user is an extremely intelligent decision that will definitely show its benefits in time. Regular Comment Templates are intended to complement the XML Comment Templates feature described above; also, CodeSMART can ease commenting tasks by automating the regular comment skeleton insertion process. The CodeSMART Regular Comment Templates Manager

7.5. Code Commenting Analyzer

No matter if you write simple functions or complex classes, using relevant comments as often as possible is a requirement that every application developer should conform to. The CodeSMART Code Commenting Analyzer tool can help in getting a global perspective on code commenting at a certain scope by indicating in-method contiguous blocks of code that exceed a certain maximum length and have no comments, as well as code definitions that either have no comment defined or have an incorrect one from a standards point of view. The CodeSMART XML Analyzer

8. DESIGNER TOOLS

8.1. Tab Order Designer

Configuring/reconfiguring tab order on a Windows Forms designer by managing each control's TabIndex property value can be a very tedious task. The CodeSMART Tab Order Designer tool can help you automate this process - you can either set the order manually by simply sorting the control list or you can let the tool automatically establish the tab order. The CodeSMART Tab Order Designer

8.2. Hotkey Designer

The CodeSMART Hotkey Designer allows you to automatically manage hotkeys on a designer. The tool provides several hotkey generation methods along with the possibility to preserve (lock) some already defined hotkeys. The CodeSMART HotKey Designer

8.3. Property Tips

The Property Tips lists a preset group of properties and their values in a special window that is displayed as a tooltip whenever the user pauses the mouse cursor over a designer control. The CodeSMART Property Tips window

9. MORE...

9.2. Code Statistics

The CodeSMART Code Statistics subsystem provides useful information about code at various scopes ranging from component up to the entire solution. The CodeSMART Statistics Report

9.3. Iterative Code Inserter

There are times during the coding process when the need to insert similar pieces of code in every method at a certain scope arise. For example, imagine your program generates a GPF. Probably having the possibility to trace code execution and see which is the last method that gets called before the GPF occurs could help. However, manually inserting tracing code into each method may take quite a long time. CodeSMART features an Iterative Code inserter/remover subsystem - by using it you will be able to insert and afterwards remove special code chunks at a certain scope in just a few seconds. The CodeSMART Custom Code Inserter