uppercutbuild 0.9.0.321 → 0.9.0.325

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. data/lib/CREDITS +13 -0
  2. data/lib/ConfigBuilder.doc +0 -0
  3. data/lib/CustomTasks.doc +0 -0
  4. data/lib/DeploymentBuilder.doc +0 -0
  5. data/lib/GettingStarted.doc +0 -0
  6. data/lib/IntegrateUppercuTWithCruiseControl.NET.doc +0 -0
  7. data/lib/IntegrateUppercuTWithHudson.doc +0 -0
  8. data/lib/IntegrateUppercuTWithTeamCity.doc +0 -0
  9. data/lib/LICENSE +174 -0
  10. data/lib/NOTICE +9 -0
  11. data/lib/README +103 -0
  12. data/lib/Samples/CC.NET/ReadMe.txt +2 -0
  13. data/lib/Samples/CC.NET/server/ccnet.config +64 -0
  14. data/lib/Samples/CC.NET/webdashboard/dashboard.config +72 -0
  15. data/lib/Samples/CC.NET/webdashboard/image.ashx +109 -0
  16. data/lib/Samples/CC.NET/webdashboard/xsl/ndependreport-ccnet.v2.xsl +1161 -0
  17. data/lib/Samples/CustomizingBuildSamples/BDDDoc/bdddoc.bat +39 -0
  18. data/lib/Samples/CustomizingBuildSamples/BDDDoc/build.custom/bdddoc.build +52 -0
  19. data/lib/Samples/CustomizingBuildSamples/CustomCompiling/compile.replace.step +134 -0
  20. data/lib/Samples/CustomizingBuildSamples/ILMerge/build.custom/ilmerge.internalize.ignore.txt +2 -0
  21. data/lib/Samples/CustomizingBuildSamples/ILMerge/build.custom/ilmerge.pre.build +31 -0
  22. data/lib/Samples/CustomizingBuildSamples/ILMerge/build/ilmerge.build +108 -0
  23. data/lib/Samples/CustomizingBuildSamples/ILMerge/ilmerge.bat +36 -0
  24. data/lib/Samples/CustomizingBuildSamples/MonoMigrationAnalyzer/moma.bat +37 -0
  25. data/lib/Samples/CustomizingBuildSamples/NCover/ncover.bat +37 -0
  26. data/lib/Samples/CustomizingBuildSamples/WiX/build.custom/default.post.build +13 -0
  27. data/lib/Samples/CustomizingBuildSamples/WiX/build.custom/wix.build +104 -0
  28. data/lib/Samples/CustomizingBuildSamples/Zip/build.custom/zip.post.build +54 -0
  29. data/lib/Samples/CustomizingBuildSamples/Zip/build.custom/zip.pre.build +23 -0
  30. data/lib/Samples/scripts/SVN/ReadMe.txt +5 -0
  31. data/lib/Samples/scripts/SVN/branch.bat +30 -0
  32. data/lib/Samples/scripts/SVN/branchWithCheckout.bat +31 -0
  33. data/lib/Samples/scripts/SVN/checkoutBranch.bat +28 -0
  34. data/lib/Samples/scripts/SVN/checkoutTrunk.bat +28 -0
  35. data/lib/Samples/scripts/SVN/commit.bat +23 -0
  36. data/lib/UppercuT.dot +0 -0
  37. data/lib/UppercuTPresentation.pptx +0 -0
  38. data/lib/UppercuTSteps.pptx +0 -0
  39. data/lib/VersionBuilder.doc +0 -0
  40. data/lib/build/UppercuT.xml +1 -1
  41. data/lib/build/default.build +2 -0
  42. data/lib/build/gemsBuild.step +113 -0
  43. data/lib/build/gemsPrepare.step +144 -0
  44. data/lib/build/uppercut.dll +0 -0
  45. data/lib/build/uppercut.tasks.dll +0 -0
  46. data/lib/gems/__RENAME__.gemspec.remove +18 -0
  47. data/lib/logo/UppercuT.ico +0 -0
  48. data/lib/logo/UppercuT_Logo.jpg +0 -0
  49. data/lib/logo/UppercuT_Logo_Small.jpg +0 -0
  50. data/lib/logo/UppercuT_logo.png +0 -0
  51. data/lib/logo/UppercuT_logo_small.gif +0 -0
  52. data/lib/logo/UppercuT_logo_small.png +0 -0
  53. metadata +52 -4
@@ -0,0 +1,109 @@
1
+ <%@ webhandler language="C#" class="ImageHandler" %>
2
+ using System;
3
+ using System.Configuration;
4
+ using System.Data;
5
+ using System.Data.SqlClient;
6
+ using System.Drawing;
7
+ using System.Drawing.Imaging;
8
+ using System.Globalization;
9
+ using System.IO;
10
+ using System.Net;
11
+ using System.Web;
12
+ using System.Web.Caching;
13
+
14
+
15
+ public class ImageHandler : IHttpHandler
16
+ {
17
+ public bool IsReusable { get { return true; } }
18
+
19
+ private string _imagePath = @"{0}\b{1}-r{2}\build_artifacts\ndepend\";
20
+
21
+ /// <summary>
22
+ /// Processes the request.
23
+ /// </summary>
24
+ /// <param name="ctx">CTX.</param>
25
+ public void ProcessRequest(HttpContext ctx)
26
+ {
27
+ try
28
+ {
29
+ string name = ctx.Request.QueryString["name"];
30
+ string project = ctx.Request.QueryString["project"];
31
+ string label = ctx.Request.QueryString["label"];
32
+ string revision = ctx.Request.QueryString["revision"];
33
+ string cacheKey = string.Format("{0}|{1}|{2}|{3}", name, project, label, revision);
34
+
35
+ if ( name != null && name.Length > 0)
36
+ {
37
+ Byte[] imageBytes = null;
38
+
39
+ // Check if the cache contains the image.
40
+ object cachedImageBytes = ctx.Cache.Get(cacheKey);
41
+
42
+ // Use cache if possible...
43
+ if ( cachedImageBytes != null )
44
+ {
45
+ imageBytes = cachedImageBytes as byte [];
46
+ }
47
+ else // Get the image from the project/build directory.
48
+ {
49
+ // Determine the base path from config file if provided.
50
+ string imagePath = ConfigurationSettings.AppSettings["imagePath"];
51
+ if ( imagePath == null || imagePath.Length == 0 )
52
+ {
53
+ // If not provided, default to:
54
+ imagePath = _imagePath;
55
+ }
56
+
57
+ // Replace tokens in the provided path with the project and label.
58
+ imagePath = string.Format(imagePath, project, label, revision);
59
+
60
+ // If the path is relative, combine with the current base directory.
61
+ if ( !Path.IsPathRooted(imagePath) )
62
+ {
63
+ imagePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, imagePath);
64
+ }
65
+
66
+
67
+ try
68
+ { // Get the image stream from the provided path.
69
+ using ( FileStream fs = new FileStream(Path.Combine(imagePath, name), FileMode.Open, FileAccess.Read) )
70
+ {
71
+ using(Image inputImage = Image.FromStream(fs))
72
+ {
73
+ using(Image outputImage = new Bitmap(inputImage))
74
+ {
75
+ using(MemoryStream stream = new MemoryStream())
76
+ {
77
+ outputImage.Save(stream, ImageFormat.Jpeg);
78
+ imageBytes = stream.GetBuffer();
79
+ }
80
+
81
+ ctx.Cache.Add(cacheKey, imageBytes, null,
82
+ DateTime.MaxValue, new TimeSpan(2, 0, 0),
83
+ CacheItemPriority.Normal, null);
84
+ }
85
+ }
86
+ }
87
+ }
88
+ catch ( Exception )
89
+ {
90
+ throw;
91
+ }
92
+ }
93
+
94
+ ctx.Response.Cache.SetCacheability(HttpCacheability.Public);
95
+ ctx.Response.ContentType = "image/jpg";
96
+ ctx.Response.BufferOutput = false;
97
+ ctx.Response.OutputStream.Write(imageBytes, 0, imageBytes.Length);
98
+ }
99
+ }
100
+ catch ( Exception )
101
+ {
102
+ throw;
103
+ }
104
+ finally
105
+ {
106
+ ctx.Response.End();
107
+ }
108
+ }
109
+ }
@@ -0,0 +1,1161 @@
1
+ <?xml version="1.0" ?>
2
+ <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/TR/xhtml1/strict">
3
+
4
+ <!-- Assumes that you have applied the CCNET Image Handler, explained at http://www.robincurry.org/blog/IntegratingImagesIntoCustomCruiseControlNETBuildReports.aspx -->
5
+
6
+ <xsl:output method="html" />
7
+
8
+ <xsl:variable name="label" select="//CCNetNumericLabel/text()" />
9
+ <xsl:variable name="revision_number" select="//revision/text()" />
10
+ <xsl:variable name="project_directory" select="//CCNetArtifactDirectory/text()" />
11
+ <xsl:variable name="project_url" select="//CCNetProjectUrl/text()" />
12
+
13
+ <xsl:template match="/">
14
+
15
+ <style type="text/css">
16
+ <![CDATA[
17
+ BODY { font-family: Trebuchet MS; font-size: 10pt; }
18
+ TD { font-family: Trebuchet MS; font-size: 10pt; }
19
+ .title { font-size: 25pt; font-weight: bold; }
20
+ .subtitle { color: #883333; font-size: 20pt; font-weight: bold; background-color: #CCCCCC }
21
+ .subtitleref { color: blue; font-size: 10pt }
22
+ .info {color: black; font-size: 10pt}
23
+ .biginfo {color: black; font-size: 12pt ; font-weight: bold}
24
+ .infobold {color: black; font-size: 10pt ; font-weight: bold}
25
+ .hdrcell_left { color: #FFFFFF ; font-weight: bold; background-color: #B3B3B3; text-align: left;}
26
+ .hdrcell_leftb { color: #FFFFFF ; font-weight: bold; background-color: #939393; text-align: left;}
27
+ .hdrcell_right { color: #FFFFFF ; font-weight: bold; background-color: #B3B3B3; text-align: right;}
28
+ .hdrcell_rightb { color: #FFFFFF ; font-weight: bold; background-color: #939393; text-align: right;}
29
+ .datacell_left0 { color: #000055; background-color: #DBDBDB; text-align: left; }
30
+ .datacell_leftb0{ color: #000055; background-color: #BBBBBB; text-align: left; }
31
+ .datacell_right0{ color: #000055; background-color: #DBDBDB; text-align: right; }
32
+ .datacell_rightb0{ color: #000055; background-color: #BBBBBB; text-align: right; }
33
+ .datacell_red0 { color: #000055; background-color: #FFBBBB; text-align: right; }
34
+ .datacell_left1 { color: #000055; background-color: #EAEAEA; text-align: left; }
35
+ .datacell_leftb1 { color: #000055; background-color: #CACACA; text-align: left; }
36
+ .datacell_right1{ color: #000055; background-color: #EAEAEA; text-align: right; }
37
+ .datacell_rightb1{ color: #000055; background-color: #CACACA; text-align: right; }
38
+ .datacell_red1 { color: #000055; background-color: #FFCCCC; text-align: right; }
39
+ .datacell_stat0 { color: #000055; background-color: #C0C0FF; text-align: right; }
40
+ .datacell_stat1 { color: #000055; background-color: #D0D0FF; text-align: right; }
41
+ .datacell_empty { color: #000055; background-color: #FFFFFF; text-align: right; }
42
+ .cql_ok { color: #000000; background-color: #A0FFA0; text-align: left; font-size: 10pt ; font-weight: bold}
43
+ .cql_warning { color: #000000; background-color: #FFFF70; text-align: left; font-size: 10pt ; font-weight: bold}
44
+ .cql_error { color: #FFFFFF; background-color: #FF0000; text-align: left; font-size: 10pt ; font-weight: bold}
45
+ ]]>
46
+ </style>
47
+ <div id="NDepend-report">
48
+ <xsl:apply-templates select="//NDepend" />
49
+ </div>
50
+ </xsl:template>
51
+
52
+ <xsl:template match="NDepend">
53
+ <div class="title">NDepend Report</div>
54
+ <p></p>
55
+ <xsl:apply-templates select="ReportInfo" />
56
+ <div class="biginfo">
57
+ To get explanations concerning these metrics, go to the <a HREF="http://www.NDepend.com" target="_blank">NDepend home page.</a>
58
+ </div>
59
+ <p></p>
60
+ <p></p>
61
+ <A HREF="#APPMETRIC">
62
+ <div class="subtitleref">Application Metrics</div>
63
+ </A>
64
+ <A HREF="#ASMMETRIC">
65
+ <div class="subtitleref">Assemblies Metrics</div>
66
+ </A>
67
+ <A HREF="#VISUALNDEPENDVIEW">
68
+ <div class="subtitleref">VisualNDepend View</div>
69
+ </A>
70
+ <A HREF="#GRAPH">
71
+ <div class="subtitleref">Assemblies Abstracness vs. Instability</div>
72
+ </A>
73
+ <A HREF="#ASMDEP">
74
+ <div class="subtitleref">Assemblies Dependencies</div>
75
+ </A>
76
+ <A HREF="#ASMDEPDIAG">
77
+ <div class="subtitleref">Assemblies Dependencies Diagram</div>
78
+ </A>
79
+ <A HREF="#ASMBUILDORDER">
80
+ <div class="subtitleref">Assemblies build order</div>
81
+ </A>
82
+ <A HREF="#INFOWARNINGS">
83
+ <div class="subtitleref">NDepend information and warnings</div>
84
+ </A>
85
+ <a HREF="#CQLQUERIESCONSTRAINTS">
86
+ <div class="subtitleref">CQL Queries and Constraints</div>
87
+ </a>
88
+ <A HREF="#TYPEMETRIC">
89
+ <div class="subtitleref">Types Metrics</div>
90
+ </A>
91
+ <!-- A HREF="#TYPEDEP">
92
+ <div class="subtitleref">Types Dependencies</div>
93
+ </A -->
94
+ <p></p>
95
+ <p></p>
96
+ <A NAME="APPMETRIC">
97
+ <div class="subtitle">Application Metrics</div>
98
+ </A>
99
+ <p></p>
100
+ <xsl:apply-templates select="ApplicationMetrics" />
101
+ <p></p>
102
+ <p></p>
103
+ <A NAME="ASMMETRIC">
104
+ <div class="subtitle">Assemblies Metrics</div>
105
+ </A>
106
+ <p></p>
107
+ <xsl:apply-templates select="AssembliesMetrics" />
108
+ <p></p>
109
+ <p></p>
110
+ <A NAME="VISUALNDEPENDVIEW">
111
+ <div class="subtitle">VisualNDepend View</div>
112
+ </A>
113
+ <p></p>
114
+ <img>
115
+ <xsl:attribute name="src"><xsl:copy-of select="$project_url" />/image.ashx?project=<xsl:copy-of select="$project_directory" />&amp;label=<xsl:copy-of select="$label" />&amp;revision=<xsl:copy-of select="$revision_number" />&amp;name=VisualNDependView.png</xsl:attribute>
116
+ </img>
117
+ <p></p>
118
+ <p></p>
119
+ <A NAME="GRAPH">
120
+ <div class="subtitle">Assemblies Abstracness vs. Instability</div>
121
+ </A>
122
+ <p></p>
123
+ <img>
124
+ <xsl:attribute name="src"><xsl:copy-of select="$project_url" />/image.ashx?project=<xsl:copy-of select="$project_directory" />&amp;label=<xsl:copy-of select="$label" />&amp;revision=<xsl:copy-of select="$revision_number" />&amp;name=AbstractnessVSInstability.png</xsl:attribute>
125
+ </img>
126
+ <p></p>
127
+ <p></p>
128
+ <A NAME="ASMDEP">
129
+ <div class="subtitle">Assemblies Dependencies</div>
130
+ </A>
131
+ <p></p>
132
+ <xsl:apply-templates select="AssemblyDependencies" />
133
+ <p></p>
134
+ <p></p>
135
+ <A NAME="ASMDEPDIAG">
136
+ <div class="subtitle">Assemblies Dependencies Diagram</div>
137
+ </A>
138
+ <p></p>
139
+ <div class="info">Blue : Assemblies of your application.</div>
140
+ <div class="info">Yellow : Framework assemblies referenced by assemblies of your application.</div>
141
+ <img>
142
+ <xsl:attribute name="src"><xsl:copy-of select="$project_url" />/image.ashx?project=<xsl:copy-of select="$project_directory" />&amp;label=<xsl:copy-of select="$label" />&amp;revision=<xsl:copy-of select="$revision_number" />&amp;name=ComponentDependenciesDiagram.png</xsl:attribute>
143
+ </img>
144
+ <p></p>
145
+ <p></p>
146
+ <A NAME="ASMBUILDORDER">
147
+ <div class="subtitle">Assemblies build order</div>
148
+ </A>
149
+ <p></p>
150
+ <xsl:choose>
151
+ <xsl:when test="AssemblySortForCompilOrObfusk">
152
+ <xsl:apply-templates select="AssemblySortForCompilOrObfusk" />
153
+ </xsl:when>
154
+ <xsl:otherwise>
155
+ <div class="info">At least one cycle exists in the assemblies dependencies. The build order cannot be computed.</div>
156
+ </xsl:otherwise>
157
+ </xsl:choose>
158
+ <p></p>
159
+ <p></p>
160
+ <A NAME="INFOWARNINGS">
161
+ <div class="subtitle">NDepend information and warnings</div>
162
+ </A>
163
+ <p></p>
164
+ <xsl:apply-templates select="InfoWarnings" />
165
+ <p></p>
166
+ <p></p>
167
+ <A NAME="CQLQUERIESCONSTRAINTS">
168
+ <div class="subtitle">CQL Queries and Constraints</div>
169
+ </A>
170
+ <p></p>
171
+ <xsl:apply-templates select="CQLResult" />
172
+ <p></p>
173
+ <p></p>
174
+ <A NAME="TYPEMETRIC">
175
+ <div class="subtitle">Types Metrics</div>
176
+ </A>
177
+ <p></p>
178
+ <xsl:apply-templates select="TypesMetrics" />
179
+ <p></p>
180
+ <!-- p></p>
181
+ <A NAME="TYPEDEP">
182
+ <div class="subtitle">Types Dependencies</div>
183
+ </A>
184
+ <p></p>
185
+ <xsl:apply-templates select="TypeReferencement" />
186
+ <p></p -->
187
+ </xsl:template>
188
+
189
+ <xsl:template match="ReportInfo">
190
+ <div class="biginfo">
191
+ Application name: <font color="#FF0000">
192
+ <xsl:value-of select="@AppName"/>
193
+ </font>
194
+ </div>
195
+ <div class="biginfo">
196
+ This report has been built on: <font color="#FF0000">
197
+ <xsl:value-of select="@NDependDate"/>
198
+ </font>
199
+ </div>
200
+ </xsl:template>
201
+
202
+ <xsl:template match="TypeReferencement">
203
+ <table border="1" cellpadding="3" cellspacing="0" bordercolor="white">
204
+ <tr>
205
+ <td class="hdrcell_left">Type</td>
206
+ <td class="hdrcell_left">Uses...</td>
207
+ <td class="hdrcell_left">Is used by...</td>
208
+ </tr>
209
+ <xsl:apply-templates select="Type" />
210
+ </table>
211
+ <p></p>
212
+ </xsl:template>
213
+
214
+ <xsl:template match="Type">
215
+ <tr>
216
+ <td class="datacell_left{position() mod 2}">
217
+ <xsl:element name="a">
218
+ <xsl:attribute name="Name">
219
+ <xsl:value-of select="@Name"/>
220
+ </xsl:attribute>
221
+ <xsl:value-of select="@Name"/>
222
+ </xsl:element>
223
+ </td>
224
+
225
+ <td class="datacell_left{position() mod 2}">
226
+ <xsl:choose>
227
+ <xsl:when test="Use">
228
+ <xsl:apply-templates select="Use" />
229
+ </xsl:when>
230
+ <xsl:otherwise> - </xsl:otherwise>
231
+ </xsl:choose>
232
+ </td>
233
+
234
+ <td class="datacell_left{position() mod 2}">
235
+ <xsl:choose>
236
+ <xsl:when test="UsedBy">
237
+ <xsl:apply-templates select="UsedBy" />
238
+ </xsl:when>
239
+ <xsl:otherwise> - </xsl:otherwise>
240
+ </xsl:choose>
241
+ </td>
242
+ </tr>
243
+ </xsl:template>
244
+
245
+ <xsl:template match="UsedBy">
246
+ <xsl:for-each select="Name">
247
+ <xsl:element name="a">
248
+ <xsl:attribute name="href">
249
+ #<xsl:apply-templates/>
250
+ </xsl:attribute>
251
+ <xsl:apply-templates/>
252
+ </xsl:element> ;
253
+ </xsl:for-each>
254
+ </xsl:template>
255
+
256
+ <xsl:template match="Use">
257
+ <xsl:for-each select="Name">
258
+ <xsl:element name="a">
259
+ <xsl:attribute name="href">
260
+ #<xsl:apply-templates/>
261
+ </xsl:attribute>
262
+ <xsl:apply-templates/>
263
+ </xsl:element> ;
264
+ </xsl:for-each>
265
+ </xsl:template>
266
+
267
+
268
+ <xsl:template match="InfoWarnings">
269
+ <xsl:for-each select="Info">
270
+ <div class="info">
271
+ <xsl:apply-templates/>
272
+ </div>
273
+ </xsl:for-each>
274
+ <xsl:for-each select="Warning">
275
+ <div class="info">
276
+ WARNING: <xsl:apply-templates/>
277
+ </div>
278
+ </xsl:for-each>
279
+ <xsl:for-each select="Error">
280
+ <div class="info">
281
+ ERROR: <xsl:apply-templates/>
282
+ </div>
283
+ </xsl:for-each>
284
+ </xsl:template>
285
+
286
+ <xsl:template match="AssemblySortForCompilOrObfusk">
287
+ <xsl:for-each select="Assembly">
288
+ <div class="info">
289
+ <xsl:value-of select="@Assembly"/>
290
+ </div>
291
+ </xsl:for-each>
292
+ </xsl:template>
293
+
294
+ <xsl:template match="AssemblyDependencies">
295
+ <table border="1" cellpadding="3" cellspacing="0" bordercolor="white">
296
+ <tr>
297
+ <td class="hdrcell_left">Assembly</td>
298
+ <td class="hdrcell_left">Depends on...</td>
299
+ <td class="hdrcell_left">Is referenced by...</td>
300
+ </tr>
301
+ <xsl:apply-templates select="Dependencies_For" />
302
+ </table>
303
+ <p></p>
304
+ </xsl:template>
305
+
306
+ <xsl:template match="Dependencies_For">
307
+ <tr>
308
+ <td class="datacell_left{position() mod 2}">
309
+ <xsl:element name="a">
310
+ <xsl:attribute name="Name">
311
+ <xsl:value-of select="@Assembly"/>
312
+ </xsl:attribute>
313
+ <xsl:value-of select="@Assembly"/>
314
+ </xsl:element>
315
+ </td>
316
+
317
+ <td class="datacell_left{position() mod 2}">
318
+ <xsl:choose>
319
+ <xsl:when test="DependsOn">
320
+ <xsl:apply-templates select="DependsOn" />
321
+ </xsl:when>
322
+ <xsl:otherwise> - </xsl:otherwise>
323
+ </xsl:choose>
324
+ </td>
325
+
326
+ <td class="datacell_left{position() mod 2}">
327
+ <xsl:choose>
328
+ <xsl:when test="ReferencedBy">
329
+ <xsl:apply-templates select="ReferencedBy" />
330
+ </xsl:when>
331
+ <xsl:otherwise> - </xsl:otherwise>
332
+ </xsl:choose>
333
+ </td>
334
+ </tr>
335
+ </xsl:template>
336
+
337
+ <xsl:template match="DependsOn">
338
+ <xsl:for-each select="DependsOn_Name">
339
+ <xsl:element name="a">
340
+ <xsl:attribute name="href">
341
+ #<xsl:apply-templates/>
342
+ </xsl:attribute>
343
+ <xsl:apply-templates/>
344
+ </xsl:element> ;
345
+ </xsl:for-each>
346
+ </xsl:template>
347
+
348
+ <xsl:template match="ReferencedBy">
349
+ <xsl:for-each select="ReferencedBy_Name">
350
+ <xsl:element name="a">
351
+ <xsl:attribute name="href">
352
+ #<xsl:apply-templates/>
353
+ </xsl:attribute>
354
+ <xsl:apply-templates/>
355
+ </xsl:element> ;
356
+ </xsl:for-each>
357
+ </xsl:template>
358
+
359
+ <xsl:template match="ApplicationMetrics">
360
+ <div class="info">
361
+ Number of assemblies: <font color="#FF0000">
362
+ <xsl:value-of select="@NAsm"/>
363
+ </font>
364
+ </div>
365
+ <div class="info">
366
+ Number of types: <font color="#FF0000">
367
+ <xsl:value-of select="@NType"/>
368
+ </font>
369
+ </div>
370
+ <div class="info">
371
+ Number of classes: <font color="#FF0000">
372
+ <xsl:value-of select="@NClass"/>
373
+ </font>
374
+ </div>
375
+ <div class="info">
376
+ Number of abstract classes: <font color="#FF0000">
377
+ <xsl:value-of select="@NAbstractClass"/>
378
+ </font>
379
+ </div>
380
+ <div class="info">
381
+ Number of interfaces: <font color="#FF0000">
382
+ <xsl:value-of select="@NInterface"/>
383
+ </font>
384
+ </div>
385
+ <div class="info">
386
+ Number of value types: <font color="#FF0000">
387
+ <xsl:value-of select="@NValueType"/>
388
+ </font>
389
+ </div>
390
+ <div class="info">
391
+ Number of exception classes: <font color="#FF0000">
392
+ <xsl:value-of select="@NExceptionType"/>
393
+ </font>
394
+ </div>
395
+ <div class="info">
396
+ Number of attribute classes: <font color="#FF0000">
397
+ <xsl:value-of select="@NAttributeType"/>
398
+ </font>
399
+ </div>
400
+ <div class="info">
401
+ Number of delegate classes: <font color="#FF0000">
402
+ <xsl:value-of select="@NDelegateType"/>
403
+ </font>
404
+ </div>
405
+ <div class="info">
406
+ Number of enumerations classes: <font color="#FF0000">
407
+ <xsl:value-of select="@NEnumType"/>
408
+ </font>
409
+ </div>
410
+ <div class="info">
411
+ Number of generic type definitions: <font color="#FF0000">
412
+ <xsl:value-of select="@NGenericTypesDefinition"/>
413
+ </font>
414
+ </div>
415
+ <div class="info">
416
+ Number of generic method definitions: <font color="#FF0000">
417
+ <xsl:value-of select="@NGenericMethodsDefinition"/>
418
+ </font>
419
+ </div>
420
+ <div class="info">
421
+ Number of IL instructions: <font color="#FF0000">
422
+ <xsl:value-of select="@NILInstruction"/>
423
+ </font>
424
+ </div>
425
+ <div class="info">
426
+ Percentage of public types: <font color="#FF0000">
427
+ <xsl:value-of select="@PercentPublicType"/>
428
+ </font>%
429
+ </div>
430
+ <div class="info">
431
+ Percentage of public methods: <font color="#FF0000">
432
+ <xsl:value-of select="@PercentPublicMethod"/>
433
+ </font>%
434
+ </div>
435
+ <div class="info">
436
+ Percentage of classes with at least one public field: <font color="#FF0000">
437
+ <xsl:value-of select="@PercentClassWithAtLeastOnePublicField"/>
438
+ </font>%
439
+ </div>
440
+ <p></p>
441
+ <table border="1" cellpadding="3" cellspacing="0" bordercolor="white">
442
+ <tr>
443
+ <td class="hdrcell_left">Stat</td>
444
+ <td class="hdrcell_left"># Occurrences</td>
445
+ <td class="hdrcell_left">Avg</td>
446
+ <td class="hdrcell_left">StdDev</td>
447
+ <td class="hdrcell_left">Max</td>
448
+ </tr>
449
+ <tr>
450
+ <xsl:apply-templates select="PropertyOnInterface" />
451
+ </tr>
452
+ <tr>
453
+ <xsl:apply-templates select="MethodOnInterface" />
454
+ </tr>
455
+ <tr>
456
+ <xsl:apply-templates select="ArgOnMethodOnInterface" />
457
+ </tr>
458
+ <tr>
459
+ <xsl:apply-templates select="PublicPropertyOnClass" />
460
+ </tr>
461
+ <tr>
462
+ <xsl:apply-templates select="PublicMethodOnClass" />
463
+ </tr>
464
+ <tr>
465
+ <xsl:apply-templates select="ArgOnPublicMethodOnClass" />
466
+ </tr>
467
+ <tr>
468
+ <xsl:apply-templates select="ILInstructionInNonAbstractMethods" />
469
+ </tr>
470
+ <tr>
471
+ <xsl:apply-templates select="ILInstructionInType" />
472
+ </tr>
473
+ <tr>
474
+ <xsl:apply-templates select="ResponseForType" />
475
+ </tr>
476
+ <tr>
477
+ <xsl:apply-templates select="MethodCC" />
478
+ </tr>
479
+ </table>
480
+ <p></p>
481
+ <p></p>
482
+ </xsl:template>
483
+
484
+
485
+ <xsl:template match="PropertyOnInterface">
486
+ <td class="datacell_left1">
487
+ Properties on Interfaces
488
+ </td>
489
+ <td class="datacell_right1">
490
+ <xsl:value-of select="@Occ"/> Interfaces
491
+ </td>
492
+ <td class="datacell_right1">
493
+ <xsl:value-of select="@Avg"/>
494
+ </td>
495
+ <td class="datacell_right1">
496
+ <xsl:value-of select="@StdDev"/>
497
+ </td>
498
+ <td class="datacell_right1">
499
+ <font color="#FF0000">
500
+ <xsl:value-of select="@MaxVal"/>
501
+ </font> properties on <font color="#FF0000">
502
+ <xsl:value-of select="@MaxName"/>
503
+ </font>
504
+ </td>
505
+ </xsl:template>
506
+
507
+ <xsl:template match="MethodOnInterface">
508
+ <td class="datacell_left0">
509
+ Methods on Interfaces
510
+ </td>
511
+ <td class="datacell_right0">
512
+ <xsl:value-of select="@Occ"/> Interfaces
513
+ </td>
514
+ <td class="datacell_right0">
515
+ <xsl:value-of select="@Avg"/>
516
+ </td>
517
+ <td class="datacell_right0">
518
+ <xsl:value-of select="@StdDev"/>
519
+ </td>
520
+ <td class="datacell_right0">
521
+ <font color="#FF0000">
522
+ <xsl:value-of select="@MaxVal"/>
523
+ </font> methods on <font color="#FF0000">
524
+ <xsl:value-of select="@MaxName"/>
525
+ </font>
526
+ </td>
527
+ </xsl:template>
528
+
529
+ <xsl:template match="ArgOnMethodOnInterface">
530
+ <td class="datacell_left1">
531
+ Arguments on Methods on Interfaces
532
+ </td>
533
+ <td class="datacell_right1">
534
+ <xsl:value-of select="@Occ"/> Methods
535
+ </td>
536
+ <td class="datacell_right1">
537
+ <xsl:value-of select="@Avg"/>
538
+ </td>
539
+ <td class="datacell_right1">
540
+ <xsl:value-of select="@StdDev"/>
541
+ </td>
542
+ <td class="datacell_right1">
543
+ <font color="#FF0000">
544
+ <xsl:value-of select="@MaxVal"/>
545
+ </font> arguments on <font color="#FF0000">
546
+ <xsl:value-of select="@MaxName"/>
547
+ </font>
548
+ </td>
549
+ </xsl:template>
550
+
551
+ <xsl:template match="PublicPropertyOnClass">
552
+ <td class="datacell_left0">
553
+ Public Properties on Classes
554
+ </td>
555
+ <td class="datacell_right0">
556
+ <xsl:value-of select="@Occ"/> Classes
557
+ </td>
558
+ <td class="datacell_right0">
559
+ <xsl:value-of select="@Avg"/>
560
+ </td>
561
+ <td class="datacell_right0">
562
+ <xsl:value-of select="@StdDev"/>
563
+ </td>
564
+ <td class="datacell_right0">
565
+ <font color="#FF0000">
566
+ <xsl:value-of select="@MaxVal"/>
567
+ </font> public properties on <font color="#FF0000">
568
+ <xsl:value-of select="@MaxName"/>
569
+ </font>
570
+ </td>
571
+ </xsl:template>
572
+
573
+ <xsl:template match="PublicMethodOnClass">
574
+ <td class="datacell_left1">
575
+ Public Methods on Classes
576
+ </td>
577
+ <td class="datacell_right1">
578
+ <xsl:value-of select="@Occ"/> Classes
579
+ </td>
580
+ <td class="datacell_right1">
581
+ <xsl:value-of select="@Avg"/>
582
+ </td>
583
+ <td class="datacell_right1">
584
+ <xsl:value-of select="@StdDev"/>
585
+ </td>
586
+ <td class="datacell_right1">
587
+ <font color="#FF0000">
588
+ <xsl:value-of select="@MaxVal"/>
589
+ </font> public methods on <font color="#FF0000">
590
+ <xsl:value-of select="@MaxName"/>
591
+ </font>
592
+ </td>
593
+ </xsl:template>
594
+
595
+ <xsl:template match="ArgOnPublicMethodOnClass">
596
+ <td class="datacell_left0">
597
+ Arguments on Public Methods on Classes
598
+ </td>
599
+ <td class="datacell_right0">
600
+ <xsl:value-of select="@Occ"/> Methods
601
+ </td>
602
+ <td class="datacell_right0">
603
+ <xsl:value-of select="@Avg"/>
604
+ </td>
605
+ <td class="datacell_right0">
606
+ <xsl:value-of select="@StdDev"/>
607
+ </td>
608
+ <td class="datacell_right0">
609
+ <font color="#FF0000">
610
+ <xsl:value-of select="@MaxVal"/>
611
+ </font> arguments on <font color="#FF0000">
612
+ <xsl:value-of select="@MaxName"/>
613
+ </font>
614
+ </td>
615
+ </xsl:template>
616
+
617
+
618
+ <xsl:template match="ILInstructionInNonAbstractMethods">
619
+ <td class="datacell_left1">
620
+ IL Instructions in non-abstract Methods
621
+ </td>
622
+ <td class="datacell_right1">
623
+ <xsl:value-of select="@Occ"/> Methods
624
+ </td>
625
+ <td class="datacell_right1">
626
+ <xsl:value-of select="@Avg"/>
627
+ </td>
628
+ <td class="datacell_right1">
629
+ <xsl:value-of select="@StdDev"/>
630
+ </td>
631
+ <td class="datacell_right1">
632
+ <font color="#FF0000">
633
+ <xsl:value-of select="@MaxVal"/>
634
+ </font> IL instructions in <font color="#FF0000">
635
+ <xsl:value-of select="@MaxName"/>
636
+ </font>
637
+ </td>
638
+ </xsl:template>
639
+
640
+ <xsl:template match="ILInstructionInType">
641
+ <td class="datacell_left0">
642
+ Number of IL Instructions par non-abstract Types
643
+ </td>
644
+ <td class="datacell_right0">
645
+ <xsl:value-of select="@Occ"/> Types
646
+ </td>
647
+ <td class="datacell_right0">
648
+ <xsl:value-of select="@Avg"/>
649
+ </td>
650
+ <td class="datacell_right0">
651
+ <xsl:value-of select="@StdDev"/>
652
+ </td>
653
+ <td class="datacell_right0">
654
+ <font color="#FF0000">
655
+ <xsl:value-of select="@MaxVal"/>
656
+ </font> IL instructions in <font color="#FF0000">
657
+ <xsl:value-of select="@MaxName"/>
658
+ </font>
659
+ </td>
660
+ </xsl:template>
661
+
662
+
663
+ <xsl:template match="MethodCC">
664
+ <td class="datacell_left1">
665
+ Cyclomatic complexity on non abstract Methods
666
+ </td>
667
+ <td class="datacell_right1">
668
+ <xsl:value-of select="@Occ"/> Methods
669
+ </td>
670
+ <td class="datacell_right1">
671
+ <xsl:value-of select="@Avg"/>
672
+ </td>
673
+ <td class="datacell_right1">
674
+ <xsl:value-of select="@StdDev"/>
675
+ </td>
676
+ <td class="datacell_right1">
677
+ CC = <font color="#FF0000">
678
+ <xsl:value-of select="@MaxVal"/>
679
+ </font> for <font color="#FF0000">
680
+ <xsl:value-of select="@MaxName"/>
681
+ </font>
682
+ </td>
683
+ </xsl:template>
684
+
685
+ <xsl:template match="ResponseForType">
686
+ <td class="datacell_left0">
687
+ Response for Types (IL instructions)
688
+ </td>
689
+ <td class="datacell_right0">
690
+ <xsl:value-of select="@Occ"/> Types
691
+ </td>
692
+ <td class="datacell_right0">
693
+ <xsl:value-of select="@Avg"/>
694
+ </td>
695
+ <td class="datacell_right0">
696
+ <xsl:value-of select="@StdDev"/>
697
+ </td>
698
+ <td class="datacell_right0">
699
+ RFT = <font color="#FF0000">
700
+ <xsl:value-of select="@MaxVal"/>
701
+ </font> IL instructions on <font color="#FF0000">
702
+ <xsl:value-of select="@MaxName"/>
703
+ </font>
704
+ </td>
705
+ </xsl:template>
706
+
707
+ <xsl:template match="TypesMetrics">
708
+ <a HREF="http://www.NDepend.com/Metrics.aspx#RFT" target="_blank">
709
+ <div class="subtitleref">rft: Response For Type</div>
710
+ </a>
711
+ <a HREF="http://www.NDepend.com/Metrics.aspx#LCOM" target="_blank">
712
+ <div class="subtitleref">lcom: Lack of Cohesion Of Methods of a class</div>
713
+ </a>
714
+ <a HREF="http://www.NDepend.com/Metrics.aspx#ILCC" target="_blank">
715
+ <div class="subtitleref">CC: Cyclomatic Complexity</div>
716
+ </a>
717
+ <a HREF="http://www.NDepend.com/Metrics.aspx#AfferentCoupling" target="_blank">
718
+ <div class="subtitleref">Ca: Afferent Coupling</div>
719
+ </a>
720
+ <a HREF="http://www.NDepend.com/Metrics.aspx#EfferentCoupling" target="_blank">
721
+ <div class="subtitleref">Ce: Efferent Coupling</div>
722
+ </a>
723
+ <a HREF="http://www.NDepend.com/Metrics.aspx#ABC" target="_blank">
724
+ <div class="subtitleref">ABC: Association Between Classes</div>
725
+ </a>
726
+ <a HREF="http://www.NDepend.com/Metrics.aspx#NOC" target="_blank">
727
+ <div class="subtitleref">NOC: Number Of Children</div>
728
+ </a>
729
+ <a HREF="http://www.NDepend.com/Metrics.aspx#DIT" target="_blank">
730
+ <div class="subtitleref">DIT: Depth in Inheritence Tree</div>
731
+ </a>
732
+ <table border="1" cellpadding="3" cellspacing="0" bordercolor="white">
733
+ <tr>
734
+ <td class="hdrcell_left">Type</td>
735
+ <!--td class="hdrcell_rightb"><a HREF="http://www.NDepend.com/Metrics.aspx#RFT" target="_blank">rft Method</a></td-->
736
+ <!--td class="hdrcell_rightb"><a HREF="http://www.NDepend.com/Metrics.aspx#RFT" target="_blank">rft ILInst</a></td-->
737
+ <td class="hdrcell_right">
738
+ <a HREF="http://www.NDepend.com/Metrics.aspx#RANK" target="_blank">rank</a>
739
+ </td>
740
+ <td class="hdrcell_right">
741
+ <a HREF="http://www.NDepend.com/Metrics.aspx#LCOM" target="_blank">lcom</a>
742
+ </td>
743
+ <td class="hdrcell_right">
744
+ <a HREF="http://www.NDepend.com/Metrics.aspx#LCOM" target="_blank">lcom(HS)</a>
745
+ </td>
746
+ <td class="hdrcell_rightb">
747
+ <a HREF="http://www.NDepend.com/Metrics.aspx#ILCC" target="_blank">CC</a>
748
+ </td>
749
+ <td class="hdrcell_right">
750
+ <a HREF="http://www.NDepend.com/Metrics.aspx#AfferentCoupling" target="_blank">Ca</a>
751
+ </td>
752
+ <td class="hdrcell_right">
753
+ <a HREF="http://www.NDepend.com/Metrics.aspx#EfferentCoupling" target="_blank">Ce</a>
754
+ </td>
755
+ <td class="hdrcell_right">
756
+ <a HREF="http://www.NDepend.com/Metrics.aspx#ABC" target="_blank">ABC</a>
757
+ </td>
758
+ <td class="hdrcell_rightb"># Instance Methods</td>
759
+ <td class="hdrcell_rightb"># Static Methods</td>
760
+ <td class="hdrcell_rightb"># Prop</td>
761
+ <td class="hdrcell_rightb"># Fld</td>
762
+ <td class="hdrcell_rightb"># ILInst</td>
763
+ <td class="hdrcell_right">
764
+ <a HREF="http://www.NDepend.com/Metrics.aspx#NOC" target="_blank">NOC</a>
765
+ </td>
766
+ <td class="hdrcell_right">
767
+ <a HREF="http://www.NDepend.com/Metrics.aspx#DIT" target="_blank">DIT</a>
768
+ </td>
769
+
770
+ <td class="hdrcell_leftb">Namespace</td>
771
+
772
+ </tr>
773
+ <xsl:apply-templates select="TypeMetric" />
774
+ </table>
775
+ <p></p>
776
+ </xsl:template>
777
+
778
+ <xsl:template match="TypeMetric">
779
+ <tr>
780
+ <td class="datacell_left{position() mod 2}">
781
+ <xsl:value-of select="@TypeName"/>
782
+ </td>
783
+
784
+ <!--xsl:choose>
785
+ <xsl:when test="@IsBadResponseForAType_Method='True'">
786
+ <td class="datacell_red{position() mod 2}"><xsl:value-of select="@ResponseForAType_Method"/></td>
787
+ </xsl:when>
788
+ <xsl:otherwise>
789
+ <td class="datacell_rightb{position() mod 2}"><xsl:value-of select="@ResponseForAType_Method"/></td>
790
+ </xsl:otherwise>
791
+ </xsl:choose>
792
+
793
+ <xsl:choose>
794
+ <xsl:when test="@IsBadResponseForAType_ILInst='True'">
795
+ <td class="datacell_red{position() mod 2}"><xsl:value-of select="@ResponseForAType_PercentageApp"/>% (<xsl:value-of select="@ResponseForAType_ILInst"/>)</td>
796
+ </xsl:when>
797
+ <xsl:otherwise>
798
+ <td class="datacell_rightb{position() mod 2}"><xsl:value-of select="@ResponseForAType_PercentageApp"/>% (<xsl:value-of select="@ResponseForAType_ILInst"/>)</td>
799
+ </xsl:otherwise>
800
+ </xsl:choose-->
801
+
802
+
803
+ <xsl:choose>
804
+ <xsl:when test="@IsBadTypeRank='True'">
805
+ <td class="datacell_red{position() mod 2}">
806
+ <xsl:value-of select="@TypeRank"/>
807
+ </td>
808
+ </xsl:when>
809
+ <xsl:otherwise>
810
+ <td class="datacell_right{position() mod 2}">
811
+ <xsl:value-of select="@TypeRank"/>
812
+ </td>
813
+ </xsl:otherwise>
814
+ </xsl:choose>
815
+
816
+ <xsl:choose>
817
+ <xsl:when test="@IsBadLackOfCohesionOfMethods='True'">
818
+ <td class="datacell_red{position() mod 2}">
819
+ <xsl:value-of select="@LackOfCohesionOfMethods"/>
820
+ </td>
821
+ </xsl:when>
822
+ <xsl:otherwise>
823
+ <td class="datacell_right{position() mod 2}">
824
+ <xsl:value-of select="@LackOfCohesionOfMethods"/>
825
+ </td>
826
+ </xsl:otherwise>
827
+ </xsl:choose>
828
+
829
+ <xsl:choose>
830
+ <xsl:when test="@IsBadLackOfCohesionOfMethods_HS='True'">
831
+ <td class="datacell_red{position() mod 2}">
832
+ <xsl:value-of select="@LackOfCohesionOfMethods_HS"/>
833
+ </td>
834
+ </xsl:when>
835
+ <xsl:otherwise>
836
+ <td class="datacell_right{position() mod 2}">
837
+ <xsl:value-of select="@LackOfCohesionOfMethods_HS"/>
838
+ </td>
839
+ </xsl:otherwise>
840
+ </xsl:choose>
841
+
842
+ <xsl:choose>
843
+ <xsl:when test="@IsBadCyclomaticComplexity='True'">
844
+ <td class="datacell_red{position() mod 2}">
845
+ <xsl:value-of select="@CyclomaticComplexity"/>
846
+ </td>
847
+ </xsl:when>
848
+ <xsl:otherwise>
849
+ <td class="datacell_rightb{position() mod 2}">
850
+ <xsl:value-of select="@CyclomaticComplexity"/>
851
+ </td>
852
+ </xsl:otherwise>
853
+ </xsl:choose>
854
+
855
+ <xsl:choose>
856
+ <xsl:when test="@IsBadAfferentCoupling='True'">
857
+ <td class="datacell_red{position() mod 2}">
858
+ <xsl:value-of select="@AfferentCoupling"/>
859
+ </td>
860
+ </xsl:when>
861
+ <xsl:otherwise>
862
+ <td class="datacell_right{position() mod 2}">
863
+ <xsl:value-of select="@AfferentCoupling"/>
864
+ </td>
865
+ </xsl:otherwise>
866
+ </xsl:choose>
867
+
868
+ <xsl:choose>
869
+ <xsl:when test="@IsBadEfferentCoupling='True'">
870
+ <td class="datacell_red{position() mod 2}">
871
+ <xsl:value-of select="@EfferentCoupling"/>
872
+ </td>
873
+ </xsl:when>
874
+ <xsl:otherwise>
875
+ <td class="datacell_right{position() mod 2}">
876
+ <xsl:value-of select="@EfferentCoupling"/>
877
+ </td>
878
+ </xsl:otherwise>
879
+ </xsl:choose>
880
+
881
+ <xsl:choose>
882
+ <xsl:when test="@IsBadAssociationBetweenClasses='True'">
883
+ <td class="datacell_red{position() mod 2}">
884
+ <xsl:value-of select="@AssociationBetweenClasses"/>
885
+ </td>
886
+ </xsl:when>
887
+ <xsl:otherwise>
888
+ <td class="datacell_right{position() mod 2}">
889
+ <xsl:value-of select="@AssociationBetweenClasses"/>
890
+ </td>
891
+ </xsl:otherwise>
892
+ </xsl:choose>
893
+
894
+ <xsl:choose>
895
+ <xsl:when test="@IsBadNInstanceMethods='True'">
896
+ <td class="datacell_red{position() mod 2}">
897
+ <xsl:value-of select="@NInstanceMethods"/>
898
+ </td>
899
+ </xsl:when>
900
+ <xsl:otherwise>
901
+ <td class="datacell_rightb{position() mod 2}">
902
+ <xsl:value-of select="@NInstanceMethods"/>
903
+ </td>
904
+ </xsl:otherwise>
905
+ </xsl:choose>
906
+
907
+ <xsl:choose>
908
+ <xsl:when test="@IsBadNStaticMethods='True'">
909
+ <td class="datacell_red{position() mod 2}">
910
+ <xsl:value-of select="@NStaticMethods"/>
911
+ </td>
912
+ </xsl:when>
913
+ <xsl:otherwise>
914
+ <td class="datacell_rightb{position() mod 2}">
915
+ <xsl:value-of select="@NStaticMethods"/>
916
+ </td>
917
+ </xsl:otherwise>
918
+ </xsl:choose>
919
+
920
+ <xsl:choose>
921
+ <xsl:when test="@IsBadNProperties='True'">
922
+ <td class="datacell_red{position() mod 2}">
923
+ <xsl:value-of select="@NProperties"/>
924
+ </td>
925
+ </xsl:when>
926
+ <xsl:otherwise>
927
+ <td class="datacell_rightb{position() mod 2}">
928
+ <xsl:value-of select="@NProperties"/>
929
+ </td>
930
+ </xsl:otherwise>
931
+ </xsl:choose>
932
+
933
+ <xsl:choose>
934
+ <xsl:when test="@IsBadNFields='True'">
935
+ <td class="datacell_red{position() mod 2}">
936
+ <xsl:value-of select="@NFields"/>
937
+ </td>
938
+ </xsl:when>
939
+ <xsl:otherwise>
940
+ <td class="datacell_rightb{position() mod 2}">
941
+ <xsl:value-of select="@NFields"/>
942
+ </td>
943
+ </xsl:otherwise>
944
+ </xsl:choose>
945
+
946
+ <xsl:choose>
947
+ <xsl:when test="@IsBadNILInstructionOnType='True'">
948
+ <td class="datacell_red{position() mod 2}">
949
+ <xsl:value-of select="@NILInstructionOnType"/>
950
+ </td>
951
+ </xsl:when>
952
+ <xsl:otherwise>
953
+ <td class="datacell_rightb{position() mod 2}">
954
+ <xsl:value-of select="@NILInstructionOnType"/>
955
+ </td>
956
+ </xsl:otherwise>
957
+ </xsl:choose>
958
+
959
+ <xsl:choose>
960
+ <xsl:when test="@IsBadNChildren='True'">
961
+ <td class="datacell_red{position() mod 2}">
962
+ <xsl:value-of select="@NChildren"/>
963
+ </td>
964
+ </xsl:when>
965
+ <xsl:otherwise>
966
+ <td class="datacell_right{position() mod 2}">
967
+ <xsl:value-of select="@NChildren"/>
968
+ </td>
969
+ </xsl:otherwise>
970
+ </xsl:choose>
971
+
972
+ <xsl:choose>
973
+ <xsl:when test="@IsBadDepthOfInheritanceTree='True'">
974
+ <td class="datacell_red{position() mod 2}">
975
+ <xsl:value-of select="@DepthOfInheritanceTree"/>
976
+ </td>
977
+ </xsl:when>
978
+ <xsl:otherwise>
979
+ <td class="datacell_right{position() mod 2}">
980
+ <xsl:value-of select="@DepthOfInheritanceTree"/>
981
+ </td>
982
+ </xsl:otherwise>
983
+ </xsl:choose>
984
+
985
+
986
+
987
+ <td class="datacell_leftb{position() mod 2}">
988
+ <xsl:value-of select="@TypeNamespace"/>
989
+ </td>
990
+ </tr>
991
+ </xsl:template>
992
+
993
+ <xsl:template match="AssembliesMetrics">
994
+ <table border="1" cellpadding="3" cellspacing="0" bordercolor="white">
995
+ <tr>
996
+ <td class="hdrcell_left">Assembly</td>
997
+ <td class="hdrcell_right"># Types</td>
998
+ <td class="hdrcell_right"># Abstract Types</td>
999
+ <td class="hdrcell_right"># IL Inst</td>
1000
+ <td class="hdrcell_right">
1001
+ <a HREF="http://www.NDepend.com/Metrics.aspx#AfferentCoupling" target="_blank">Afferent Coupling</a>
1002
+ </td>
1003
+ <td class="hdrcell_right">
1004
+ <a HREF="http://www.NDepend.com/Metrics.aspx#EfferentCoupling" target="_blank">Efferent Coupling</a>
1005
+ </td>
1006
+ <td class="hdrcell_right">
1007
+ <a HREF="http://www.NDepend.com/Metrics.aspx#RelationalCohesion" target="_blank">Relational Cohesion</a>
1008
+ </td>
1009
+ <td class="hdrcell_right">
1010
+ <a HREF="http://www.NDepend.com/Metrics.aspx#Instability" target="_blank">Instability</a>
1011
+ </td>
1012
+ <td class="hdrcell_right">
1013
+ <a HREF="http://www.NDepend.com/Metrics.aspx#Abstracness" target="_blank">Abstractness</a>
1014
+ </td>
1015
+ <td class="hdrcell_right">
1016
+ <a HREF="http://www.NDepend.com/Metrics.aspx#DitFromMainSeq" target="_blank">Distance</a>
1017
+ </td>
1018
+ </tr>
1019
+ <xsl:apply-templates select="Assembly" />
1020
+ </table>
1021
+ <p></p>
1022
+ </xsl:template>
1023
+
1024
+ <xsl:template match="Assembly">
1025
+ <tr>
1026
+ <td class="datacell_left{position() mod 2}">
1027
+ <xsl:value-of select="@Assembly"/>
1028
+ </td>
1029
+ <td class="datacell_right{position() mod 2}">
1030
+ <xsl:value-of select="@NTypes"/>
1031
+ </td>
1032
+ <td class="datacell_right{position() mod 2}">
1033
+ <xsl:value-of select="@NAbstractTypes"/>
1034
+ </td>
1035
+ <td class="datacell_right{position() mod 2}">
1036
+ <xsl:value-of select="@NILInstructionInAsm"/>
1037
+ </td>
1038
+ <td class="datacell_right{position() mod 2}">
1039
+ <xsl:value-of select="@AfferentCoupling"/>
1040
+ </td>
1041
+ <td class="datacell_right{position() mod 2}">
1042
+ <xsl:value-of select="@EfferentCoupling"/>
1043
+ </td>
1044
+ <td class="datacell_right{position() mod 2}">
1045
+ <xsl:value-of select="@RelationalCohesion"/>
1046
+ </td>
1047
+ <td class="datacell_right{position() mod 2}">
1048
+ <xsl:value-of select="@Instability"/>
1049
+ </td>
1050
+ <td class="datacell_right{position() mod 2}">
1051
+ <xsl:value-of select="@Abstractness"/>
1052
+ </td>
1053
+ <td class="datacell_right{position() mod 2}">
1054
+ <xsl:value-of select="@NormDistFrMainSeq"/>
1055
+ </td>
1056
+ </tr>
1057
+ </xsl:template>
1058
+
1059
+ <xsl:template match="CQLResult">
1060
+ <xsl:for-each select="Group">
1061
+ <xsl:choose>
1062
+ <xsl:when test="@Status='Ok'">
1063
+ <div class="cql_ok">
1064
+ {<xsl:value-of select="@Name"/>} All CQL queries compile and all CQL contraints are satisfied.
1065
+ </div>
1066
+ </xsl:when>
1067
+ <xsl:when test="@Status='Warn'">
1068
+ <div class="cql_warning">
1069
+ {<xsl:value-of select="@Name"/>} Some CQL constraints are not satisfied.
1070
+ </div>
1071
+ </xsl:when>
1072
+ <xsl:when test="@Status='Error'">
1073
+ <div class="cql_error">
1074
+ {<xsl:value-of select="@Name"/>} Some CQL queries don't compile.
1075
+ </div>
1076
+ </xsl:when>
1077
+ </xsl:choose>
1078
+ </xsl:for-each>
1079
+
1080
+ <xsl:for-each select="Group">
1081
+ <xsl:variable name="groupname" select="@Name" />
1082
+
1083
+ <xsl:for-each select="Query">
1084
+ <br/>
1085
+ <hr/>
1086
+ <xsl:choose>
1087
+ <xsl:when test="@Status='Warn'">
1088
+ <div class="cql_warning">
1089
+ WARNING: The following CQL constraint is not satisfied. <xsl:value-of select="@NbNodeMatched"/> <xsl:value-of select="@KindOfNode"/> on <xsl:value-of select="@NbNodeTested"/> tested match the condition. --> Group {<xsl:value-of select="$groupname"/>}
1090
+ </div>
1091
+ </xsl:when>
1092
+ <xsl:otherwise>
1093
+ <div class="cql_error">
1094
+ ERROR: The following CQL query doesn't compile. Description: <xsl:value-of select="@ErrorDesc"/> --> Group {<xsl:value-of select="$groupname"/>}
1095
+ </div>
1096
+ </xsl:otherwise>
1097
+ </xsl:choose>
1098
+ <pre style="background: #F6F6F6">
1099
+ <xsl:value-of select="QueryHtml" disable-output-escaping="yes"/>
1100
+ </pre>
1101
+
1102
+ <xsl:choose>
1103
+ <!-- and Rows garantee that there is a Rows element-->
1104
+ <xsl:when test="@Status='Warn' and Rows">
1105
+ <table border="1" cellpadding="3" cellspacing="0" bordercolor="white">
1106
+ <tr>
1107
+ <td class="hdrcell_left">Name</td>
1108
+ <xsl:for-each select="Columns/Column">
1109
+ <td class="hdrcell_left">
1110
+ <xsl:value-of select="." />
1111
+ </td>
1112
+ </xsl:for-each>
1113
+ <td class="hdrcell_left">Full Name</td>
1114
+ </tr>
1115
+
1116
+
1117
+ <xsl:for-each select="Rows/Row">
1118
+ <tr>
1119
+ <!-- We keep track of the position for the nested foreach-->
1120
+ <xsl:variable name="position" select="position()" />
1121
+ <xsl:choose>
1122
+ <xsl:when test="@FullName='Stat'">
1123
+ <!-- Display a stat row-->
1124
+ <td class="datacell_stat{$position mod 2}">
1125
+ <xsl:value-of select="@Name"/>
1126
+ </td>
1127
+ <xsl:for-each select="Val">
1128
+ <td class="datacell_stat{$position mod 2}">
1129
+ <xsl:value-of select="."/>
1130
+ </td>
1131
+ </xsl:for-each>
1132
+ <td class="datacell_empty"></td>
1133
+ </xsl:when>
1134
+ <xsl:otherwise>
1135
+ <!-- Display a normal item row-->
1136
+ <td class="datacell_left{$position mod 2}">
1137
+ <xsl:value-of select="@Name"/>
1138
+ </td>
1139
+ <xsl:for-each select="Val">
1140
+ <td class="datacell_right{$position mod 2}">
1141
+ <xsl:value-of select="."/>
1142
+ </td>
1143
+ </xsl:for-each>
1144
+ <td class="datacell_left{$position mod 2}">
1145
+ <xsl:value-of select="@FullName"/>
1146
+ </td>
1147
+ </xsl:otherwise>
1148
+ </xsl:choose>
1149
+ </tr>
1150
+ </xsl:for-each>
1151
+
1152
+ </table>
1153
+ </xsl:when>
1154
+ </xsl:choose>
1155
+
1156
+ </xsl:for-each>
1157
+ </xsl:for-each>
1158
+ </xsl:template>
1159
+
1160
+ </xsl:stylesheet>
1161
+