main
  1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  2<html>
  3    <head>
  4		<script type="text/javascript">
  5			<!--
  6			function Toggle(id)
  7			{
  8				var e = document.getElementById(id);
  9				if(e.style.display == 'none')
 10					e.style.display = 'block';
 11				else
 12					e.style.display = 'none';
 13			}			
 14				
 15			function SwitchAll(how)
 16			{	var len = document.all.length-1;
 17				for(i=0;i!=len;i++)	{	
 18					var block = document.all[i];
 19					if (block != null && block.id != '')
 20					{ block.style.display=how;}
 21				}
 22			}
 23
 24			function ExpandAll()
 25			{SwitchAll('block');}
 26	
 27			function CollapseAll()
 28			{SwitchAll('none');}
 29			// -->
 30		</script>
 31        <title>NCoverExplorer FAQ</title>
 32        <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
 33        <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
 34        <style> 
 35			body { font-size: 10pt; font-family: Verdana; }
 36			p.title { font-size: 20pt; font-weight: bold; }
 37			.action { color: maroon; font-size: 10pt; font-weight: bold; cursor:pointer }
 38			.question { font-weight: bold; cursor:pointer }
 39			.answer { margin: 15px; }
 40			pre { font-size: 10pt; font-family: Courier; }
 41			pre.usage { background-color: #F0F0F0; }
 42			.subtitle { color: maroon; font-weight: bold; }
 43			.quote { background-color: #F0F0F0; margin-left: 36pt;}
 44			.method { color: maroon; font-size: 10pt; font-weight: bold; }
 45			.hdrcell { background-color: #DDEEFF; font-size: 10pt; }
 46			.datacell { background-color: #FFFFEE; text-align: right; font-size: 10pt; }
 47			.hldatacell { background-color: #FFCCCC; text-align: right; font-size: 10pt; }
 48			.box { border: 1px solid; padding: 10px; }
 49			.treeviewBlack { color: black; }
 50			.treeviewGrey { color: grey; }
 51			.treeviewRed { color: red; }
 52			.treeviewBlue { color: blue; }
 53			.sourceBlue { background-color: #E0EDFD; color: black; }
 54			.sourceRed { background-color: #E6B0A5; color: black; }
 55        </style>
 56    </head>
 57    <body>
 58        <P class="title">NCoverExplorer FAQ</P>
 59        <P>The latest version of this document is located <A href="http://www.kiwidude.com/dotnet/NCoverExplorerFAQ.html">here</A>.
 60        <BR/>For the latest NCoverExplorer news and updates, visit my <A href="http://www.kiwidude.com/blog/">blog</A>.</P>
 61        <P class="action"><a onClick="ExpandAll();">Expand All</a>&nbsp;|&nbsp;<a onClick="CollapseAll();">Collapse All</a></P>
 62        <a class="question" onclick="return Toggle('answer1')">1. What is NCoverExplorer?</a><br/>
 63        <div id="answer1" style="display:none">
 64			<P class="answer">This tool allows you to open a coverage.xml file produced by 
 65				<A href="http://ncover.org"/>NCover</A> and navigate the source code. The 
 66				source code is highlighted to clearly show which statements were visited
 67				and not visited. You can filter, sort and report on the coverage results.
 68			</P>
 69		</div>
 70        <a class="question" onclick="return Toggle('answer2')">2. What versions of the .NET Framework does it work with?</a><br/>
 71        <div id="Div1" style="display:none">
 72			<P class="answer">NCoverExplorer as of version 1.3.4 requires either .NET 1.1 or .Net 2.0 (it is compiled against
 73			.Net 1.1).
 74			</P>
 75        </div>
 76        <a class="question" onclick="return Toggle('answer2')">2. What versions of NCover does it work with?</a><br/>
 77        <div id="answer2" style="display:none">
 78			<P class="answer">NCoverExplorer has been tested with both NCover 1.3.3 and up to the latest NCover 1.5.7. It will NOT
 79				work with NCover 1.4.6.	Note that NCover 1.5.x only works with .NET 2.0 and requires at least NCoverExplorer 1.3.5
 80				and/or a TestDriven.Net build > 2.0.1786 due to a limitation in NCover or else you will get duplicate nodes in your 
 81				coverage results.
 82			</P>
 83        </div>
 84        <a class="question" onclick="return Toggle('answer3')">3. Can I integrate it with my Visual Studio.Net version XXX IDE?</a><br/>
 85        <div id="answer3" style="display:none">
 86			<P class="answer">Jamie Cansdale now offers a "Test with... Coverage" feature
 87				in the latest version of his excellent <A href="http://www.testdriven.net/">TestDriven.Net</A>
 88				tool. This will automatically launch NCoverExplorer to display the results
 89				of running unit test(s) under code coverage with NCover. Note that as of build 1341
 90				TestDriven.Net now works using both the latest version of NCover (1.5.x) and the earlier NCover 1.3.3 version.
 91			</P>
 92 		</div>
 93        <a class="question" onclick="return Toggle('answer4')">4. Can I integrate it without TestDriven.Net?</a><br/>
 94        <div id="answer4" style="display:none">
 95			<P class="answer">My solution I used at work was a combination of NAnt and NAntRunner 
 96				(the VS.Net add-in) to perform something similar. I have NAnt tasks to:
 97				<UL>
 98					<LI>
 99						Perform the build.
100					</LI>
101					<LI>
102						Execute NCover while running unit tests (either all unit tests or those for
103						a specific fixture using the /fixture feature of <A href="http://nunit.org/">NUnit</A>).
104					</LI>
105					<LI>
106						Launch NCoverExplorer displaying the output coverage.xml file.
107					</LI>
108				</UL>
109			</P>
110 			<P class="answer">As of NCoverExplorer 1.3.5 you now have another option. There is now an included GUI for
111 				running NCover directly from within NCoverExplorer and displaying the results.
112			</P>
113		</div>
114        <a class="question" onclick="return Toggle('answer5')">5. How does it compare to Visual Studio Team System?</a><br/>
115		<div id="answer5" style="display:none">
116			<P class="answer">VSTS features of unit testing and code coverage will only be included with the premium bundles
117				of the Visual Studio product range - and as such will most likely be priced above what many
118				developers and businesses are prepared to pay. For "everyone else" in the market it would seem likely
119				that they will continue to utilise open source alternatives.
120			</P>
121			<P class="answer">Even if you are one of the fortunate developers who can afford VSTS, it still must
122				be measured feature-wise against the open source alternatives which in a lot of cases have now been established
123				for many years. Developers and managers will weigh up for themselves how important those features are
124				as well as other factors such as Microsoft support etc. The nice thing for many of us is that we have a choice...
125			</P>
126 			<P class="answer">We have had a number of people e-mail us and say they prefer TestDriven.Net and NCoverExplorer
127 				over the VSTS alternative and want to switch off the VSTS ability - that's rather gratifying from our perspective!
128			</P>
129 		</div>
130        <a class="question" onclick="return Toggle('answer6')">6. Why didn't you integrate NCoverExplorer directly into the IDE like VSTS or SharpDevelop?</a><br/>
131		<div id="answer6" style="display:none">
132			<P class="answer">A number of reasons. At first glance having your code colour coded within the VS.Net IDE may sound
133				great. However think about what we are trying to achieve - improving our <B>test</B> code to increase our coverage.
134				That means in many cases you want to be editing the unit tests themselves, not the pretty coloured code under test.
135				This then requires either a photographic memory or a penchant for continually resizing your IDE/tab groups, as well as an ability
136				to not find the colours distracting while editing and refactoring code... not my first choice.
137			</P>
138			<P class="answer">You may instead find it more convenient to have a separate application window which can be positioned 
139				on a second screen (you all have at least two don't you?) or ALT-Tab switched between. As of release 1.3.1 
140				NCoverExplorer allows direct code navigation from method coverage in NCoverExplorer to it's corresponding line 
141				in the source code file within the VS.Net IDE.
142			</P>
143			<P class="answer">From a technical perspective an add-in is a non-trivial task - particularly if trying to support all 
144				the variants of the VS.Net IDE. To do it natively requires VSIP skills which is a trip to the dark side. 
145				I won't say "never" however and	if I find some spare time (or you want to volunteer to help me!) then it might 
146				happen one day...
147			</P>
148 		</div>
149        <a class="question" onclick="return Toggle('answer7')">7. What do the tree node colours mean?</a><br/>
150		<div id="answer7" style="display:none">
151			<P class="answer">The default settings when NCoverExplorer is installed are as follows:
152				<UL>
153					<LI>
154						<SPAN class="treeviewGrey">Grey text</SPAN> - the namespace/class/method has zero coverage. (Icon will be greyed also)
155					</LI>
156					<LI>
157						<SPAN class="treeviewRed">Red text</SPAN> - the namespace/class/method has partial coverage.
158					</LI>
159					<LI>
160						<SPAN class="treeviewBlue">Blue text</SPAN> - the namespace/class/method coverage has partial coverage exceeding a satisfaction threshold (default 95%).
161					</LI>
162					<LI>
163						<SPAN class="treeviewBlack">Black text</SPAN> - the namespace/class/method has 100% coverage.
164					</LI>
165				</UL>
166			</P>
167 		</div>
168        <a class="question" onclick="return Toggle('answer8')">8. What do the source code highlighting colours mean?<a><br/>
169		<div id="answer8" style="display:none">
170			<P class="answer">The default settings when NCoverExplorer is installed are as follows:
171				<UL>
172					<LI>
173						<SPAN class="sourceBlue">Blue background</SPAN>  - this section of code was visited (a tooltip tells you how many times).
174					</LI>
175					<LI>
176						<SPAN class="sourceRed">Red background</SPAN>  - this section of code was not visited.
177					</LI>
178				</UL>
179				You can change these settings in the View->Options dialog. For instance you may prefer to underline the unvisited code.
180			</P>
181 		</div>
182        <a class="question" onclick="return Toggle('answer9')">9. What is that "Satisfaction Threshold" all about?</a><br/>
183		<div id="answer9" style="display:none">
184			<P class="answer">Depending on your coverage strategy, the code being tested and the extent of your usage of reflection,
185				mock objects and/or dependency injection you may determine it unfeasible to try
186				to reach 100% coverage everywhere. Some teams readily accept the diminishing returns
187				that can apply and instead set a specific blanket coverage goal such as �85%�.
188			</P>
189			<P class="answer">Assuming you have such a situation and there was no threshold capability, 
190				you would be stuck forever looking at a "danger red" node in the tree every time you open NCoverExplorer. 
191				With this feature enabled (by setting a threshold less than 100% in the View->Options dialog) you see 
192				a more calming mellow �blue� instead...
193			</P>
194			<P class="answer">As of release 1.3.1 you can now also specify the tolerance as a number of unvisited lines.
195				If either of the two threshold conditions are met the node will be coloured appropriately. Note that
196				a visit count of zero will always show as uncovered regardless of your tolerance.
197			</P>
198			<P class="answer">Of course just because you exceed the percentage doesn't mean that the 5% of code unvisited 
199				isn't the most critical!
200			</P>
201		</div>
202        <a class="question" onclick="return Toggle('answer10')">10. I have a killer idea for XYZ feature - can you add it for me?</a><br/>
203        <div id="answer10" style="display:none">
204			<P class="answer">Please leave a comment on my <A href="http://www.kiwidude.com/blog/">blog</A> or in the
205				<A href="http://ncover.org/SITE/forums/default.aspx">NCoverExplorer forums</A> and I will see what I can do. 
206				NCoverExplorer is by no means my "day job" so no promises can be made but if the idea is indeed a good one which 
207				will benefit many others I'm sure I can find time...
208			</P>
209		</div>
210        <a class="question" onclick="return Toggle('answer11')">11. Where can I download the latest version?</a><br/>
211        <div id="answer11" style="display:none">
212			<P class="answer">To download NCoverExplorer <b>without</b> TestDriven.Net, you can find it
213				<A href="http://www.kiwidude.com/dotnet/DownloadPage.html">here</A>.
214			</P>
215			<P class="answer">Download it as part of the install with TestDriven.Net from <A href="http://www.testdriven.net/">here</A>.
216			</P>
217		</div>
218        <a class="question" onclick="return Toggle('answer12')">12. What are the keyboard shortcuts?</a><br/>
219        <div id="answer12" style="display:none">
220			<P class="answer">The following shortcuts exist currently:
221				<PRE class="usage">
222					<SPAN class="treeviewBlue">CTRL+A</SPAN>  - Collapse all nodes recursively.
223					<SPAN class="treeviewBlue">CTRL+E</SPAN>  - Edit in VS.Net at the current caret position.
224					<SPAN class="treeviewBlue">CTRL+F</SPAN>  - Display the Find Class dialog.
225					<SPAN class="treeviewBlue">CTRL+L</SPAN>  - Expand all nodes recursively.
226					<SPAN class="treeviewBlue">CTRL+N</SPAN>  - Run NCover (via configuration dialog).
227					<SPAN class="treeviewBlue">CTRL+O</SPAN>  - Open coverage xml file.
228					<SPAN class="treeviewBlue">CTRL+P</SPAN>  - Print current source code class file.
229					<SPAN class="treeviewBlue">CTRL+Q</SPAN>  - Expand all covered child nodes.
230					<SPAN class="treeviewBlue">CTRL+S</SPAN>  - Save coverage xml file as displayed (without excluded nodes).
231					<SPAN class="treeviewBlue">F2</SPAN>      - Display the options dialog.
232					<SPAN class="treeviewBlue">F4</SPAN>      - Display the statistics summary dialog.
233					<SPAN class="treeviewBlue">F5</SPAN>      - Reload the current source code file.
234					<SPAN class="treeviewBlue">F6</SPAN>      - Display the reports dialog.
235					<SPAN class="treeviewBlue">DEL</SPAN>     - Exclude node and children from coverage tree and recalculate coverage.
236					<SPAN class="treeviewBlue">INS</SPAN>     - Include node and children into coverage tree and recalculate coverage.
237					<BR/>
238					<SPAN class="treeviewBlue">ALT+1</SPAN>   - Filter (hide) all 100% coverage nodes.
239					<SPAN class="treeviewBlue">ALT+2</SPAN>   - Filter (hide) all unvisited (0%) nodes.
240					<SPAN class="treeviewBlue">ALT+3</SPAN>   - Filter (hide) all nodes exceeding satisfactory coverage threshold.
241					<SPAN class="treeviewBlue">ALT+0</SPAN>   - Remove all filters.
242					<BR/>
243					<SPAN class="treeviewBlue">CTRL+1</SPAN>  - Display sequence point coverage report (covered%).
244					<SPAN class="treeviewBlue">CTRL+2</SPAN>  - Display sequence point coverage report (covered%) (unvisited seqpnt#).
245					<SPAN class="treeviewBlue">CTRL+3</SPAN>  - Display sequence point coverage report (unvisited seqpnt#).
246					<SPAN class="treeviewBlue">CTRL+4</SPAN>  - Display function coverage report (visits).
247					<SPAN class="treeviewBlue">CTRL+5</SPAN>  - Display function coverage coverage report (covered%).
248					<SPAN class="treeviewBlue">CTRL+6</SPAN>  - Display function coverage coverage report (covered%) (unvisited function#).
249					<SPAN class="treeviewBlue">CTRL+7</SPAN>  - Display function coverage coverage report (unvisited function#).
250					<BR/>
251					<SPAN class="treeviewBlue">CTRL+SHIFT+1</SPAN>  - Sort by name (default).
252					<SPAN class="treeviewBlue">CTRL+SHIFT+2</SPAN>  - Sort by name down to class level, with methods sorted by line number.
253					<SPAN class="treeviewBlue">CTRL+SHIFT+3</SPAN>  - Sort by coverage percentage ascending.
254					<SPAN class="treeviewBlue">CTRL+SHIFT+4</SPAN>  - Sort by coverage percentage ascending.
255					<SPAN class="treeviewBlue">CTRL+SHIFT+5</SPAN>  - Sort by #unvisited sequence points ascending.
256					<SPAN class="treeviewBlue">CTRL+SHIFT+6</SPAN>  - Sort by #unvisited sequence points ascending.
257					<SPAN class="treeviewBlue">CTRL+SHIFT+7</SPAN>  - Sort by max function visit count ascending.
258					<SPAN class="treeviewBlue">CTRL+SHIFT+8</SPAN>  - Sort by max function visit count ascending.
259					<SPAN class="treeviewBlue">CTRL+SHIFT+9</SPAN>  - Sort by max function coverage percentage ascending.
260					<SPAN class="treeviewBlue">CTRL+SHIFT+0</SPAN>  - Sort by max function coverage percentage descending.
261					<BR/>
262					<SPAN class="treeviewBlue">ALT+RIGHT</SPAN>     - Next unvisited line in the current class.
263					<SPAN class="treeviewBlue">ALT+LEFT</SPAN>      - Previous unvisited line in the current class.
264					<SPAN class="treeviewBlue">ALT+UP</SPAN>        - Next unvisited class in the current namespace.
265					<SPAN class="treeviewBlue">ALT+DOWN</SPAN>      - Previous unvisited class in the current namespace.
266				</PRE>
267			</P>
268		</div>
269        <a class="question" onclick="return Toggle('answer13')">13. Where are my personal settings stored?</a><br/>
270        <div id="answer13" style="display:none">
271			<P class="answer">C:\Documents and Settings\[User Name]\Application Data\KiwiNova\NCoverExplorer\NCoverExplorer.config
272			</P>
273		</div>
274        <a class="question" onclick="return Toggle('answer14')">14. Where can I download the custom NAnt/MSBuild tasks from?</a><br/>
275        <div id="answer14" style="display:none">
276			<P class="answer">A zip file containing the task source code, compiled assemblies and examples can be found
277				<A href="http://www.kiwidude.com/dotnet/DownloadPage.html">here</A>
278			</P>
279		</div>
280        <a class="question" onclick="return Toggle('answer15')">15. I get an "Illegal characters in path" exception - why?</a><br/>
281        <div id="answer15" style="display:none">
282			<P class="answer">NCover 1.4.6 has a bug whereby the filenames that it writes into the xml file contain
283				undesirable characters. Please use either NCover 1.3.3 or NCover 1.5.x. For more details refer to this blog entry
284				<A href="http://www.kiwidude.com/blog/2006/04/illegal-characters-ncover-versions.html">here</A>
285			</P>
286		</div>
287        <a class="question" onclick="return Toggle('answer16')">16. I get a "System.Format" exception - why?</a><br/>
288        <div id="answer16" style="display:none">
289			<P class="answer">One user reported a bizarre issue where on their machines a simple int.Parse("0") would not work.
290				The exact cause is unknown (they had uninstalled some components from their XP installation), however 
291				switching region settings to something else and back again resolved the issue.
292			</P>
293		</div>
294        <a class="question" onclick="return Toggle('answer17')">17. My module thresholds are not working - why?</a><br/>
295        <div id="answer17" style="display:none">
296			<P class="answer">The module names included in the module thresholds should not include any path information,
297			and are currently case sensitive (must exactly match the module names you see on the NCoverExplorer report).
298			The case sensitivity constraint is fixed in NCoverExplorer 1.3.5.
299			</P>
300		</div>
301		<P class="subtitle">---------------------------------<BR/>FAQ last updated Jul 21st 2007.</P>
302    </body>
303</html>