NCoverExplorer Release Notes

The latest version of this document is located here.
For the latest NCoverExplorer news and updates, visit my blog.

v1.3.4 - Apr 8th 2006

Bundled with TestDriven.Net from build 2.0.1580.

The following bug fixes were made:

- Nested classes without a namespace specified would cause the coverage.xml file to fail to load.

v1.3.3 - Apr 4th 2006

Bundled with TestDriven.Net from build 2.0.1578.

The following new features were introduced:

- Added NCoverExplorer.Console.exe for utilising NCoverExplorer features with automated coverage builds and NAnt tasks. By default will load up all the specified coverage file(s), apply any coverage exclusion(s) specified in the NCoverExplorer configuration and display total coverage statistics in the console output. If all items processed successfully returns an exit code of 0, if an exception occurs returns an exit code of 2.
- Added /m:xx (or /minCoverage:xx) argument to NCoverExplorer.Console.exe. When used in conjunction with /f (or /failMinimum) an exit code of 3 is returned if the min coverage is not reached. Can act as a trigger for failing an automated build such as with CruiseControl.Net.
- Added module & namespace summary xml report generation to NCoverExplorer (both the GUI and Console versions). In the GUI, this is available via the "View->Reports" menu. The three reports that are offered currently are:
  - Module Summary (Coverage totals for the project and per module);
  - Namespace Summary (Coverage totals for the project and per namespace);
  - Module Namespace Summary (Coverage totals for the project, per module and per namespace);
- Reports can be generated in xml or html format. Native html may be useful for directly attaching to e-mails. If xml format is chosen a "CoverageReport.xsl" stylesheet is copied from the NCoverExplorer installation folder to the report directory and linked to the xml file similar to coverage.xml/coverage.xsl by NCover.
- Reports can contain an "excluded nodes" footer section. This lists at the topmost level all of the items excluded from coverage at the time the report was run.
- Added "View->Filter" main menu and context menus, offering the ability to filter out nodes. Filtered nodes are simply moved under a new "Filtered" tree node and do not alter the coverage statistics (unlike excluded nodes which are effectively removed from the tree). Filters offered are either to hide all 100% covered nodes, or hide all unvisited (0%) nodes.
- Added "Include in Results" context menu option for when clicking on either the "Excluded" bin or one of it's immediate child nodes. Offers a way to "undo" an exclusion without reloading the file.
- Added "View->Summary Statistics" menu option (shortcut F3) to show dialog of totals of files, classes, members, NCLOC (non-commented lines of code) and sequence points. Statistics do not include excluded nodes (but will include filtered nodes).
- Created NAnt and MSBuild tasks for execution of NCoverExplorer.Console as an alternative to the <exec> task. These tasks offer a more developer friendly alternative such as <fileset> for coverage files and creating a .config file on the fly based on specified parameters such as <exclusions> within the .build/.proj file.
- Replaced menus with a lightly tweaked variant of Lutz Roeder's excellent CommandBar code to give a more modern look and assign icons on the menus.
- Added a toolbar. If not wanted the toolbar can be hidden using the "View->Show Toolbar" menu option.

The following minor changes were made:

- Options dialog shortcut changed to F2.
- Excluding a node will now select the node after by default rather than the one previous.

The following bug fixes were made:

- Fix bug where delete key shortcut was active on the root coverage file node, causing an exception to be thrown.
- Path was being truncated from the module name when saved.
- Fix bug where changing theme without coverage file loaded caused error.

v1.3.2 - Mar 14th 2006

Bundled with TestDriven.Net from build 2.0.1545.

The following new features were introduced:

- Added support for merging multiple coverage files. This can be triggered through a variety of ways:
  - Selecting multiple test classes/fixtures/projects in TestDriven.Net;
  - Passing multiple files in the command line arguments;
  - Selecting multiple files in the Open dialog;
  - Using a new "File->Merge..." menu option;
  - Drag/dropping onto the NCoverExplorer application.
- Added tabs for each source code file you open to explore coverage on. If you click on a partial class then tabs will be opened for each of the source code files making up the class.
- Added the ability to exclude assemblies, namespaces or classes from the coverage results by a wildcard capable case-sensitive match on the name. By default NCoverExplorer includes two exclusions:
  - Exclude all assemblies with the name ending in ".Tests".
  - Exclude all namespaces with the name containing ".My" (for VB.Net exclusions).
- Added support for the NCover 1.5.4 "excluded" attribute which can be found in the coverage.xml files when the appropriate NCover command-line attributes are used. Note that TestDriven.Net still does not as yet support this attribute so you need to use the NCover.Console command line for this feature - for more information see here. NCoverExplorer will not include nodes marked as 'excluded' by NCover in it's totals but will still display them in the tree.
- Added an "Excluded" child bin node containing all nodes that have been excluded by the options dialog, by NCover attributes or by the "Exclude From Results" context menu option (see next point).
- Replaced the "Remove from Results" context menu feature with "Exclude from Results" (shortcut of the DEL key). Achieves a similar result of removing nodes from coverage calculations, however the nodes are "moved" to the Excluded bin rather than being deleted from the tree.
- Added a custom "theme" capability along with further colour and font customisation options for the coverage tree, statistics and source code panes. A number of predefined "themes" are supplied and users can add their own. Users can switch between themes either in the Options dialog or via the "View->Themes" menu.
- Added a new "View->Coverage" menu which has sub-options related to "Sequence Point Coverage" and "Function Coverage", assigned shortcut keys ctrl+(1-4):
  - Choosing one of the "Sequence Point" variants will display the tree nodes with differing naming combinations of coverage percentage and # unvisited sequence points.
  - Choosing "Function Coverage" will alter the coverage tree display so that only methods/classes that were invoked are highlighted. Method nodes show the number of visits to that method. Class, namespace and module nodes show the maximum visit count by any of their children.
- Added a "View->Sort By" menu option and context menu on the tree, with sub-options for "Name" (default), "Class name/line number", "Coverage %" (ascending/descending), "Uncovered Sequence Points" (ascending/descending) and "Visit Counts" (ascending/descending). Assigned shortcut keys of ctrl+shift+(1-8). Note that reloading the coverage file will remove the current sort and default back to by "Name".
- Added "Save" and "Save As" options to the File menu. These give you the option of overwriting/creating a new coverage.xml file with the current values loaded in NCoverExplorer. Any coverage exclusions/removed nodes will not appear in the saved coverage file. Note that the methods are written in the same order as the sort order specified above.
- Added an "Explore Coverage Folder" menu option to the file menu.
- Added an "Expand All" context menu option on the tree (shortcut ctrl+L).
- Enhanced the statistics pane. When a class node is selected you will now see additional columns of coverage %, unvisited sequence points and sequence points. When clicking on a method node you will now see the filename.
- Implemented "smart expansion" in the tree. If when you expand a node there is only one child node then that node will also be expanded and so on. Increases speed of tree navigation particularly if using a style of "Nested" namespaces with deep hierarchies.
- Display class file name in tab page header bar when a method node is clicked on. Tooltip shows the path.

The following minor changes were made:

- Optimised when reloads of the coverage file so it is now only required if you change a coverage exclusion or the tree grouping/nesting styles in the options dialog. Makes for a snappier UI.
- Added a "Close" menu option to remove any loaded coverage file(s) from display.
- Moved all the "Recent Files" into a submenu to tidy up the File menu.
- Pressing Tab/shift-tab while focus is in the TextEditor pane of source code will now move focus out of the TextEditor.
- If a source code file contains multiple classes (not nested), then only the highlighting relevant to that particular class will be displayed in the editor window as each class tree node is clicked.
- Excluding the My namespace is now done through the Exclusions feature.
- Options dialog can be displayed using the F4 shortcut key.
- Removed last remnants of "non VS.Net standard colors" from the C# ICSharpCode TextEditor template.
- Make the GUI naming consistent to correctly reference "sequence points" rather than "lines" and "unvisited" rather than "uncovered".
- Removed "Edit in VS.Net" from the View menu.
- Changed NCoverExplorer main form icon to one that includes 32x32 sizes so Alt-Tab switching looks better than upscaled 16x16 icon.
- User is now prompted to remove a non-existent coverage file from the "Recent" files list rather than automatically being removed.

The following bug fixes were made:

- Serializing the configuration settings was not flushing the stream - resulting sometimes in a blank settings file preventing people from loading NCoverExplorer. Will now revert to default settings if an error occurs.
- Displaying a source code file that has been modified to have less lines of code than at the time of the coverage run will now display a user friendly message box.
- Compensation made for NCover not reporting column information when profiling C++ code. NCoverExplorer will now highlight the entire line rather than throwing an error.
- In some circumstances properties were not highlighted consistently due to a bug in the property node expansion.
- Coverage greater than 99.5% will no longer be rounded up to 100% in the display. It is instead shown as ">99.5%".
- Extremely high visit counts will no longer overflow the visit count.
- Statistics pane for a class will now always consistently show the property nodes grouped, rather than only after the class node has been expanded in the tree.
- Recent file menu would display incorrectly for files numbered from 10 onwards truncating first character.
- Release notes & FAQ were always directed to website rather than local versions when NCoverExplorer was started from TestDriven.Net.

v1.3.1 - Feb 15th 2006

Bundled with TestDriven.Net from build 2.0.1435.

The following new features were introduced:

- Namespaces are now "flattened" by default in the tree. This looks like the ClassView browser in VS.Net 2005 (or Lutz Roeder's Reflector). You can retain the nested look by changing it in the View->Options dialog.
- If you use the original "nested" namespace style (like the VS.Net 2003 class browser), then inner namespaces will now be listed at the top of each branch with the classes listed underneath which is less confusing to navigate.
- Option to exclude the "My" namespace for VB.Net projects (for use with with BCL 2.0 & NCover 1.5.x).
- Right-click menu option on coverage tree (shortcut ctrl+R) to "Remove From Results" that selected node and all it's children. Will force the coverage values to be recalculated. Intended for use where you have undesired assemblies, namespaces, classes or methods included in the report that are skewing your coverage results and you want them removed.
- Option to specify a satisfactory coverage threshold as a number of lines instead/as well as a percentage. If either of the conditions are met the node is coloured differently (provided the coverage is not zero).
- Colours can now be customised for both the source code highlighting and the nodes in the tree.
- Collapse all nodes context menu option on the coverage tree control (shortcut ctrl-A). Equivalent to reloading the coverage file (but would preserve any changes you have made such as removing nodes).
- By default the NCoverExplorer now attempts to restore your currently selected node/caret position after reloading a coverage.xml file (either F5 or by execution of another "Test With Coverage" command in TestDriven.Net). You can turn off this behaviour in the View->Options dialog.
- Statistics pane is now sortable by method name (default), visit count and line number.
- Statistics pane now summarises all the methods and their visit counts when a class node is clicked. Can be used as a basic form of method invocation counting for a fairly rudimentary level of profiling. The colouring used is the same as that of the tree to visually assist in identifying methods invoked.

The following minor changes were made:

- Restructured the Options dialog to have a tabbed interface.
- Renamed the "Show Visit Pane" menu option to "Show Statistics".
- The statistics pane now includes the method name. Widths of the columns are remembered each time you close NCoverExplorer.
- Statistics pane now has icons and colouring to match those of the associated nodes in the coverage tree.
- Inner nested classes now nested internally in the tree under the parent class, sorted to the top.
- Added FAQ, Release Notes and Blog website to the Help menu.

The following bug fixes were made:

- Source code files now loading with "Encoding.Default" rather than previous default of UTF-8.
- Coverage highlighting not working correctly on multiple line statements.
- Now handles partial classes and yield statements correctly.

v1.3 - Feb 6th 2006

Bundled with TestDriven.Net from build 2.0.1373d.

The following new features were introduced:

- Launching from VS.Net using TestDriven.Net will now re-use the NCoverExplorer instance opened from a previous "Test with... Coverage" click. Each VS.Net instance has it's own instance of NCoverExplorer.
- Added "Edit in VS.Net" functionality (keyboard shortcut ctrl+ E) for classes and methods. Will navigate to source code in your IDE at same point where your cursor resides in NCoverExplorer. Replaces and enhances previous "Open File" right-click option which has been removed.
- Added "Expand Covered" functionality (keyboard shortcut ctrl + Q) - recurses through the child nodes of the current node and expands all those with partial or complete coverage. Useful when using in conjunction with TestDriven.Net for isolated unit testing.
- Added "coverage file" node at the top of the tree showing total coverage across all modules/namespaces.
- Group by module option (default) to assist with navigating coverage for large solutions.
- Configuration information for NCoverExplorer now written to Local Settings rather than registry.
- Increase default number of "recent files" to 10, with ability to alter in the Options dialog.
- Reload of the current coverage file now has a shortcut key of F5.
- Display the path to the currently loaded coverage file in the title bar.

The following minor changes were made:

- Performance enhancements to improve loading times further for large files.
- Static constructors now renamed from "cctor" to ".cctor" so as to be sorted at the top.
- Running NCoverExplorer for first time ever will use a better starting form position.
- Removed configuration option for "nesting properties" - default remains the same of "true".
- Source code refactoring into separate assemblies to facilitate unit testing.

v1.2 - Feb 1st 2006

First public release, bundled with TestDriven.Net from build 2.0.1341d.

The following new features were introduced:

- Block style highlighting option for both visited and unvisited code.
- Satisfactory coverage threshold.
- Nesting of properties as nodes are expanded.
- Further speed improvements for initial file parsing.

v1.1 - Jan 1st 2006

Speed improvements.

v1.0 - Dec 17th 2005

First version created.