NCoverExplorerReleaseNotes.html 39 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <title>NCoverExplorer Release Notes</title>
  5. <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR" />
  6. <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema" />
  7. <style type="text/css">
  8. body { font-size: 10pt; font-family: Verdana; }
  9. p.title { font-size: 20pt; font-weight: bold; }
  10. .subtitle { color: maroon; }
  11. p.question { font-weight: bold; }
  12. pre { font-size: 10pt; font-family: Courier; }
  13. pre.usage { background-color: #F0F0F0; }
  14. .quote { background-color: #F0F0F0; margin-left: 36pt;}
  15. .method { color: maroon; font-size: 10pt; font-weight: bold; }
  16. .hdrcell { background-color: #DDEEFF; font-size: 10pt; }
  17. .datacell { background-color: #FFFFEE; text-align: right; font-size: 10pt; }
  18. .hldatacell { background-color: #FFCCCC; text-align: right; font-size: 10pt; }
  19. .box { border: 1px solid; padding: 10px; }
  20. .treeviewBlack { color: black; }
  21. .treeviewGrey { color: grey; }
  22. .treeviewRed { color: red; }
  23. .treeviewBlue { color: blue; }
  24. .sourceBlue { background-color: #E0EDFD; color: black; }
  25. .sourceRed { background-color: #E6B0A5; color: black; }
  26. </style>
  27. </head>
  28. <body>
  29. <p class="title">NCoverExplorer Release Notes</p>
  30. <p>The latest version of this document is located <a href="http://www.kiwidude.com/dotnet/NCoverExplorerReleaseNotes.html">here</a>.
  31. <br/>For the latest NCoverExplorer news and updates, visit my <a href="http://www.kiwidude.com/blog/">blog</a>.</p>
  32. <hr/>
  33. <p class="question">v1.4.0 - Sep 16th 2007</p>
  34. <p class="answer">The following new features were introduced:</p>
  35. <ul>
  36. <li>
  37. Major rewrite of the underlying object design for future maintainability. Should improve treeview
  38. performance for .NET 2.0 users (and load performance for all users) as well as make it easier to
  39. add new features.
  40. </li>
  41. <li>
  42. Changes to the project setting file format and location, both as used by the NCoverExplorer gui
  43. and the NCoverExplorer.Console.exe application. If you use the /c argument supplying a configuration
  44. file to NCoverExplorer then you must modify your project file format. See ConsoleExample.config
  45. for details (replace the outer tag to be called ConsoleSetting).
  46. </li>
  47. <li>
  48. Replaced ICSharpCode text editor with Actipro which offers far superior features, more attractive
  49. appearance and provides a more flexible licensing model for the future of NCoverExplorer.
  50. </li>
  51. <li>
  52. A new attribute added into the coverage report xml of "totalSeqPoints" which includes the
  53. total of any excluded sequence points at that level. In response to a feature request in
  54. <a href="http://ncover.org/SITE/forums/thread/697.aspx">this</a> NCover forum thread to allow
  55. people to report how much code was excluded from coverage.
  56. </li>
  57. <li>
  58. Add a copy command to the right-click menu for the source code area.
  59. </li>
  60. <li>
  61. Add a print preview command to the File menu.
  62. </li>
  63. <li>
  64. Add support for profiling a specific process module to the Run NCover dialog.
  65. </li>
  66. <li>
  67. Add a /fc (failCombinedMinimum) option to NCoverExplorer.Console.exe for emulating the
  68. original behaviour of failing based on total coverage to supplement the /f option which
  69. fails if an individual module is below the coverage threshold.
  70. </li>
  71. </ul>
  72. <p class="answer">The following minor changes were made:</p>
  73. <ul>
  74. <li>
  75. Rewrite the options dialog to use a VS.Net style property pages approach.
  76. </li>
  77. <li>
  78. Exclusions tab in Options dialog - delete key is now a shortcut to removing an exclusion.
  79. </li>
  80. <li>
  81. Reorder the file menu slightly so Run NCover is separated.
  82. </li>
  83. <li>
  84. Source code window now has a splitter bar.
  85. </li>
  86. <li>
  87. Command line generated for NCover 1.5.7+ in NCover Runner dialog includes the //reg
  88. option if choosing to register coverlib.dll.
  89. </li>
  90. <li>
  91. Statistics pane auto-sizes the last column to fill the width of the listview.
  92. </li>
  93. <li>
  94. Coverage exclusions now support '?' and more complex wildcard expressions such
  95. as Test.*.Something*.
  96. </li>
  97. </ul>
  98. <p class="answer">The following bug fixes were made:</p>
  99. <ul>
  100. <li>
  101. Line number foreground colour not displayed correctly in options dialog tab.
  102. </li>
  103. <li>
  104. Directory not created if not existing when writing output report.
  105. </li>
  106. <li>
  107. Corrected typo in full name of parameter when using /quiet option with NCoverExplorer.Console.
  108. </li>
  109. <li>
  110. Reduce GDI usage by editor control.
  111. Rnsure Actipro renderer is correctly utilised.
  112. Turn off text margins in NCover run dialog for editor.
  113. Ensure C++ code has whole line highlighted even though no sequence point values.
  114. (Build 1.4.0.6)
  115. </li>
  116. </ul>
  117. <hr/>
  118. <p class="question">v1.3.6 - Apr 5th 2007</p>
  119. <p class="answer">Bundled with TestDriven.Net from build 2.5.2078.</p>
  120. <p class="answer">The following new features were introduced:</p>
  121. <ul>
  122. <li>
  123. Added a Find dialog (ctrl+F) to quickly navigate to a class. Wildcards are supported.
  124. </li>
  125. <li>
  126. Added a /q or /quiet option to NCoverExplorer.Console.exe to minimise the output.
  127. </li>
  128. </ul>
  129. <p class="answer">The following minor changes were made:</p>
  130. <ul>
  131. <li>
  132. Failing if less than a threshold now applies to any assembly not meeting the threshold
  133. rather than comparing against the total coverage across all assemblies.
  134. </li>
  135. <li>
  136. Add some examples to the NCoverExplorer.Console.exe output for the /help or /? (or no arguments).
  137. </li>
  138. <li>
  139. Pressing ESC on the NCover Runner dialog will now close it.
  140. </li>
  141. <li>
  142. Implement a workaround for poor treeview performance under .NET 2.0.
  143. </li>
  144. <li>
  145. Rather than displaying validation errors automatically "fix" paths with matching trailing
  146. slashes in the Change Source Path dialog.
  147. </li>
  148. <li>
  149. Writing of coverage files should now match the schema for the relevant NCover version.
  150. Later NCover versions like 1.5.7 have enhanced the schema, so the results of a merge or
  151. save from NCoverExplorer should offer a comparative schema in the result.
  152. </li>
  153. <li>
  154. Add a message indicating the return code to the output.
  155. </li>
  156. </ul>
  157. <p class="answer">The following bug fixes were made:</p>
  158. <ul>
  159. <li>
  160. NCover 1.5.5/6 produce duplicate sequence points. To workaround this fix Jamie Cansdale implemented
  161. a change for me to the way the methods are identified uniquely. The longer term fix is NCover version 1.5.7
  162. - this should keep things usable until that is released.
  163. </li>
  164. <li>
  165. Another issue up to at least NCover 1.5.7 is that non-instrumented code does not have the sequence
  166. points optimised. When merging multiple coverage files NCoverExplorer was incorrectly merging the noops with
  167. valid instrumented sequence points, resulting in lower coverage information.
  168. </li>
  169. <li>
  170. If CoverageReport.xsl stylesheet already exists in destination output folder for an xml report
  171. and is marked as read-only then the replace would fail.
  172. </li>
  173. <li>
  174. Drag/drop of coverage.xml files would add to the wrong end of the MRU menu once the maximum
  175. number of items is reached.
  176. </li>
  177. <li>
  178. If multiple classes in the same file then selecting a class node was not navigating to that
  179. class in the source code tab. It will now jump to the first unvisited sequence point, or if
  180. there are none of those the first sequence point in the class.
  181. </li>
  182. <li>
  183. Wildcards for coverage exclusions were only working if placed at the ends, not in the middle
  184. e.g. *.Tests or Testing.* would work, but xxx.*.yyy would not.
  185. </li>
  186. <li>
  187. Prevent some of the nasty GDI errors in CommandBars code from disrupting the GUI. Longer
  188. term will utilise another framework.
  189. </li>
  190. <li>
  191. Replacing paths by typing them in had MaxLength set to 50 so impossible to edit long paths
  192. in the Change Source Path dialog.
  193. </li>
  194. <li>
  195. Merging property nodes under a parent in the tree has a dependency on the ordering of the coverage output
  196. to ensure they appear properly.
  197. </li>
  198. <li>
  199. When restoring form position from persisted values, ensure it appears on a visible screen,
  200. catering for the user changing their display settings between sessions.
  201. </li>
  202. <li>
  203. Ensure stylesheet cannot be copied over the top of itself.
  204. </li>
  205. <li>
  206. Supplying a file pattern with no matches to NCoverExplorer.Console.exe was throwing an "Index was
  207. outside the bounds of the array" exception.
  208. </li>
  209. <li>
  210. Multiple coverage exclusion attributes not supplied correctly to NCover (build 26).
  211. </li>
  212. <li>
  213. Check to make sure node is assigned to a TreeView before getting handle to set text (build 32).
  214. </li>
  215. <li>
  216. Sort sequence point nodes when loading and handle merge case of multiple non-instrumented
  217. sequence points becoming a single sequence point. (build 36).
  218. </li>
  219. </ul>
  220. <hr/>
  221. <p class="question">v1.3.5 - Oct 23rd 2006</p>
  222. <p class="answer">Bundled with TestDriven.Net from build 2.0.1921.</p>
  223. <p class="answer">The following new features were introduced:</p>
  224. <ul>
  225. <li>
  226. Added ability to run NCover from within NCoverExplorer (all versions). User Ctrl+N or
  227. entries on File menu/toolbar to bring up configuration dialog. After successful
  228. execution, the resultant coverage file is displayed in NCoverExplorer.
  229. </li>
  230. <li>
  231. Added ability to generate MSBuild, NAnt and command-line scripts for running NCover
  232. from within NCoverExplorer. See the NCover dialog above.
  233. </li>
  234. <li>
  235. Added new function coverage viewing options and module/class coverage report.
  236. Indicates the percentage of functions covered rather than the sequence points within each.
  237. Supported by a new "satisfactory function threshold" and function % sorting options.
  238. </li>
  239. <li>
  240. Background colours can now be customised for coverage nodes in the tree.
  241. </li>
  242. <li>
  243. Reports will now have the current filtering applied, not just the sorting settings.
  244. </li>
  245. <li>
  246. Reports using NCoverExplorer.Console can now have filtering and sorting applied. Use the
  247. /sort: and /filter: command line arguments, or specify in a .config file (see example.config),
  248. or use the sort/filter arguments to the NAnt/MSBuild tasks.
  249. </li>
  250. <li>
  251. Sorting and filtering options applied are now persisted and reapplied to the next coverage
  252. xml file loaded, both in this and future sessions.
  253. </li>
  254. <li>
  255. Added ability to filter out all nodes exceeding coverage threshold.
  256. </li>
  257. <li>
  258. Revamp to the NAnt/MSBuild tasks. Renamed assemblies and namespaces. Included new attribute of
  259. "AssembliesList" as an alternative to the "Assemblies" group element to allow direct
  260. specification of a list as you would on the command line. The "Version" attribute is now optional
  261. - the task determines it from the NCover assembly instead if not specified. Tasks will automatically
  262. register NCover coverlib.dll using the HKCU entry in the registry - no need for regsvr32 any more!
  263. NCoverExplorer task now writes it's config file to temp folder for passing to the executable.
  264. </li>
  265. <li>
  266. Added documentation for the NAnt and MSBuild tasks. This is included both in the NCoverExplorer.Extras.zip
  267. file, as well as being available online for the custom <a href="http://www.kiwidude.com/dotnet/doc/NCoverExplorer.MSBuildTasks/index.html">MSBuild Task Help</a>
  268. and <a href="http://www.kiwidude.com/dotnet/doc/NCoverExplorer.NAntTasks/index.html">NAnt Task Help</a>.
  269. Links also available off the Help menu for NCoverExplorer.
  270. </li>
  271. <li>
  272. Added a schema file ConsoleConfig.xsd to the distribution for people wanting to know the exact syntax
  273. options for creating .config files to pass to NCoverExplorer.Console using the /config switch.
  274. </li>
  275. <li>
  276. Added regular expression support to the coverage exclusions dialog for people wanting more complex queries.
  277. </li>
  278. </ul>
  279. <p class="answer">The following minor changes were made:</p>
  280. <ul>
  281. <li>
  282. <span style="color:red">Configuration file change - the ModuleThresholds section in .config files passed to NCoverExplorer.Console now
  283. uses propercase attribute names to be consistent with the rest of the configuration file.
  284. i.e. "ModuleName" instead of "moduleName", and "SatisfactoryCoverage" instead of "satisfactoryCoverage".</span> You must update
  285. your NAnt/MSBuild tasks for NCoverExplorer if you use these. If you instead use the &lt;exec&gt; task with a .config
  286. file then you should update the case of the entries in this file. This only affects people who have setup coverage exclusions
  287. at the module level for reporting purposes.
  288. </li>
  289. <li>
  290. If source code is out of date compared to the coverage results, the user is prompted with
  291. the change source path dialog.
  292. </li>
  293. <li>
  294. If the user chooses a new source code location, the tab is now automatically opened for
  295. that location rather than requiring the user to click on the tree node again.
  296. </li>
  297. <li>
  298. Added Help->NCoverExplorer Forum menu option to link to the NCover website. Also included
  299. forum link information on the exception dialog.
  300. </li>
  301. <li>
  302. Added a toolbar button for turning off filtering.
  303. </li>
  304. <li>
  305. <span style="color:red">Keyboard shortcut change - Changed the keyboard shortcuts for next/previous unvisited class (ALT+UP/DOWN) and
  306. next/previous unvisited line in class (ALT+LEFT/RIGHT).</span>
  307. </li>
  308. <li>
  309. Remember which tab was last opened in the NCoverExplorer options dialog during an NCoverExplorer session.
  310. </li>
  311. <li>
  312. Replaced references to "transparent.gif" with "shim.gif" in the NCoverExplorerSummary.xsl. The "shim.gif"
  313. file is a transparent 1x1 gif already distributed with CC.Net.
  314. </li>
  315. <li>
  316. Coverage exclusions for assemblies are now case insensitive.
  317. </li>
  318. <li>
  319. There are no longer two default coverage exclusions added of "*.Tests" and "*.My*" for first time users.
  320. Intended for demo purposes only but stayed in until now. New users can manually add them if they desire them.
  321. </li>
  322. </ul>
  323. <p class="answer">The following bug fixes were made:</p>
  324. <ul>
  325. <li>
  326. Overloaded constructors with class level variable declarations were being merged into a single
  327. constructor in the coverage results as they had the same "start line" of the variable. Now uses
  328. end line as part of the identifying key for each method.
  329. </li>
  330. <li>
  331. Memory leak from opening and closing tabs displaying source code.
  332. </li>
  333. <li>
  334. .Net 2.0 performance is pretty dire due to crap Microsoft changes to the TreeView control.
  335. Change to default to .Net 1.1 in NCoverExplorer.exe.config and wrap updates to the tree
  336. in BeginUpdate/EndUpdate.
  337. </li>
  338. <li>
  339. Parsing Java code would blow up if an accessor had the same name as a nested class (illegal in C#).
  340. </li>
  341. <li>
  342. Bugfix in NCover task where multiple assemblies were specified for NCover 1.5.4, which requires
  343. separate &lt;assembly&gt; nodes.
  344. </li>
  345. <li>
  346. Bugfix in trying to restore selected node text after refreshing file could raise
  347. null reference exception.
  348. </li>
  349. <li>
  350. Bugfix so that module names specified in module thresholds when using NCoverExplorer.Console
  351. are no longer case sensitive for matching.
  352. </li>
  353. <li>
  354. Added support for NCover 1.5.5 - the //q bug is fixed in NCover. Also changed parsing code so that modules
  355. with a blank assembly name (through using TestDriven.Net) are ignored from the coverage.
  356. </li>
  357. <li>
  358. Bugfix for merge functionality for NCover.Console when wildcards were used with relative paths.
  359. </li>
  360. <li>
  361. Bugfix for naming of xml/html arguments for NCover.Console with relative file paths.
  362. </li>
  363. <li>
  364. Bugfix for drag/drop broken while making the memory usage optimisations during the 1.3.5 beta release.
  365. </li>
  366. <li>
  367. Print button was enabled when no source code displayed resulting in exception.
  368. </li>
  369. </ul>
  370. <hr/>
  371. <p class="question">v1.3.4 - Jul 10th 2006</p>
  372. <p class="answer">Bundled with TestDriven.Net from build 2.0.1702.</p>
  373. <p class="answer">The following new features were introduced:</p>
  374. <ul>
  375. <li>
  376. Added toolbar buttons which support moving to the next and previous unvisited code
  377. within a class or namespace. Shortcut keys of N and P for next/previous unvisited line in the
  378. current class (or mouse forward/back buttons). Use Ctrl+N and Ctrl+P to navigate to the
  379. next/previous partially or unvisited class within the namespace (or Ctrl+forward/back mouse buttons).
  380. </li>
  381. <li>
  382. NCoverExplorer.Console.exe now supports saving the merged results of the coverage xml file(s) with
  383. a /s[ave] option. The NCoverExplorer NAnt and MSBuild tasks have also been enhanced to support this
  384. with an optional "mergeFileName" attribute.
  385. </li>
  386. <li>
  387. NCoverExplorer.Console.exe now supports wildcards for coverage xml filename(s).
  388. </li>
  389. <li>
  390. NCoverExplorer.Console.exe now supports module level coverage thresholds, rather than just a project
  391. coverage threshold. This feature allows finer tolerance for both output on the reports and to fail
  392. a build. Specifying the module thresholds is done either through a .config file (see ConsoleExample.config)
  393. or through parameters in the NAnt/MSBuild tasks.
  394. </li>
  395. <li>
  396. Added a new summary report showing class coverage per namespace per module.
  397. </li>
  398. <li>
  399. Enhanced the NCoverExplorerSummary.xsl to display summaries of each module.
  400. </li>
  401. <li>
  402. Clicking on a class with non-existent source code displays a dialog allowing the user to specify an alternate
  403. folder. For use when the source code location indicated within the coverage.xml file(s) loaded differs from
  404. that on the local machine now (e.g. a different drive letter or folder path).
  405. </li>
  406. </ul>
  407. <p class="answer">The following minor changes were made:</p>
  408. <ul>
  409. <li>
  410. NCoverExplorer release is compiled against .Net 1.1 rather than .Net 1.0 due to a dependency on the
  411. FolderBrowserDialog not available in .Net 1.0.
  412. </li>
  413. <li>
  414. Coverage file stylesheet modified to show coverage column and NCoverExplorer version information with
  415. numerous other cosmetic enhancements.
  416. </li>
  417. <li>
  418. Enrich error environment information to include .Net framework version and operating system.
  419. </li>
  420. <li>
  421. Classes without a namespace are now shown under a namespace node of "-" like in Reflector.
  422. </li>
  423. </ul>
  424. <p class="answer">The following bug fixes were made:</p>
  425. <ul>
  426. <li>
  427. Warnings about mismatches when merging xml files are no longer issued. NCover seems to inconsistently
  428. produce xml file coverage of methods which caused some users problems when merging.
  429. </li>
  430. <li>
  431. Nested classes without a namespace specified would cause the coverage.xml file to fail to load.
  432. </li>
  433. <li>
  434. Parsing overloaded properties (overloads of this[]) would not show the separate overloads in the tree
  435. and have incorrect coverage stats.
  436. </li>
  437. <li>
  438. Fix memory leaks for when source code tabs are closed.
  439. </li>
  440. <li>
  441. Minimum coverage threshold for NCoverExplorer.Console would sometimes be incorrect due to rounding.
  442. </li>
  443. <li>
  444. Changed NCoverExplorerSummary.xsl to format to 1dp rather than rounding to 0.
  445. </li>
  446. <li>
  447. Sorting by filename for a method then clicking on class node threw exception.
  448. </li>
  449. <li>
  450. VB.Net source code keywords not highlighted with the correct ICSharpCode template.
  451. </li>
  452. </ul>
  453. <hr/>
  454. <p class="question">v1.3.3 - Apr 4th 2006</p>
  455. <p class="answer">Bundled with TestDriven.Net from build 2.0.1578.</p>
  456. <p class="answer">The following new features were introduced:</p>
  457. <ul>
  458. <li>
  459. Added NCoverExplorer.Console.exe for utilising NCoverExplorer features with automated
  460. coverage builds and NAnt tasks. By default will load up all the specified coverage file(s), apply
  461. any coverage exclusion(s) specified in the NCoverExplorer configuration and display total
  462. coverage statistics in the console output. If all items processed successfully returns an exit code of 0,
  463. if an exception occurs returns an exit code of 2.
  464. </li>
  465. <li>
  466. Added /m:xx (or /minCoverage:xx) argument to NCoverExplorer.Console.exe. When used in conjunction with
  467. /f (or /failMinimum) an exit code of 3 is returned if the min coverage is not reached. Can act
  468. as a trigger for failing an automated build such as with CruiseControl.Net.
  469. </li>
  470. <li>
  471. Added module & namespace summary xml report generation to NCoverExplorer (both the GUI and Console versions).
  472. In the GUI, this is available via the "View->Reports" menu. The three reports that are offered currently are:
  473. <br/>&nbsp;- Module Summary (Coverage totals for the project and per module);
  474. <br/>&nbsp;- Namespace Summary (Coverage totals for the project and per namespace);
  475. <br/>&nbsp;- Module Namespace Summary (Coverage totals for the project, per module and per namespace);
  476. </li>
  477. <li>
  478. Reports can be generated in xml or html format. Native html may be useful for directly attaching to e-mails.
  479. If xml format is chosen a "CoverageReport.xsl" stylesheet is copied from the NCoverExplorer installation
  480. folder to the report directory and linked to the xml file similar to coverage.xml/coverage.xsl by NCover.
  481. </li>
  482. <li>
  483. Reports can contain an "excluded nodes" footer section. This lists at the topmost level all of the items
  484. excluded from coverage at the time the report was run.
  485. </li>
  486. <li>
  487. Added "View->Filter" main menu and context menus, offering the ability to filter out nodes. Filtered
  488. nodes are simply moved under a new "Filtered" tree node and do not alter the coverage statistics
  489. (unlike excluded nodes which are effectively removed from the tree). Filters offered are either to
  490. hide all 100% covered nodes, or hide all unvisited (0%) nodes.
  491. </li>
  492. <li>
  493. Added "Include in Results" context menu option for when clicking on either the "Excluded" bin or one
  494. of it's immediate child nodes. Offers a way to "undo" an exclusion without reloading the file.
  495. </li>
  496. <li>
  497. Added "View->Summary Statistics" menu option (shortcut F3) to show dialog of totals of files, classes, members,
  498. NCLOC (non-commented lines of code) and sequence points. Statistics do not include excluded nodes
  499. (but will include filtered nodes).
  500. </li>
  501. <li>
  502. Created NAnt and MSBuild tasks for execution of NCoverExplorer.Console as an alternative to the &lt;exec&gt; task.
  503. These tasks offer a more developer friendly alternative such as &lt;fileset&gt; for coverage files and creating a
  504. .config file on the fly based on specified parameters such as &lt;exclusions&gt; within the .build/.proj file.
  505. </li>
  506. <li>
  507. Replaced menus with a lightly tweaked variant of Lutz Roeder's excellent CommandBar code to give a more modern
  508. look and assign icons on the menus.
  509. </li>
  510. <li>
  511. Added a toolbar. If not wanted the toolbar can be hidden using the "View->Show Toolbar" menu option.
  512. </li>
  513. </ul>
  514. <p class="answer">The following minor changes were made:</p>
  515. <ul>
  516. <li>
  517. Options dialog shortcut changed to F2.
  518. </li>
  519. <li>
  520. Excluding a node will now select the node after by default rather than the one previous.
  521. </li>
  522. </ul>
  523. <p class="answer">The following bug fixes were made:</p>
  524. <ul>
  525. <li>
  526. Fix bug where delete key shortcut was active on the root coverage file node, causing an exception to be thrown.
  527. </li>
  528. <li>
  529. Path was being truncated from the module name when saved.
  530. </li>
  531. <li>
  532. Fix bug where changing theme without coverage file loaded caused error.
  533. </li>
  534. </ul>
  535. <hr/>
  536. <p class="question">v1.3.2 - Mar 14th 2006</p>
  537. <p class="answer">Bundled with TestDriven.Net from build 2.0.1545.</p>
  538. <p class="answer">The following new features were introduced:</p>
  539. <ul>
  540. <li>
  541. Added support for merging multiple coverage files. This can be triggered through a variety of ways:
  542. <br/>&nbsp;- Selecting multiple test classes/fixtures/projects in TestDriven.Net;
  543. <br/>&nbsp;- Passing multiple files in the command line arguments;
  544. <br/>&nbsp;- Selecting multiple files in the Open dialog;
  545. <br/>&nbsp;- Using a new "File->Merge..." menu option;
  546. <br/>&nbsp;- Drag/dropping onto the NCoverExplorer application.
  547. </li>
  548. <li>
  549. Added tabs for each source code file you open to explore coverage on. If you click on a partial class
  550. then tabs will be opened for each of the source code files making up the class.
  551. </li>
  552. <li>
  553. Added the ability to exclude assemblies, namespaces or classes from the coverage results by a wildcard capable
  554. case-sensitive match on the name. By default NCoverExplorer includes two exclusions:
  555. <br/>&nbsp;- Exclude all assemblies with the name ending in ".Tests".
  556. <br/>&nbsp;- Exclude all namespaces with the name containing ".My" (for VB.Net exclusions).
  557. </li>
  558. <li>
  559. Added support for the NCover 1.5.4 "excluded" attribute which can be found in the coverage.xml files when
  560. the appropriate NCover command-line attributes are used. Note that TestDriven.Net still does not as yet
  561. support this attribute so you need to use the NCover.Console command line for this feature - for more information see
  562. <a href=http://ncover.org/SITE/blogs/ncover_blog/archive/2006/01/29/103.aspx>here</a>. NCoverExplorer
  563. will not include nodes marked as 'excluded' by NCover in it's totals but will still display them in the tree.
  564. </li>
  565. <li>
  566. Added an "Excluded" child bin node containing all nodes that have been excluded by the options dialog, by NCover
  567. attributes or by the "Exclude From Results" context menu option (see next point).
  568. </li>
  569. <li>
  570. Replaced the "Remove from Results" context menu feature with "Exclude from Results" (shortcut of the DEL key).
  571. Achieves a similar result of removing nodes from coverage calculations, however the nodes are "moved" to the
  572. Excluded bin rather than being deleted from the tree.
  573. </li>
  574. <li>
  575. Added a custom "theme" capability along with further colour and font customisation options for the coverage tree,
  576. statistics and source code panes. A number of predefined "themes" are supplied and users can add their own.
  577. Users can switch between themes either in the Options dialog or via the "View->Themes" menu.
  578. </li>
  579. <li>
  580. Added a new "View->Coverage" menu which has sub-options related to "Sequence Point Coverage" and
  581. "Function Coverage", assigned shortcut keys ctrl+(1-4):
  582. <br/>&nbsp;- Choosing one of the "Sequence Point" variants will display the tree nodes with differing naming
  583. combinations of coverage percentage and # unvisited sequence points.
  584. <br/>&nbsp;- Choosing "Function Coverage" will alter the coverage tree display so that only methods/classes that were
  585. invoked are highlighted. Method nodes show the number of visits to that method. Class, namespace and module nodes
  586. show the maximum visit count by any of their children.
  587. </li>
  588. <li>
  589. Added a "View->Sort By" menu option and context menu on the tree, with sub-options for "Name" (default),
  590. "Class name/line number", "Coverage %" (ascending/descending), "Uncovered Sequence Points" (ascending/descending)
  591. and "Visit Counts" (ascending/descending).
  592. Assigned shortcut keys of ctrl+shift+(1-8). Note that reloading the coverage file will remove the current sort
  593. and default back to by "Name".
  594. </li>
  595. <li>
  596. Added "Save" and "Save As" options to the File menu. These give you the option of overwriting/creating a
  597. new coverage.xml file with the current values loaded in NCoverExplorer. Any coverage exclusions/removed
  598. nodes will not appear in the saved coverage file. Note that the methods are written in the same order as
  599. the sort order specified above.
  600. </li>
  601. <li>
  602. Added an "Explore Coverage Folder" menu option to the file menu.
  603. </li>
  604. <li>
  605. Added an "Expand All" context menu option on the tree (shortcut ctrl+L).
  606. </li>
  607. <li>
  608. Enhanced the statistics pane. When a class node is selected you will now see additional columns of
  609. coverage %, unvisited sequence points and sequence points. When clicking on a method node you will
  610. now see the filename.
  611. </li>
  612. <li>
  613. Implemented "smart expansion" in the tree. If when you expand a node there is only one child node
  614. then that node will also be expanded and so on. Increases speed of tree navigation particularly
  615. if using a style of "Nested" namespaces with deep hierarchies.
  616. </li>
  617. <li>
  618. Display class file name in tab page header bar when a method node is clicked on. Tooltip shows the path.
  619. </li>
  620. </ul>
  621. <p class="answer">The following minor changes were made:</p>
  622. <ul>
  623. <li>
  624. Optimised when reloads of the coverage file so it is now only required if you change a coverage exclusion
  625. or the tree grouping/nesting styles in the options dialog. Makes for a snappier UI.
  626. </li>
  627. <li>
  628. Added a "Close" menu option to remove any loaded coverage file(s) from display.
  629. </li>
  630. <li>
  631. Moved all the "Recent Files" into a submenu to tidy up the File menu.
  632. </li>
  633. <li>
  634. Pressing Tab/shift-tab while focus is in the TextEditor pane of source code will now
  635. move focus out of the TextEditor.
  636. </li>
  637. <li>
  638. If a source code file contains multiple classes (not nested), then only the highlighting relevant
  639. to that particular class will be displayed in the editor window as each class tree node is clicked.
  640. </li>
  641. <li>
  642. Excluding the My namespace is now done through the Exclusions feature.
  643. </li>
  644. <li>
  645. Options dialog can be displayed using the F4 shortcut key.
  646. </li>
  647. <li>
  648. Removed last remnants of "non VS.Net standard colors" from the C# ICSharpCode TextEditor template.
  649. </li>
  650. <li>
  651. Make the GUI naming consistent to correctly reference "sequence points" rather than "lines" and "unvisited"
  652. rather than "uncovered".
  653. </li>
  654. <li>
  655. Removed "Edit in VS.Net" from the View menu.
  656. </li>
  657. <li>
  658. Changed NCoverExplorer main form icon to one that includes 32x32 sizes so Alt-Tab switching looks
  659. better than upscaled 16x16 icon.
  660. </li>
  661. <li>
  662. User is now prompted to remove a non-existent coverage file from the "Recent" files list rather than
  663. automatically being removed.
  664. </li>
  665. </ul>
  666. <p class="answer">The following bug fixes were made:</p>
  667. <ul>
  668. <li>
  669. Serializing the configuration settings was not flushing the stream - resulting sometimes in a blank settings file
  670. preventing people from loading NCoverExplorer. Will now revert to default settings if an error occurs.
  671. </li>
  672. <li>
  673. Displaying a source code file that has been modified to have less lines of code than at the time of the coverage run
  674. will now display a user friendly message box.
  675. </li>
  676. <li>
  677. Compensation made for NCover not reporting column information when profiling C++ code. NCoverExplorer will now
  678. highlight the entire line rather than throwing an error.
  679. </li>
  680. <li>
  681. In some circumstances properties were not highlighted consistently due to a bug in the property node expansion.
  682. </li>
  683. <li>
  684. Coverage greater than 99.5% will no longer be rounded up to 100% in the display. It is instead shown as ">99.5%".
  685. </li>
  686. <li>
  687. Extremely high visit counts will no longer overflow the visit count.
  688. </li>
  689. <li>
  690. Statistics pane for a class will now always consistently show the property nodes grouped, rather than only
  691. after the class node has been expanded in the tree.
  692. </li>
  693. <li>
  694. Recent file menu would display incorrectly for files numbered from 10 onwards truncating first character.
  695. </li>
  696. <li>
  697. Release notes & FAQ were always directed to website rather than local versions when NCoverExplorer was started
  698. from TestDriven.Net.
  699. </li>
  700. </ul>
  701. <hr/>
  702. <p class="question">v1.3.1 - Feb 15th 2006</p>
  703. <p class="answer">Bundled with TestDriven.Net from build 2.0.1435.</p>
  704. <p class="answer">The following new features were introduced:</p>
  705. <ul>
  706. <li>
  707. Namespaces are now "flattened" by default in the tree. This looks like the ClassView
  708. browser in VS.Net 2005 (or Lutz Roeder's Reflector). You can retain the nested look by changing it in the View->Options dialog.
  709. </li>
  710. <li>
  711. If you use the original "nested" namespace style (like the VS.Net 2003 class browser), then inner namespaces will now be
  712. listed at the top of each branch with the classes listed underneath which is less confusing to navigate.
  713. </li>
  714. <li>
  715. Option to exclude the "My" namespace for VB.Net projects (for use with with BCL 2.0 & NCover 1.5.x).
  716. </li>
  717. <li>
  718. Right-click menu option on coverage tree (shortcut ctrl+R) to "Remove From Results" that selected node
  719. and all it's children. Will force the coverage values to be recalculated. Intended for use where
  720. you have undesired assemblies, namespaces, classes or methods included in the report that are skewing your
  721. coverage results and you want them removed.
  722. </li>
  723. <li>
  724. Option to specify a satisfactory coverage threshold as a number of lines instead/as well as a percentage.
  725. If either of the conditions are met the node is coloured differently (provided the coverage is not zero).
  726. </li>
  727. <li>
  728. Colours can now be customised for both the source code highlighting and the nodes in the tree.
  729. </li>
  730. <li>
  731. Collapse all nodes context menu option on the coverage tree control (shortcut ctrl-A). Equivalent to reloading
  732. the coverage file (but would preserve any changes you have made such as removing nodes).
  733. </li>
  734. <li>
  735. By default the NCoverExplorer now attempts to restore your currently selected node/caret position after
  736. reloading a coverage.xml file (either F5 or by execution of another "Test With Coverage" command in TestDriven.Net).
  737. You can turn off this behaviour in the View->Options dialog.
  738. </li>
  739. <li>
  740. Statistics pane is now sortable by method name (default), visit count and line number.
  741. </li>
  742. <li>
  743. Statistics pane now summarises all the methods and their visit counts when a class node is clicked.
  744. Can be used as a basic form of method invocation counting for a fairly rudimentary level of profiling.
  745. The colouring used is the same as that of the tree to visually assist in identifying methods invoked.
  746. </li>
  747. </ul>
  748. <p class="answer">The following minor changes were made:</p>
  749. <ul>
  750. <li>
  751. Restructured the Options dialog to have a tabbed interface.
  752. </li>
  753. <li>
  754. Renamed the "Show Visit Pane" menu option to "Show Statistics".
  755. </li>
  756. <li>
  757. The statistics pane now includes the method name. Widths of the columns are remembered each time you close NCoverExplorer.
  758. </li>
  759. <li>
  760. Statistics pane now has icons and colouring to match those of the associated nodes in the coverage tree.
  761. </li>
  762. <li>
  763. Inner nested classes now nested internally in the tree under the parent class, sorted to the top.
  764. </li>
  765. <li>
  766. Added FAQ, Release Notes and Blog website to the Help menu.
  767. </li>
  768. </ul>
  769. <p class="answer">The following bug fixes were made:</p>
  770. <ul>
  771. <li>
  772. Source code files now loading with "Encoding.Default" rather than previous default of UTF-8.
  773. </li>
  774. <li>
  775. Coverage highlighting not working correctly on multiple line statements.
  776. </li>
  777. <li>
  778. Now handles partial classes and yield statements correctly.
  779. </li>
  780. </ul>
  781. <hr/>
  782. <p class="question">v1.3 - Feb 6th 2006</p>
  783. <p class="answer">Bundled with TestDriven.Net from build 2.0.1373d.</p>
  784. <p class="answer">The following new features were introduced:</p>
  785. <ul>
  786. <li>
  787. Launching from VS.Net using TestDriven.Net will now re-use the NCoverExplorer instance
  788. opened from a previous "Test with... Coverage" click. Each VS.Net instance has it's own
  789. instance of NCoverExplorer.
  790. </li>
  791. <li>
  792. Added "Edit in VS.Net" functionality (keyboard shortcut ctrl+ E) for classes and methods.
  793. Will navigate to source code in your IDE at same point where your cursor resides in NCoverExplorer.
  794. Replaces and enhances previous "Open File" right-click option which has been removed.
  795. </li>
  796. <li>
  797. Added "Expand Covered" functionality (keyboard shortcut ctrl + Q) - recurses through the child
  798. nodes of the current node and expands all those with partial or complete coverage. Useful when
  799. using in conjunction with TestDriven.Net for isolated unit testing.
  800. </li>
  801. <li>
  802. Added "coverage file" node at the top of the tree showing total coverage across all modules/namespaces.
  803. </li>
  804. <li>
  805. Group by module option (default) to assist with navigating coverage for large solutions.
  806. </li>
  807. <li>
  808. Configuration information for NCoverExplorer now written to Local Settings rather than registry.
  809. </li>
  810. <li>
  811. Increase default number of "recent files" to 10, with ability to alter in the Options dialog.
  812. </li>
  813. <li>
  814. Reload of the current coverage file now has a shortcut key of F5.
  815. </li>
  816. <li>
  817. Display the path to the currently loaded coverage file in the title bar.
  818. </li>
  819. </ul>
  820. <p class="answer">The following minor changes were made:</p>
  821. <ul>
  822. <li>
  823. Performance enhancements to improve loading times further for large files.
  824. </li>
  825. <li>
  826. Static constructors now renamed from "cctor" to ".cctor" so as to be sorted at the top.
  827. </li>
  828. <li>
  829. Running NCoverExplorer for first time ever will use a better starting form position.
  830. </li>
  831. <li>
  832. Removed configuration option for "nesting properties" - default remains the same of "true".
  833. </li>
  834. <li>
  835. Source code refactoring into separate assemblies to facilitate unit testing.
  836. </li>
  837. </ul>
  838. <hr/>
  839. <p class="question">v1.2 - Feb 1st 2006</p>
  840. <p class="answer">First public release, bundled with TestDriven.Net from build 2.0.1341d.</p>
  841. <p class="answer">The following new features were introduced:</p>
  842. <ul>
  843. <li>
  844. Block style highlighting option for both visited and unvisited code.
  845. </li>
  846. <li>
  847. Satisfactory coverage threshold.
  848. </li>
  849. <li>
  850. Nesting of properties as nodes are expanded.
  851. </li>
  852. <li>
  853. Further speed improvements for initial file parsing.
  854. </li>
  855. </ul>
  856. <hr/>
  857. <p class="question">v1.1 - Jan 1st 2006</p>
  858. <p class="answer">Speed improvements.</p>
  859. <hr/>
  860. <p class="question">v1.0 - Dec 17th 2005</p>
  861. <p class="answer">First version created.</p>
  862. </body>
  863. </html>