uppercutbuild 0.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (264) hide show
  1. data/lib/NDepend.xml +251 -0
  2. data/lib/build.bat +32 -0
  3. data/lib/build/Castle.Core.dll +0 -0
  4. data/lib/build/Castle.DynamicProxy2.dll +0 -0
  5. data/lib/build/Castle.MicroKernel.dll +0 -0
  6. data/lib/build/Castle.Windsor.dll +0 -0
  7. data/lib/build/UppercuT.xml +5 -0
  8. data/lib/build/analyze.step +78 -0
  9. data/lib/build/analyzers/gallio.test.step +145 -0
  10. data/lib/build/analyzers/mbunit2.test.step +146 -0
  11. data/lib/build/analyzers/moma.step +143 -0
  12. data/lib/build/analyzers/ncover.step +186 -0
  13. data/lib/build/analyzers/ndepend.step +95 -0
  14. data/lib/build/analyzers/nitriq.step +116 -0
  15. data/lib/build/analyzers/nunit.test.step +172 -0
  16. data/lib/build/analyzers/test.step +99 -0
  17. data/lib/build/compile.step +178 -0
  18. data/lib/build/customize.bat +41 -0
  19. data/lib/build/customize.build +76 -0
  20. data/lib/build/customizers/item.template +50 -0
  21. data/lib/build/default.build +164 -0
  22. data/lib/build/deploymentBuilder.step +103 -0
  23. data/lib/build/environmentBuilder.step +119 -0
  24. data/lib/build/generateBuildInfo.step +106 -0
  25. data/lib/build/ilmerge.build +174 -0
  26. data/lib/build/open.build +103 -0
  27. data/lib/build/package.step +234 -0
  28. data/lib/build/policyChecks.step +81 -0
  29. data/lib/build/updateAssemblies.build +107 -0
  30. data/lib/build/uppercut.dll +0 -0
  31. data/lib/build/uppercut.tasks.dll +0 -0
  32. data/lib/build/versionBuilder.step +148 -0
  33. data/lib/build/versioners/git.step +106 -0
  34. data/lib/build/versioners/hg.step +106 -0
  35. data/lib/build/versioners/svn.step +112 -0
  36. data/lib/build/versioners/tfs.step +104 -0
  37. data/lib/build/zip.build +162 -0
  38. data/lib/deployment/scripts/database.deploy +37 -0
  39. data/lib/deployment/templates/AppDeployment.bat +9 -0
  40. data/lib/deployment/templates/DBDeployment.RESTORE.bat +9 -0
  41. data/lib/deployment/templates/DBDeployment.bat +9 -0
  42. data/lib/lib/MbUnit2/MbUnit.AddIn.dll +0 -0
  43. data/lib/lib/MbUnit2/MbUnit.Cons.exe +0 -0
  44. data/lib/lib/MbUnit2/MbUnit.Cons.exe.config +12 -0
  45. data/lib/lib/MbUnit2/MbUnit.Framework.2.0.dll +0 -0
  46. data/lib/lib/MbUnit2/MbUnit.Framework.XML +6929 -0
  47. data/lib/lib/MbUnit2/MbUnit.Framework.dll +0 -0
  48. data/lib/lib/MbUnit2/MbUnit.GUI.exe +0 -0
  49. data/lib/lib/MbUnit2/MbUnit.GUI.exe.config +14 -0
  50. data/lib/lib/MbUnit2/MbUnit.MSBuild.Tasks.dll +0 -0
  51. data/lib/lib/MbUnit2/NAnt.Core.dll +0 -0
  52. data/lib/lib/MbUnit2/NGraphviz.Helpers.dll +0 -0
  53. data/lib/lib/MbUnit2/NGraphviz.Layout.dll +0 -0
  54. data/lib/lib/MbUnit2/NGraphviz.dll +0 -0
  55. data/lib/lib/MbUnit2/QuickGraph.Algorithms.Graphviz.dll +0 -0
  56. data/lib/lib/MbUnit2/QuickGraph.Algorithms.dll +0 -0
  57. data/lib/lib/MbUnit2/QuickGraph.dll +0 -0
  58. data/lib/lib/MbUnit2/Refly.dll +0 -0
  59. data/lib/lib/MbUnit2/TestDriven.Framework.dll +0 -0
  60. data/lib/lib/MbUnit2/TestFu.XML +1932 -0
  61. data/lib/lib/MbUnit2/TestFu.dll +0 -0
  62. data/lib/lib/MbUnit2/XsdTidy.exe +0 -0
  63. data/lib/lib/MoMA/Definitions/2.4.0.1-defs.zip +0 -0
  64. data/lib/lib/MoMA/ICSharpCode.SharpZipLib.dll +0 -0
  65. data/lib/lib/MoMA/MoMA.Analyzer.dll +0 -0
  66. data/lib/lib/MoMA/MoMA.exe +0 -0
  67. data/lib/lib/MoMA/Mono.Cecil.dll +0 -0
  68. data/lib/lib/MoMA/Reports/Media/fail.png +0 -0
  69. data/lib/lib/MoMA/Reports/Media/minus.png +0 -0
  70. data/lib/lib/MoMA/Reports/Media/moma.css +117 -0
  71. data/lib/lib/MoMA/Reports/Media/moma.js +17 -0
  72. data/lib/lib/MoMA/Reports/Media/pass.png +0 -0
  73. data/lib/lib/MoMA/Reports/Media/plus.png +0 -0
  74. data/lib/lib/MoMA/Resources/button_ok.png +0 -0
  75. data/lib/lib/MoMA/Resources/dialog-warning.png +0 -0
  76. data/lib/lib/MoMA/Resources/dialogback.png +0 -0
  77. data/lib/lib/MoMA/Resources/list-add.png +0 -0
  78. data/lib/lib/MoMA/Resources/list-directory.png +0 -0
  79. data/lib/lib/MoMA/Resources/list-remove.png +0 -0
  80. data/lib/lib/MoMA/Resources/monoback.png +0 -0
  81. data/lib/lib/MoMA/Resources/spinner.gif +0 -0
  82. data/lib/lib/NAnt/CollectionGen.dll +0 -0
  83. data/lib/lib/NAnt/Interop.MsmMergeTypeLib.dll +0 -0
  84. data/lib/lib/NAnt/Interop.StarTeam.dll +0 -0
  85. data/lib/lib/NAnt/Interop.WindowsInstaller.dll +0 -0
  86. data/lib/lib/NAnt/MSITaskErrors.mst +0 -0
  87. data/lib/lib/NAnt/MSITaskTemplate.msi +0 -0
  88. data/lib/lib/NAnt/MSMTaskErrors.mst +0 -0
  89. data/lib/lib/NAnt/MSMTaskTemplate.msm +0 -0
  90. data/lib/lib/NAnt/MbUnit.Framework.dll +0 -0
  91. data/lib/lib/NAnt/MbUnit.Tasks.dll +0 -0
  92. data/lib/lib/NAnt/NAnt.CompressionTasks.dll +0 -0
  93. data/lib/lib/NAnt/NAnt.Contrib.Tasks.dll +0 -0
  94. data/lib/lib/NAnt/NAnt.Core.dll +0 -0
  95. data/lib/lib/NAnt/NAnt.DotNetTasks.dll +0 -0
  96. data/lib/lib/NAnt/NAnt.MSNetTasks.dll +0 -0
  97. data/lib/lib/NAnt/NAnt.NUnit.dll +0 -0
  98. data/lib/lib/NAnt/NAnt.NUnit1Tasks.dll +0 -0
  99. data/lib/lib/NAnt/NAnt.NUnit2Tasks.dll +0 -0
  100. data/lib/lib/NAnt/NAnt.SourceControlTasks.dll +0 -0
  101. data/lib/lib/NAnt/NAnt.VSNetTasks.dll +0 -0
  102. data/lib/lib/NAnt/NAnt.VisualCppTasks.dll +0 -0
  103. data/lib/lib/NAnt/NAnt.Win32Tasks.dll +0 -0
  104. data/lib/lib/NAnt/NAnt.exe +0 -0
  105. data/lib/lib/NAnt/NAnt.exe.config +2126 -0
  106. data/lib/lib/NAnt/NCoverExplorer.NAntTasks.dll +0 -0
  107. data/lib/lib/NAnt/NDepend.Build.NAntTasks.dll +0 -0
  108. data/lib/lib/NAnt/NDoc.Documenter.NAnt.dll +0 -0
  109. data/lib/lib/NAnt/QuickGraph.Algorithms.dll +0 -0
  110. data/lib/lib/NAnt/QuickGraph.dll +0 -0
  111. data/lib/lib/NAnt/SLiNgshoT.Core.dll +0 -0
  112. data/lib/lib/NAnt/SLiNgshoT.exe +0 -0
  113. data/lib/lib/NAnt/SourceSafe.Interop.dll +0 -0
  114. data/lib/lib/NAnt/ThoughtWorks.CruiseControl.MSBuild.dll +0 -0
  115. data/lib/lib/NAnt/extensions/common/2.0/NAnt.MSBuild.dll +0 -0
  116. data/lib/lib/NAnt/extensions/common/2.0/NAnt.MSBuild.xml +36 -0
  117. data/lib/lib/NAnt/lib/common/1.1/nunit-console-runner.dll +0 -0
  118. data/lib/lib/NAnt/lib/common/1.1/nunit-console.exe +0 -0
  119. data/lib/lib/NAnt/lib/common/1.1/nunit.core.dll +0 -0
  120. data/lib/lib/NAnt/lib/common/1.1/nunit.framework.dll +0 -0
  121. data/lib/lib/NAnt/lib/common/1.1/nunit.util.dll +0 -0
  122. data/lib/lib/NAnt/lib/common/2.0/nunit-console-runner.dll +0 -0
  123. data/lib/lib/NAnt/lib/common/2.0/nunit-console.exe +0 -0
  124. data/lib/lib/NAnt/lib/common/2.0/nunit.core.dll +0 -0
  125. data/lib/lib/NAnt/lib/common/2.0/nunit.framework.dll +0 -0
  126. data/lib/lib/NAnt/lib/common/2.0/nunit.util.dll +0 -0
  127. data/lib/lib/NAnt/lib/common/neutral/ICSharpCode.SharpCvsLib.Console.dll +0 -0
  128. data/lib/lib/NAnt/lib/common/neutral/ICSharpCode.SharpCvsLib.dll +0 -0
  129. data/lib/lib/NAnt/lib/common/neutral/ICSharpCode.SharpZipLib.dll +0 -0
  130. data/lib/lib/NAnt/lib/common/neutral/NDoc.Core.dll +0 -0
  131. data/lib/lib/NAnt/lib/common/neutral/NDoc.Documenter.Msdn.dll +0 -0
  132. data/lib/lib/NAnt/lib/common/neutral/NDoc.ExtendedUI.dll +0 -0
  133. data/lib/lib/NAnt/lib/common/neutral/NUnitCore.dll +0 -0
  134. data/lib/lib/NAnt/lib/mono/1.0/NDoc.Core.dll +0 -0
  135. data/lib/lib/NAnt/lib/mono/1.0/NDoc.Documenter.Msdn.dll +0 -0
  136. data/lib/lib/NAnt/lib/mono/1.0/NDoc.ExtendedUI.dll +0 -0
  137. data/lib/lib/NAnt/lib/mono/1.0/nunit.core.dll +0 -0
  138. data/lib/lib/NAnt/lib/mono/1.0/nunit.framework.dll +0 -0
  139. data/lib/lib/NAnt/lib/mono/1.0/nunit.util.dll +0 -0
  140. data/lib/lib/NAnt/lib/mono/2.0/NDoc.Core.dll +0 -0
  141. data/lib/lib/NAnt/lib/mono/2.0/NDoc.Documenter.Msdn.dll +0 -0
  142. data/lib/lib/NAnt/lib/mono/2.0/NDoc.ExtendedUI.dll +0 -0
  143. data/lib/lib/NAnt/lib/mono/2.0/nunit.core.dll +0 -0
  144. data/lib/lib/NAnt/lib/mono/2.0/nunit.framework.dll +0 -0
  145. data/lib/lib/NAnt/lib/mono/2.0/nunit.util.dll +0 -0
  146. data/lib/lib/NAnt/lib/net/1.0/NDoc.Core.dll +0 -0
  147. data/lib/lib/NAnt/lib/net/1.0/NDoc.Documenter.Msdn.dll +0 -0
  148. data/lib/lib/NAnt/lib/net/1.0/NDoc.ExtendedUI.dll +0 -0
  149. data/lib/lib/NAnt/lib/net/1.0/nunit-console-runner.dll +0 -0
  150. data/lib/lib/NAnt/lib/net/1.0/nunit-console.exe +0 -0
  151. data/lib/lib/NAnt/lib/net/1.0/nunit.core.dll +0 -0
  152. data/lib/lib/NAnt/lib/net/1.0/nunit.framework.dll +0 -0
  153. data/lib/lib/NAnt/lib/net/1.0/nunit.util.dll +0 -0
  154. data/lib/lib/NAnt/lib/net/1.1/NDoc.Core.dll +0 -0
  155. data/lib/lib/NAnt/lib/net/1.1/NDoc.Documenter.Msdn.dll +0 -0
  156. data/lib/lib/NAnt/lib/net/1.1/NDoc.ExtendedUI.dll +0 -0
  157. data/lib/lib/NAnt/lib/net/1.1/nunit.core.dll +0 -0
  158. data/lib/lib/NAnt/lib/net/1.1/nunit.framework.dll +0 -0
  159. data/lib/lib/NAnt/lib/net/1.1/nunit.util.dll +0 -0
  160. data/lib/lib/NAnt/lib/net/2.0/NDoc.Core.dll +0 -0
  161. data/lib/lib/NAnt/lib/net/2.0/NDoc.Documenter.Msdn.dll +0 -0
  162. data/lib/lib/NAnt/lib/net/2.0/NDoc.ExtendedUI.dll +0 -0
  163. data/lib/lib/NAnt/lib/net/2.0/nunit.core.dll +0 -0
  164. data/lib/lib/NAnt/lib/net/2.0/nunit.framework.dll +0 -0
  165. data/lib/lib/NAnt/lib/net/2.0/nunit.util.dll +0 -0
  166. data/lib/lib/NAnt/log4net.dll +0 -0
  167. data/lib/lib/NAnt/scvs.exe +0 -0
  168. data/lib/lib/NCover/ActiproEULA.html +287 -0
  169. data/lib/lib/NCover/ActiproSoftware.Shared.Net11.dll +0 -0
  170. data/lib/lib/NCover/ActiproSoftware.SyntaxEditor.Net11.dll +0 -0
  171. data/lib/lib/NCover/ActiproSoftware.WinUICore.Net11.dll +0 -0
  172. data/lib/lib/NCover/CommandBars.dll +0 -0
  173. data/lib/lib/NCover/ConsoleConfig.xsd +123 -0
  174. data/lib/lib/NCover/ConsoleExample.config +94 -0
  175. data/lib/lib/NCover/CoverLib.dll +0 -0
  176. data/lib/lib/NCover/Coverage.xsl +339 -0
  177. data/lib/lib/NCover/CoverageReport.xsl +468 -0
  178. data/lib/lib/NCover/ICSharpCode.TextEditor.dll +0 -0
  179. data/lib/lib/NCover/LicencePersonal.rtf +334 -0
  180. data/lib/lib/NCover/MSVCP80.dll +0 -0
  181. data/lib/lib/NCover/MSVCR80.dll +0 -0
  182. data/lib/lib/NCover/Microsoft.VC80.CRT.manifest +8 -0
  183. data/lib/lib/NCover/NCover.Console.exe +0 -0
  184. data/lib/lib/NCover/NCover.Console.exe.config +6 -0
  185. data/lib/lib/NCover/NCover.Framework.dll +0 -0
  186. data/lib/lib/NCover/NCoverExplorer.Console.exe +0 -0
  187. data/lib/lib/NCover/NCoverExplorer.Core.dll +0 -0
  188. data/lib/lib/NCover/NCoverExplorer.NCoverRunner.dll +0 -0
  189. data/lib/lib/NCover/NCoverExplorer.WinForms.dll +0 -0
  190. data/lib/lib/NCover/NCoverExplorer.exe +0 -0
  191. data/lib/lib/NCover/NCoverExplorer.exe.config +8 -0
  192. data/lib/lib/NCover/NCoverExplorerFAQ.html +303 -0
  193. data/lib/lib/NCover/NCoverExplorerReleaseNotes.html +874 -0
  194. data/lib/lib/NCover/NCoverFAQ.html +429 -0
  195. data/lib/lib/NCover/VC80CRT.MAN +15 -0
  196. data/lib/lib/NCover/license.txt +299 -0
  197. data/lib/lib/NUnit/NUnitTests.config +84 -0
  198. data/lib/lib/NUnit/NUnitTests.nunit +14 -0
  199. data/lib/lib/NUnit/agent.conf +4 -0
  200. data/lib/lib/NUnit/agent.log.conf +18 -0
  201. data/lib/lib/NUnit/framework/nunit.framework.dll +0 -0
  202. data/lib/lib/NUnit/framework/nunit.framework.xml +10113 -0
  203. data/lib/lib/NUnit/framework/nunit.mocks.dll +0 -0
  204. data/lib/lib/NUnit/framework/pnunit.framework.dll +0 -0
  205. data/lib/lib/NUnit/launcher.log.conf +18 -0
  206. data/lib/lib/NUnit/lib/Failure.png +0 -0
  207. data/lib/lib/NUnit/lib/Ignored.png +0 -0
  208. data/lib/lib/NUnit/lib/Inconclusive.png +0 -0
  209. data/lib/lib/NUnit/lib/Skipped.png +0 -0
  210. data/lib/lib/NUnit/lib/Success.png +0 -0
  211. data/lib/lib/NUnit/lib/fit.dll +0 -0
  212. data/lib/lib/NUnit/lib/log4net.dll +0 -0
  213. data/lib/lib/NUnit/lib/nunit-console-runner.dll +0 -0
  214. data/lib/lib/NUnit/lib/nunit-gui-runner.dll +0 -0
  215. data/lib/lib/NUnit/lib/nunit.core.dll +0 -0
  216. data/lib/lib/NUnit/lib/nunit.core.interfaces.dll +0 -0
  217. data/lib/lib/NUnit/lib/nunit.fixtures.dll +0 -0
  218. data/lib/lib/NUnit/lib/nunit.uiexception.dll +0 -0
  219. data/lib/lib/NUnit/lib/nunit.uikit.dll +0 -0
  220. data/lib/lib/NUnit/lib/nunit.util.dll +0 -0
  221. data/lib/lib/NUnit/nunit-agent-x86.exe +0 -0
  222. data/lib/lib/NUnit/nunit-agent-x86.exe.config +76 -0
  223. data/lib/lib/NUnit/nunit-agent.exe +0 -0
  224. data/lib/lib/NUnit/nunit-agent.exe.config +76 -0
  225. data/lib/lib/NUnit/nunit-console-x86.exe +0 -0
  226. data/lib/lib/NUnit/nunit-console-x86.exe.config +76 -0
  227. data/lib/lib/NUnit/nunit-console.exe +0 -0
  228. data/lib/lib/NUnit/nunit-console.exe.config +76 -0
  229. data/lib/lib/NUnit/nunit-x86.exe +0 -0
  230. data/lib/lib/NUnit/nunit-x86.exe.config +91 -0
  231. data/lib/lib/NUnit/nunit.exe +0 -0
  232. data/lib/lib/NUnit/nunit.exe.config +91 -0
  233. data/lib/lib/NUnit/nunit.framework.dll +0 -0
  234. data/lib/lib/NUnit/pnunit-agent.exe +0 -0
  235. data/lib/lib/NUnit/pnunit-agent.exe.config +77 -0
  236. data/lib/lib/NUnit/pnunit-launcher.exe +0 -0
  237. data/lib/lib/NUnit/pnunit-launcher.exe.config +77 -0
  238. data/lib/lib/NUnit/pnunit.framework.dll +0 -0
  239. data/lib/lib/NUnit/pnunit.tests.dll +0 -0
  240. data/lib/lib/NUnit/runpnunit.bat +2 -0
  241. data/lib/lib/NUnit/test.conf +24 -0
  242. data/lib/lib/NUnit/tests/loadtest-assembly.dll +0 -0
  243. data/lib/lib/NUnit/tests/mock-assembly.dll +0 -0
  244. data/lib/lib/NUnit/tests/nonamespace-assembly.dll +0 -0
  245. data/lib/lib/NUnit/tests/nunit-console.tests.dll +0 -0
  246. data/lib/lib/NUnit/tests/nunit-gui.tests.dll +0 -0
  247. data/lib/lib/NUnit/tests/nunit.core.tests.dll +0 -0
  248. data/lib/lib/NUnit/tests/nunit.fixtures.tests.dll +0 -0
  249. data/lib/lib/NUnit/tests/nunit.framework.dll +0 -0
  250. data/lib/lib/NUnit/tests/nunit.framework.tests.dll +0 -0
  251. data/lib/lib/NUnit/tests/nunit.mocks.tests.dll +0 -0
  252. data/lib/lib/NUnit/tests/nunit.uiexception.tests.dll +0 -0
  253. data/lib/lib/NUnit/tests/nunit.uikit.tests.dll +0 -0
  254. data/lib/lib/NUnit/tests/nunit.util.tests.dll +0 -0
  255. data/lib/lib/NUnit/tests/test-assembly.dll +0 -0
  256. data/lib/lib/NUnit/tests/test-utilities.dll +0 -0
  257. data/lib/lib/NUnit/tests/timing-tests.dll +0 -0
  258. data/lib/open.bat +10 -0
  259. data/lib/settings/LOCAL.settings +29 -0
  260. data/lib/settings/SettingsFileReadMe.txt +2 -0
  261. data/lib/settings/UppercuT.config +73 -0
  262. data/lib/test.bat +38 -0
  263. data/lib/zip.bat +23 -0
  264. metadata +328 -0
Binary file
@@ -0,0 +1,123 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2
+ <!-- NCoverExplorer (c) 2007 Grant Drake. -->
3
+ <!-- Schema for configuration file to be passed to NCoverExplorer-Console.exe using /config: switch -->
4
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
5
+ <xs:element name="ConsoleSetting">
6
+ <xs:complexType>
7
+ <xs:sequence>
8
+ <!-- Title name to appear on the report (equivalent to /project:xx). Default is blank. -->
9
+ <xs:element name="ProjectName" type="xs:string" minOccurs="0" maxOccurs="1" />
10
+ <!-- Threshold for acceptance criteria for coverage reports detailing acceptable coverage levels. Default is 95% -->
11
+ <xs:element name="SatisfactoryCoverageThreshold" type="xs:decimal" minOccurs="0" maxOccurs="1" />
12
+ <!-- Threshold for acceptance criteria for coverage reports detailing acceptable coverage as #seqPts rather than %. Default is 0. -->
13
+ <xs:element name="SatisfactoryUnvisitedSequencePoints" type="xs:decimal" minOccurs="0" maxOccurs="1" />
14
+ <!-- Threshold for acceptance criteria for coverage reports detailing acceptable function coverage levels. Default is 80% -->
15
+ <xs:element name="SatisfactoryFunctionThreshold" type="xs:decimal" minOccurs="0" maxOccurs="1" />
16
+ <!-- Filtering to be applied to the results. Use integer (starting from 0=None) or named value. Default is "None". -->
17
+ <xs:element name="TreeFilterStyle" minOccurs="0" maxOccurs="1">
18
+ <xs:simpleType>
19
+ <xs:restriction base="xs:string">
20
+ <xs:enumeration value="None" />
21
+ <xs:enumeration value="HideUnvisited" />
22
+ <xs:enumeration value="HideFullyCovered" />
23
+ <xs:enumeration value="HideThresholdCovered" />
24
+ </xs:restriction>
25
+ </xs:simpleType>
26
+ </xs:element>
27
+ <!-- Sorting to be applied to the results. Use integer (starting from 0=Name) or named value. Default is "Name". -->
28
+ <xs:element name="TreeSortStyle" minOccurs="0" maxOccurs="1">
29
+ <xs:simpleType>
30
+ <xs:restriction base="xs:string">
31
+ <xs:enumeration value="Name" />
32
+ <xs:enumeration value="ClassLine" />
33
+ <xs:enumeration value="CoveragePercentageAscending" />
34
+ <xs:enumeration value="CoveragePercentageDescending" />
35
+ <xs:enumeration value="UnvisitedSequencePointsAscending" />
36
+ <xs:enumeration value="UnvisitedSequencePointsDescending" />
37
+ <xs:enumeration value="VisitCountAscending" />
38
+ <xs:enumeration value="VisitCountDescending" />
39
+ <xs:enumeration value="FunctionCoverageAscending" />
40
+ <xs:enumeration value="FunctionCoverageDescending" />
41
+ </xs:restriction>
42
+ </xs:simpleType>
43
+ </xs:element>
44
+ <!-- Coverage exclusions to exclude specified assemblies, namespaces, classes and/or methods. -->
45
+ <xs:element name="CoverageExclusions" minOccurs="0" maxOccurs="1">
46
+ <xs:complexType>
47
+ <xs:sequence>
48
+ <xs:element ref="CoverageExclusion" maxOccurs="unbounded" />
49
+ </xs:sequence>
50
+ </xs:complexType>
51
+ </xs:element>
52
+ <!-- Module specific coverage thresholds if wanting more granular coverage tolerances. -->
53
+ <xs:element name="ModuleThresholds" minOccurs="0" maxOccurs="1">
54
+ <xs:complexType>
55
+ <xs:sequence>
56
+ <xs:element ref="ModuleThreshold" maxOccurs="unbounded" />
57
+ </xs:sequence>
58
+ </xs:complexType>
59
+ </xs:element>
60
+ <!-- Names of the coverage files to merge/report on. Wildcards can be used. -->
61
+ <xs:element name="CoverageFileNames" minOccurs="1" maxOccurs="1">
62
+ <xs:complexType>
63
+ <xs:sequence>
64
+ <xs:element name="CoverageFileName" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
65
+ </xs:sequence>
66
+ </xs:complexType>
67
+ </xs:element>
68
+ <!-- Report to be generated by running NCoverExplorer.Console. Default is "None". -->
69
+ <xs:element name="ReportType" minOccurs="0" maxOccurs="1">
70
+ <xs:simpleType>
71
+ <xs:restriction base="xs:string">
72
+ <xs:enumeration value="None" />
73
+ <xs:enumeration value="ModuleSummary" />
74
+ <xs:enumeration value="ModuleNamespaceSummary" />
75
+ <xs:enumeration value="ModuleClassSummary" />
76
+ <xs:enumeration value="ModuleClassFunctionSummary" />
77
+ </xs:restriction>
78
+ </xs:simpleType>
79
+ </xs:element>
80
+ <!-- File name for the output HTML report if wanting to generate one. -->
81
+ <xs:element name="HtmlReportFileName" type="xs:string" minOccurs="0" maxOccurs="1" />
82
+ <!-- File name for the output XML report if wanting to generate one. -->
83
+ <xs:element name="XmlReportFileName" type="xs:string" minOccurs="0" maxOccurs="1" />
84
+ <!-- File name for the output merged coverage.xml file if any resulting from merging the inputs. -->
85
+ <xs:element name="MergeFileName" type="xs:string" minOccurs="0" maxOccurs="1" />
86
+ <!-- Whether to show the excluded elements in the footer of the output report if being generated. Default is false. -->
87
+ <xs:element name="ShowExcludedFooter" type="xs:boolean" minOccurs="0" maxOccurs="1" />
88
+ <!-- Whether to return a failure exit code if any module is below the minimum coverage threshold. Default is false. -->
89
+ <xs:element name="FailIfBelowMinimum" type="xs:boolean" minOccurs="0" maxOccurs="1" />
90
+ <!-- Whether to return a failure exit code if total coverage is below the minimum coverage threshold. Default is false. -->
91
+ <xs:element name="FailIfBelowCombinedMinimum" type="xs:boolean" minOccurs="0" maxOccurs="1" />
92
+ <!-- For use with the FailIfXXX options - the minimum coverage threshold if not specifying at the module level. -->
93
+ <xs:element name="MinimumCoverage" type="xs:decimal" minOccurs="0" maxOccurs="1" />
94
+ <!-- Whether to suppress virtually all console output when running. Default is false. -->
95
+ <xs:element name="NoLog" type="xs:boolean" minOccurs="0" maxOccurs="1" />
96
+ </xs:sequence>
97
+ </xs:complexType>
98
+ </xs:element>
99
+ <xs:element name="CoverageExclusion">
100
+ <xs:complexType>
101
+ <xs:sequence>
102
+ <xs:element name="ExclusionType" minOccurs="1" maxOccurs="1">
103
+ <xs:simpleType>
104
+ <xs:restriction base="xs:string">
105
+ <xs:enumeration value="Assembly" />
106
+ <xs:enumeration value="Namespace" />
107
+ <xs:enumeration value="Class" />
108
+ <xs:enumeration value="Method" />
109
+ </xs:restriction>
110
+ </xs:simpleType>
111
+ </xs:element>
112
+ <xs:element name="Pattern" type="xs:string" minOccurs="1" maxOccurs="1" />
113
+ <xs:element name="IsRegex" type="xs:boolean" minOccurs="0" maxOccurs="1" />
114
+ </xs:sequence>
115
+ </xs:complexType>
116
+ </xs:element>
117
+ <xs:element name="ModuleThreshold">
118
+ <xs:complexType>
119
+ <xs:attribute name="ModuleName" use="required" type="xs:string" />
120
+ <xs:attribute name="SatisfactoryCoverage" use="required" type="xs:decimal" />
121
+ </xs:complexType>
122
+ </xs:element>
123
+ </xs:schema>
@@ -0,0 +1,94 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Example configuration file to be passed to NCoverExplorer-Console.exe using /config: switch -->
3
+ <!-- If not supplied, then the same defaults will be used as the NCoverExplorer GUI. -->
4
+ <ConsoleSetting xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
5
+ <!-- Name attribute is title to appear on the report (equivalent to /project:xx). Default is blank. -->
6
+ <ProjectName>Example.Project</ProjectName>
7
+
8
+ <!-- Names of the coverage files to merge/report on. Wildcards can be used. -->
9
+ <CoverageFileNames>
10
+ <CoverageFileName>*.Coverage.xml</CoverageFileName>
11
+ </CoverageFileNames>
12
+
13
+ <!-- Report to be generated by running NCoverExplorer.Console. Default is "None". Other possible values are:
14
+ "ModuleSummary", "ModuleNamespaceSummary",
15
+ "ModuleClassSummary", "ModuleClassFunctionSummary"
16
+ -->
17
+ <ReportType>ModuleClassSummary</ReportType>
18
+ <!-- Filename for the output html report if wanting to generate one. -->
19
+ <HtmlReportFileName>C:\MyCoverageReport.html</HtmlReportFileName>
20
+ <!-- Filename for the output xml report (for use by cc.net) if wanting to generate one. -->
21
+ <XmlReportFileName>C:\MyCoverageReport.xml</XmlReportFileName>
22
+
23
+ <!-- File name for the output merged coverage.xml file if any resulting from merging the inputs. -->
24
+ <!--<MergeFileName>C:\MyCoverageMerged.xml</MergeFileName>-->
25
+
26
+ <!-- Whether to show the excluded elements in the footer of the output report if being generated. Default is false. -->
27
+ <!--<ShowExcludedFooter>True</ShowExcludedFooter>-->
28
+
29
+ <!-- Whether to suppress virtually all console output when running. Default is false. -->
30
+ <!--<NoLog>True</NoLog>-->
31
+
32
+ <!-- Threshold for acceptance criteria for coverage reports detailing acceptable coverage levels. Default is 95% -->
33
+ <!--<SatisfactoryCoverageThreshold>95</SatisfactoryCoverageThreshold>-->
34
+
35
+ <!-- Threshold for acceptance criteria for coverage reports detailing acceptable coverage as #seqPts rather than %. Default is 0. -->
36
+ <!--<SatisfactoryUnvisitedSequencePoints>2</SatisfactoryUnvisitedSequencePoints> -->
37
+
38
+ <!-- Threshold for acceptance criteria for coverage reports detailing acceptable function coverage levels. Default is 80% -->
39
+ <!--<SatisfactoryFunctionThreshold>80</SatisfactoryFunctionThreshold> -->
40
+
41
+ <!-- Threshold for acceptance criteria for coverage reports detailing acceptable function coverage levels. Default is 80% -->
42
+ <!--<SatisfactoryFunctionThreshold>80</SatisfactoryFunctionThreshold> -->
43
+
44
+ <!-- Filtering to be applied to the results. Use integer or named value. Default is "None". Possible values:
45
+ "None" (0),
46
+ "HideUnvisited" (1),
47
+ "HideFullyCovered" (2),
48
+ "HideThresholdCovered" (3)
49
+ -->
50
+ <TreeFilterStyle>None</TreeFilterStyle>
51
+
52
+ <!-- Sorting to be applied to the results. Use integer or named value. Default is "Name". Possible values:
53
+ "Name" (0),
54
+ "ClassLine" (1),
55
+ "CoveragePercentageAscending" (2), "CoveragePercentageDescending" (3),
56
+ "UnvisitedSequencePointsAscending" (4), "UnvisitedSequencePointsDescending" (5),
57
+ "VisitCountAscending" (6), "VisitCountDescending" (7)
58
+ "FunctionCoverageAscending" (8), "FunctionCoverageDescending" (9),
59
+ -->
60
+ <TreeSortStyle>Name</TreeSortStyle>
61
+
62
+ <!-- Coverage exclusions to exclude specified assemblies, namespaces and/or classes. -->
63
+ <CoverageExclusions>
64
+ <CoverageExclusion>
65
+ <ExclusionType>Assembly</ExclusionType>
66
+ <!-- Valid values are [Assembly], [Namespace] and [Class]. -->
67
+ <Pattern>*.Tests</Pattern>
68
+ <IsRegex>false</IsRegex>
69
+ <!-- Only required with a value of "true" if you do have a regular expression based pattern -->
70
+ </CoverageExclusion>
71
+ <CoverageExclusion>
72
+ <ExclusionType>Namespace</ExclusionType>
73
+ <Pattern>*.My*</Pattern>
74
+ </CoverageExclusion>
75
+ </CoverageExclusions>
76
+
77
+ <!-- Module specific coverage thresholds if any, -->
78
+ <!--<ModuleThresholds>
79
+ <ModuleThreshold ModuleName="NCoverExplorer.Core.dll" SatisfactoryCoverage="30" />
80
+ </ModuleThresholds>-->
81
+
82
+ <!-- Whether to return a failure exit code if any module is below the minimum coverage threshold. Default is false. -->
83
+ <!--<FailIfBelowMinimum>True</FailIfBelowMinimum> -->
84
+
85
+ <!-- Whether to return a failure exit code if total coverage is below the minimum coverage threshold. Default is false. -->
86
+ <!--<FailIfBelowCombinedMinimum>True</FailIfBelowCombinedMinimum> -->
87
+
88
+ <!-- For use with the FailIfXXX options - the minimum coverage threshold if not specifying at the module level. -->
89
+ <!--<MinimumCoverage>True</MinimumCoverage> -->
90
+
91
+ <!-- Whether to suppress virtually all console output when running. Default is false. -->
92
+ <!--<NoLog>True</NoLog> -->
93
+
94
+ </ConsoleSetting>
Binary file
@@ -0,0 +1,339 @@
1
+ <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt">
2
+ <!-- saved from url=(0022)http://www.ncover.org/ -->
3
+ <!-- created by Yves Lorphelin, largely inspired by the nunitsumary.xsl (see nantcontrib.sourceforge.net)-->
4
+ <xsl:template match="coverage">
5
+ <html>
6
+ <head>
7
+ <title>NCover Code Coverage Report</title>
8
+ <style>
9
+ BODY {
10
+ font: small verdana, arial, helvetica;
11
+ color:#000000;
12
+ }
13
+
14
+ P {
15
+ line-height:1.5em;
16
+ margin-top:0.5em; margin-bottom:1.0em;
17
+ }
18
+ H1 {
19
+ MARGIN: 0px 0px 5px;
20
+ FONT: bold larger arial, verdana, helvetica;
21
+
22
+ }
23
+ H2 {
24
+ MARGIN-TOP: 1em; MARGIN-BOTTOM: 0.5em;
25
+ FONT: larger verdana,arial,helvetica
26
+ }
27
+ H3 {
28
+ MARGIN-BOTTOM: 0.5em; FONT: bold 13px verdana,arial,helvetica
29
+ }
30
+ H4 {
31
+ MARGIN-BOTTOM: 0.5em; FONT: bold 100% verdana,arial,helvetica
32
+ }
33
+ H5 {
34
+ MARGIN-BOTTOM: 0.5em; FONT: bold 100% verdana,arial,helvetica
35
+ }
36
+ H6 {
37
+ MARGIN-BOTTOM: 0.5em; FONT: bold 100% verdana,arial,helvetica
38
+ }
39
+ .notVisited { background:red; }
40
+ .excluded { background: skyblue; }
41
+ .visited { background: #90ee90; }
42
+ .title { font-size: 12px; font-weight: bold; }
43
+ .assembly { font-size: normal; font-weight: bold; font-size: 11px}
44
+ .class {font-size:normal; cursor: hand; color: #444444; font-size: 11px}
45
+ .module { color: navy; font-size: 12px; }
46
+ .method {cursor: hand; color: ; font-size: 10px; font-weight: bold; }
47
+ .subtitle { color: black; font-size: 10px; font-weight: bold; }
48
+ .hdrcell {font-size:9px; background-color: #DDEEFF; }
49
+ .datacell {font-size:9px; background-color: #FFFFEE; text-align: right; }
50
+ .hldatacell {font-size:9px; background-color: #FFCCCC; text-align: right; }
51
+ .exdatacell {font-size:9px; background-color: #DDEEFF; text-align: right; }
52
+ .detailPercent { font-size: 9px; font-weight: bold; padding-top: 1px; padding-bottom: 1px; padding-left: 3px; padding-right: 3px;}
53
+ </style>
54
+ <script language="JavaScript"><![CDATA[
55
+ function toggle (field)
56
+ { field.style.display = (field.style.display == "block") ? "none" : "block"; }
57
+
58
+ function SwitchAll(how)
59
+ { var len = document.all.length-1;
60
+ for(i=0;i!=len;i++) {
61
+ var block = document.all[i];
62
+ if (block != null && block.id != '')
63
+ { block.style.display=how;}
64
+ }
65
+ }
66
+
67
+
68
+ function ExpandAll()
69
+ {SwitchAll('block');}
70
+
71
+ function CollapseAll()
72
+ {SwitchAll('none');}
73
+ ]]></script>
74
+ </head>
75
+ <body>
76
+ <a name="#top"></a>
77
+ <xsl:call-template name="header" />
78
+ <xsl:call-template name="ModuleSummary" />
79
+ <xsl:call-template name="module" />
80
+ <xsl:call-template name="footer" />
81
+ <script language="JavaScript">CollapseAll();</script>
82
+ </body>
83
+ </html>
84
+ </xsl:template>
85
+ <xsl:template name="module">
86
+ <xsl:for-each select="//module">
87
+ <xsl:sort select="@assembly" />
88
+ <xsl:variable name="module" select="./@assembly" />
89
+ <div class="assembly">
90
+ <a name="#{generate-id($module)}">Module
91
+ <xsl:value-of select="$module" />
92
+ </a>
93
+ </div>
94
+ <xsl:for-each select="./method[not(./@class = preceding-sibling::method/@class)]">
95
+ <xsl:sort select="@class" />
96
+ <xsl:sort select="@name" />
97
+ <xsl:call-template name="ClassSummary">
98
+ <xsl:with-param name="module" select="$module" />
99
+ <xsl:with-param name="class" select="./@class" />
100
+ </xsl:call-template>
101
+ </xsl:for-each>
102
+ </xsl:for-each>
103
+ <xsl:variable name="totalMod" select="count(./method/seqpnt[@excluded='false'])" />
104
+ <xsl:variable name="notvisitedMod" select="count( ./method/seqpnt[ @visitcount='0'][@excluded='false'] ) div $totalMod * 100 " />
105
+ <xsl:variable name="visitedMod" select="count(./method/seqpnt[not(@visitcount='0')] ) div $totalMod * 100" />
106
+ </xsl:template>
107
+ <xsl:template name="Methods">
108
+ <xsl:param name="module" />
109
+ <xsl:param name="class" />
110
+ <xsl:for-each select="//method[(@class = $class) and (parent::module/@assembly=$module)]">
111
+ <xsl:sort select="@name" />
112
+ <xsl:variable name="total" select="count(./seqpnt[@excluded='false'])" />
113
+ <xsl:variable name="notvisited" select="count(./seqpnt[@visitcount='0'][@excluded='false'] ) " />
114
+ <xsl:variable name="visited" select="count(./seqpnt[not(@visitcount='0')])" />
115
+ <xsl:variable name="methid" select="generate-id(.)" />
116
+ <table cellpadding="3" cellspacing="0" width="90%">
117
+ <tr>
118
+ <td width="45%" class='method'>
119
+ <xsl:attribute name="onclick">javascript:toggle(
120
+ <xsl:value-of select="$methid" />)
121
+ </xsl:attribute>
122
+ <xsl:value-of select="@name" />
123
+ </td>
124
+ <td width="55%">
125
+ <xsl:call-template name="detailPercent">
126
+ <xsl:with-param name="visited" select="$visited" />
127
+ <xsl:with-param name="notVisited" select="$notvisited" />
128
+ <xsl:with-param name="total" select="$total" />
129
+ </xsl:call-template>
130
+ </td>
131
+ </tr>
132
+ </table>
133
+ <xsl:call-template name="seqpnt">
134
+ <xsl:with-param name="module" select="$module" />
135
+ <xsl:with-param name="class" select="$class" />
136
+ <xsl:with-param name="id" select="$methid" />
137
+ </xsl:call-template>
138
+ </xsl:for-each>
139
+ </xsl:template>
140
+ <xsl:template name="seqpnt">
141
+ <xsl:param name="module" />
142
+ <xsl:param name="class" />
143
+ <xsl:param name="id" />
144
+ <table cellpadding="3" cellspacing="0" border='1' width="90%" bordercolor="black" style="display: block;">
145
+ <xsl:attribute name="id">
146
+ <xsl:value-of select="$id" />
147
+ </xsl:attribute>
148
+ <tr>
149
+ <td class="hdrcell">Visits</td>
150
+ <td class="hdrcell">Line</td>
151
+ <td class="hdrcell">End</td>
152
+ <td class="hdrcell">Column</td>
153
+ <td class="hdrcell">End</td>
154
+ <td class="hdrcell">Document</td>
155
+ </tr>
156
+ <xsl:for-each select="./seqpnt">
157
+ <xsl:sort select="@line" />
158
+ <tr>
159
+ <td class="datacell">
160
+ <xsl:attribute name="class">
161
+ <xsl:choose>
162
+ <xsl:when test="@excluded = 'true'">exdatacell</xsl:when>
163
+ <xsl:when test="@visitcount = 0">hldatacell</xsl:when>
164
+ <xsl:otherwise>datacell</xsl:otherwise>
165
+ </xsl:choose>
166
+ </xsl:attribute>
167
+ <xsl:choose>
168
+ <xsl:when test="@excluded = 'true'">---</xsl:when>
169
+ <xsl:otherwise><xsl:value-of select="@visitcount" /></xsl:otherwise>
170
+ </xsl:choose>
171
+ </td>
172
+ <td class="datacell">
173
+ <xsl:value-of select="@line" />
174
+ </td>
175
+ <td class="datacell">
176
+ <xsl:value-of select="@endline" />
177
+ </td>
178
+ <td class="datacell">
179
+ <xsl:value-of select="@column" />
180
+ </td>
181
+ <td class="datacell">
182
+ <xsl:value-of select="@endcolumn" />
183
+ </td>
184
+ <td class="datacell">
185
+ <xsl:value-of select="@document" />
186
+ </td>
187
+ </tr>
188
+ </xsl:for-each>
189
+ </table>
190
+ </xsl:template>
191
+ <!-- Class Summary -->
192
+ <xsl:template name="ClassSummary">
193
+ <xsl:param name="module" />
194
+ <xsl:param name="class" />
195
+ <xsl:variable name="total" select="count(//seqpnt[(parent::method/parent::module/@assembly=$module) and (parent::method/@class=$class) and (@excluded='false') ])" />
196
+ <xsl:variable name="notvisited" select="count(//seqpnt[(parent::method/parent::module/@assembly=$module)and (parent::method/@class=$class) and (@visitcount='0') and (@excluded='false')] )" />
197
+ <xsl:variable name="visited" select="count(//seqpnt[(parent::method/parent::module/@assembly=$module) and (parent::method/@class=$class) and (not(@visitcount='0'))] )" />
198
+ <xsl:variable name="newid" select="concat (generate-id(), 'class')" />
199
+ <table width='90%'>
200
+ <tr>
201
+ <td width="40%" class="class">
202
+ <xsl:attribute name="onclick">javascript:toggle(
203
+ <xsl:value-of select="$newid" />)
204
+ </xsl:attribute>
205
+ <xsl:value-of select="$class" />
206
+ </td>
207
+ <td width="60%">
208
+ <xsl:call-template name="detailPercent">
209
+ <xsl:with-param name="visited" select="$visited" />
210
+ <xsl:with-param name="notVisited" select="$notvisited" />
211
+ <xsl:with-param name="total" select="$total" />
212
+ </xsl:call-template>
213
+ </td>
214
+ </tr>
215
+ <tr>
216
+ <table style="display: block;" width="100%">
217
+ <tr>
218
+ <td>
219
+ <xsl:attribute name="id">
220
+ <xsl:value-of select="$newid" />
221
+ </xsl:attribute>
222
+ <xsl:call-template name="Methods">
223
+ <xsl:with-param name="module" select="$module" />
224
+ <xsl:with-param name="class" select="$class" />
225
+ </xsl:call-template>
226
+ </td>
227
+ </tr>
228
+ </table>
229
+ </tr>
230
+ </table>
231
+ <hr size="1" width='90%' align='left' style=" border-bottom: 1px dotted #999;" />
232
+ </xsl:template>
233
+ <xsl:template name="ClassSummaryDetail">
234
+ <xsl:param name="module" />
235
+ <xsl:variable name="total" select="count(./method/seqpnt[ @excluded='false' ])" />
236
+ <xsl:variable name="notVisited" select="count( ./method/seqpnt[ @visitcount='0'][ @excluded='false' ] )" />
237
+ <xsl:variable name="visited" select="count(./method/seqpnt[not(@visitcount='0')] )" />
238
+ <td width="35%">
239
+ <div class="assembly">
240
+ <a href="#{generate-id($module)}">
241
+ <xsl:value-of select="$module" />
242
+ </a>
243
+ </div>
244
+ </td>
245
+ <td width="65%">
246
+ <xsl:call-template name="detailPercent">
247
+ <xsl:with-param name="visited" select="$visited" />
248
+ <xsl:with-param name="notVisited" select="$notVisited" />
249
+ <xsl:with-param name="total" select="$total" />
250
+ </xsl:call-template>
251
+ </td>
252
+ </xsl:template>
253
+ <!-- Modules Summary -->
254
+ <xsl:template name="ModuleSummary">
255
+ <H2>Modules summary</H2>
256
+ <xsl:for-each select="//module">
257
+ <xsl:sort select="@assembly" />
258
+ <table width='90%'>
259
+ <tr>
260
+ <xsl:call-template name="ModuleSummaryDetail">
261
+ <xsl:with-param name="module" select="./@assembly" />
262
+ </xsl:call-template>
263
+ </tr>
264
+ </table>
265
+ </xsl:for-each>
266
+ <hr size="1" />
267
+ </xsl:template>
268
+ <xsl:template name="ModuleSummaryDetail">
269
+ <xsl:param name="module" />
270
+ <xsl:variable name="total" select="count(./method/seqpnt[@excluded='false'])" />
271
+ <xsl:variable name="notVisited" select="count( ./method/seqpnt[ @visitcount='0' ][ @excluded='false' ] )" />
272
+ <xsl:variable name="visited" select="count(./method/seqpnt[not(@visitcount='0')] )" />
273
+ <td width="30%">
274
+ <div class="assembly">
275
+ <a href="#{generate-id($module)}">
276
+ <xsl:value-of select="$module" />
277
+ </a>
278
+ </div>
279
+ </td>
280
+ <td width="70%">
281
+ <xsl:call-template name="detailPercent">
282
+ <xsl:with-param name="visited" select="$visited" />
283
+ <xsl:with-param name="notVisited" select="$notVisited" />
284
+ <xsl:with-param name="total" select="$total" />
285
+ </xsl:call-template>
286
+ </td>
287
+ </xsl:template>
288
+ <!-- General Header -->
289
+ <xsl:template name="header">
290
+ <h1>
291
+ <b>NCover</b> Code Coverage Report
292
+ </h1>
293
+ <table>
294
+ <tr>
295
+ <td class="class">
296
+ <a onClick="ExpandAll();">Expand</a>
297
+ </td>
298
+ <td> | </td>
299
+ <td class="class">
300
+ <a onClick="CollapseAll();">Collapse</a>
301
+ </td>
302
+ </tr>
303
+ </table>
304
+ <hr size="1" />
305
+ </xsl:template>
306
+ <xsl:template name="footer">
307
+ <hr size="1" />
308
+ <a class="detailPercent" href="#{top}">Top</a>
309
+ </xsl:template>
310
+ <!-- draw % table-->
311
+ <xsl:template name="detailPercent">
312
+ <xsl:param name="visited" />
313
+ <xsl:param name="notVisited" />
314
+ <xsl:param name="total" />
315
+ <table width="100%" class="detailPercent">
316
+ <tr>
317
+ <xsl:if test="($notVisited=0) and ($visited=0)">
318
+ <td class="excluded" width="100%">Excluded</td>
319
+ </xsl:if>
320
+ <xsl:if test="not($notVisited=0)">
321
+ <td class="notVisited">
322
+ <xsl:attribute name="width">
323
+ <xsl:value-of select="concat($notVisited div $total * 100,'%')" />
324
+ </xsl:attribute>
325
+ <xsl:value-of select="concat (format-number($notVisited div $total * 100,'#.##'),'%')" />
326
+ </td>
327
+ </xsl:if>
328
+ <xsl:if test="not ($visited=0)">
329
+ <td class="visited">
330
+ <xsl:attribute name="width">
331
+ <xsl:value-of select="concat($visited div $total * 100,'%')" />
332
+ </xsl:attribute>
333
+ <xsl:value-of select="concat (format-number($visited div $total * 100,'#.##'), '%')" />
334
+ </td>
335
+ </xsl:if>
336
+ </tr>
337
+ </table>
338
+ </xsl:template>
339
+ </xsl:stylesheet>