Project

General

Profile

Download (17.5 KB) Statistics
| Branch: | Revision:

git_sitools_idoc / flarecast / cots / ant / apache-ant-1.8.1 / etc / maudit-frames.xsl @ d2a8c3fd

1
<?xml version="1.0"?>
2
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
3
    xmlns:lxslt="http://xml.apache.org/xslt"
4
    xmlns:redirect="org.apache.xalan.lib.Redirect"
5
    extension-element-prefixes="redirect">
6
<xsl:output method="html" indent="yes" encoding="US-ASCII"/>
7
<xsl:decimal-format decimal-separator="." grouping-separator="," />
8
<!--
9
   Licensed to the Apache Software Foundation (ASF) under one or more
10
   contributor license agreements.  See the NOTICE file distributed with
11
   this work for additional information regarding copyright ownership.
12
   The ASF licenses this file to You under the Apache License, Version 2.0
13
   (the "License"); you may not use this file except in compliance with
14
   the License.  You may obtain a copy of the License at
15

    
16
       http://www.apache.org/licenses/LICENSE-2.0
17

    
18
   Unless required by applicable law or agreed to in writing, software
19
   distributed under the License is distributed on an "AS IS" BASIS,
20
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21
   See the License for the specific language governing permissions and
22
   limitations under the License.
23
-->
24
<!--
25

    
26
    Stylesheet to transform an XML file generated by the Ant MAudit task into
27
    a set of JavaDoc-like HTML page to make pages more convenient to be browsed.
28

    
29
    It use the Xalan redirect extension to write to multiple output files.
30

    
31
    @author Stephane Bailliez <a href="mailto:sbailliez@apache.org"/>
32
-->
33

    
34
<xsl:param name="output.dir" select="'.'"/>
35

    
36

    
37
<xsl:template match="classes">
38
    <!-- create the index.html -->
39
    <redirect:write file="{$output.dir}/index.html">
40
        <xsl:call-template name="index.html"/>
41
    </redirect:write>
42

    
43
    <!-- create the stylesheet.css -->
44
    <redirect:write file="{$output.dir}/stylesheet.css">
45
        <xsl:call-template name="stylesheet.css"/>
46
    </redirect:write>
47

    
48
    <!-- create the overview-packages.html at the root -->
49
    <redirect:write file="{$output.dir}/overview-summary.html">
50
        <xsl:apply-templates select="." mode="overview.packages"/>
51
    </redirect:write>
52

    
53
    <!-- create the all-packages.html at the root -->
54
    <redirect:write file="{$output.dir}/overview-frame.html">
55
        <xsl:apply-templates select="." mode="all.packages"/>
56
    </redirect:write>
57

    
58
    <!-- create the all-classes.html at the root -->
59
    <redirect:write file="{$output.dir}/allclasses-frame.html">
60
        <xsl:apply-templates select="." mode="all.classes"/>
61
    </redirect:write>
62

    
63
    <!-- process all packages -->
64
    <xsl:for-each select="./class[not(./@package = preceding-sibling::class/@package)]">
65
        <xsl:call-template name="package">
66
            <xsl:with-param name="name" select="@package"/>
67
        </xsl:call-template>
68
    </xsl:for-each>
69
</xsl:template>
70

    
71

    
72
<xsl:template name="package">
73
    <xsl:param name="name"/>
74
    <xsl:variable name="package.dir">
75
        <xsl:if test="not($name = '')"><xsl:value-of select="translate($name,'.','/')"/></xsl:if>
76
        <xsl:if test="$name = ''">.</xsl:if>
77
    </xsl:variable>
78
    <!--Processing package <xsl:value-of select="@name"/> in <xsl:value-of select="$output.dir"/> -->
79
    <!-- create a classes-list.html in the package directory -->
80
    <redirect:write file="{$output.dir}/{$package.dir}/package-frame.html">
81
        <xsl:call-template name="classes.list">
82
            <xsl:with-param name="name" select="$name"/>
83
        </xsl:call-template>
84
    </redirect:write>
85

    
86
    <!-- create a package-summary.html in the package directory -->
87
    <redirect:write file="{$output.dir}/{$package.dir}/package-summary.html">
88
        <xsl:call-template name="package.summary">
89
            <xsl:with-param name="name" select="$name"/>
90
        </xsl:call-template>
91
    </redirect:write>
92

    
93
    <!-- for each class, creates a @name.html -->
94
    <!-- @bug there will be a problem with inner classes having the same name, it will be overwritten -->
95
    <xsl:for-each select="/classes/class[@package = $name]">
96
        <redirect:write file="{$output.dir}/{$package.dir}/{@name}.html">
97
            <xsl:apply-templates select="." mode="class.details"/>
98
        </redirect:write>
99
    </xsl:for-each>
100
</xsl:template>
101

    
102
<xsl:template name="index.html">
103
<HTML>
104
    <HEAD><TITLE>Audit Results.</TITLE></HEAD>
105
    <FRAMESET cols="20%,80%">
106
        <FRAMESET rows="30%,70%">
107
            <FRAME src="overview-frame.html" name="packageListFrame"/>
108
            <FRAME src="allclasses-frame.html" name="classListFrame"/>
109
        </FRAMESET>
110
        <FRAME src="overview-summary.html" name="classFrame"/>
111
    </FRAMESET>
112
    <noframes>
113
        <H2>Frame Alert</H2>
114
        <P>
115
        This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
116
        </P>
117
    </noframes>
118
</HTML>
119
</xsl:template>
120

    
121

    
122
<!-- this is the stylesheet css to use for nearly everything -->
123
<xsl:template name="stylesheet.css">
124
    .bannercell {
125
      border: 0px;
126
      padding: 0px;
127
    }
128
    body {
129
      margin-left: 10;
130
      margin-right: 10;
131
      font:normal 80% arial,helvetica,sanserif;
132
      background-color:#FFFFFF;
133
      color:#000000;
134
    }
135
    .a td {
136
      background: #efefef;
137
    }
138
    .b td {
139
      background: #fff;
140
    }
141
    th, td {
142
      text-align: left;
143
      vertical-align: top;
144
    }
145
    th {
146
      font-weight:bold;
147
      background: #ccc;
148
      color: black;
149
    }
150
    table, th, td {
151
      font-size:100%;
152
      border: none
153
    }
154
    table.log tr td, tr th {
155

    
156
    }
157
    h2 {
158
      font-weight:bold;
159
      font-size:140%;
160
      margin-bottom: 5;
161
    }
162
    h3 {
163
      font-size:100%;
164
      font-weight:bold;
165
      background: #525D76;
166
      color: white;
167
      text-decoration: none;
168
      padding: 5px;
169
      margin-right: 2px;
170
      margin-left: 2px;
171
      margin-bottom: 0;
172
    }
173
</xsl:template>
174

    
175

    
176
<!-- print the violations of the class -->
177
<xsl:template match="class" mode="class.details">
178
    <xsl:variable name="package.name" select="@package"/>
179
    <HTML>
180
        <HEAD>
181
            <xsl:call-template name="create.stylesheet.link">
182
                <xsl:with-param name="package.name" select="$package.name"/>
183
            </xsl:call-template>
184
        </HEAD>
185
        <BODY>
186
            <xsl:call-template name="pageHeader"/>
187
            <H3>Class <xsl:if test="not($package.name = '')"><xsl:value-of select="$package.name"/>.</xsl:if><xsl:value-of select="@name"/></H3>
188

    
189
            <table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
190
                <xsl:call-template name="class.audit.header"/>
191
                <xsl:apply-templates select="." mode="print.audit"/>
192
            </table>
193

    
194
            <H3>Violations</H3>
195
            <table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
196
                <xsl:call-template name="violation.audit.header"/>
197
                <xsl:apply-templates select="./violation" mode="print.audit">
198
                    <xsl:sort data-type="number" select="@line"/>
199
                </xsl:apply-templates>
200
            </table>
201
            <xsl:call-template name="pageFooter"/>
202
        </BODY>
203
    </HTML>
204
</xsl:template>
205

    
206

    
207
<!-- list of classes in a package -->
208
<xsl:template name="classes.list">
209
    <xsl:param name="name"/>
210
    <HTML>
211
        <HEAD>
212
            <xsl:call-template name="create.stylesheet.link">
213
                <xsl:with-param name="package.name" select="$name"/>
214
            </xsl:call-template>
215
        </HEAD>
216
        <BODY>
217
            <table width="100%">
218
                <tr>
219
                    <td nowrap="nowrap">
220
                        <H2><a href="package-summary.html" target="classFrame"><xsl:value-of select="$name"/></a></H2>
221
                    </td>
222
                </tr>
223
            </table>
224

    
225
            <h2>Classes</h2>
226
            <TABLE WIDTH="100%">
227
                <xsl:apply-templates select="/classes/class[./@package = $name]" mode="classes.list">
228
                    <xsl:sort select="@name"/>
229
                </xsl:apply-templates>
230
            </TABLE>
231
        </BODY>
232
    </HTML>
233
</xsl:template>
234
<!-- the class to list -->
235
<xsl:template match="class" mode="classes.list">
236
    <tr>
237
        <td nowrap="nowrap">
238
            <!-- @bug naming to fix for inner classes -->
239
            <a href="{@name}.html" target="classFrame"><xsl:value-of select="@name"/></a>
240
        </td>
241
    </tr>
242
</xsl:template>
243

    
244

    
245
<!--
246
    Creates an all-classes.html file that contains a link to all package-summary.html
247
    on each class.
248
-->
249
<xsl:template match="classes" mode="all.classes">
250
    <html>
251
        <head>
252
            <xsl:call-template name="create.stylesheet.link">
253
                <xsl:with-param name="package.name"/>
254
            </xsl:call-template>
255
        </head>
256
        <body>
257
            <h2>Classes</h2>
258
            <table width="100%">
259
                <xsl:apply-templates select=".//class" mode="all.classes">
260
                    <xsl:sort select="@name"/>
261
                </xsl:apply-templates>
262
            </table>
263
        </body>
264
    </html>
265
</xsl:template>
266

    
267
<xsl:template match="class" mode="all.classes">
268
    <!-- (ancestor::package)[last()] is buggy in MSXML3 ? -->
269
    <xsl:variable name="package.name" select="@package"/>
270
    <tr>
271
        <td nowrap="nowrap">
272
            <a target="classFrame">
273
                <xsl:attribute name="href">
274
                    <xsl:if test="not($package.name='')">
275
                        <xsl:value-of select="translate($package.name,'.','/')"/><xsl:text>/</xsl:text>
276
                    </xsl:if><xsl:value-of select="@name"/><xsl:text>.html</xsl:text>
277
                </xsl:attribute>
278
                <xsl:value-of select="@name"/>
279
            </a>
280
        </td>
281
    </tr>
282
</xsl:template>
283

    
284

    
285
<!--
286
    Creates an html file that contains a link to all package-summary.html files on
287
    each package existing on testsuites.
288
    @bug there will be a problem here, I don't know yet how to handle unnamed package :(
289
-->
290
<xsl:template match="classes" mode="all.packages">
291
    <html>
292
        <head>
293
            <xsl:call-template name="create.stylesheet.link">
294
                <xsl:with-param name="package.name"/>
295
            </xsl:call-template>
296
        </head>
297
        <body>
298
            <h2><a href="overview-summary.html" target="classFrame">Home</a></h2>
299
            <h2>Packages</h2>
300
                <table width="100%">
301
                    <xsl:apply-templates select="class[not(./@package = preceding-sibling::class/@package)]" mode="all.packages">
302
                        <xsl:sort select="@package" order="ascending"/>
303
                    </xsl:apply-templates>
304
                </table>
305
        </body>
306
    </html>
307
</xsl:template>
308

    
309
<xsl:template match="class" mode="all.packages">
310
    <tr>
311
        <td nowrap="nowrap">
312
            <a href="{translate(@package,'.','/')}/package-summary.html" target="classFrame">
313
                <xsl:value-of select="@package"/>
314
            </a>
315
        </td>
316
    </tr>
317
</xsl:template>
318

    
319

    
320
<xsl:template match="classes" mode="overview.packages">
321
    <html>
322
        <head>
323
            <xsl:call-template name="create.stylesheet.link">
324
                <xsl:with-param name="package.name"/>
325
            </xsl:call-template>
326
        </head>
327
        <body onload="open('allclasses-frame.html','classListFrame')">
328
        <xsl:call-template name="pageHeader"/>
329
        <h3>Summary</h3>
330
        <table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
331
        <tr>
332
            <th>Audited classes</th>
333
            <th>Reported classes</th>
334
            <th>Violations</th>
335
        </tr>
336
        <tr class="a">
337
            <td><xsl:value-of select="@audited"/></td>
338
            <td><xsl:value-of select="@reported"/></td>
339
            <td><xsl:value-of select="@violations"/></td>
340
        </tr>
341
        </table>
342
        <table border="0" width="100%">
343
        <tr>
344
        <td style="text-align: justify;">
345
        Note: Rules checked have originated from style guidelines suggested by the language designers,
346
        experience from the Java development community and insite experience. Violations are generally
347
        reported with a reference to the <a href="http://java.sun.com/docs/books/jls/second_edition/html/jTOC.doc.html">Java Language Specifications</a> (JLS x.x.x)
348
        and Metamata Audit rules (x.x).
349
        Please consult these documents for additional information about violations.
350
        <p/>
351
        Rules checked also enforce adherence to <a href="http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html">Sun Java coding guidelines</a> in use at Jakarta.
352
        <p/>
353
        One should note that these violations do not necessary underline errors but should be used
354
        as an indication for <i>possible</i> errors. As always, use your best judgment and review
355
        them carefully, it might save you hours of debugging.
356
        </td>
357
        </tr>
358
        </table>
359

    
360
        <h3>Packages</h3>
361
        <table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
362
            <xsl:call-template name="class.audit.header"/>
363
            <xsl:for-each select="class[not(./@package = preceding-sibling::class/@package)]">
364
                <xsl:sort select="@package" order="ascending"/>
365
                <tr>
366
          <xsl:call-template name="alternate-row"/>
367
                    <td><a href="{translate(@package,'.','/')}/package-summary.html"><xsl:value-of select="@package"/></a></td>
368
                    <td><xsl:value-of select="sum(/classes/class[./@package = current()/@package]/@violations)"/></td>
369
                </tr>
370
            </xsl:for-each>
371
        </table>
372
        <xsl:call-template name="pageFooter"/>
373
        </body>
374
        </html>
375
</xsl:template>
376

    
377

    
378
<xsl:template name="package.summary">
379
    <xsl:param name="name"/>
380
    <HTML>
381
        <HEAD>
382
            <xsl:call-template name="create.stylesheet.link">
383
                <xsl:with-param name="package.name" select="$name"/>
384
            </xsl:call-template>
385
        </HEAD>
386
        <BODY>
387
            <xsl:attribute name="onload">open('package-frame.html','classListFrame')</xsl:attribute>
388
            <xsl:call-template name="pageHeader"/>
389
            <h3>Package <xsl:value-of select="$name"/></h3>
390

    
391
            <!--table border="0" cellpadding="5" cellspacing="2" width="100%">
392
                <xsl:call-template name="class.metrics.header"/>
393
                <xsl:apply-templates select="." mode="print.metrics"/>
394
            </table-->
395

    
396
            <xsl:if test="count(/classes/class[./@package = $name]) &gt; 0">
397
                <H3>Classes</H3>
398
                <table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
399
                    <xsl:call-template name="class.audit.header"/>
400
                    <xsl:apply-templates select="/classes/class[./@package = $name]" mode="print.audit">
401
                        <xsl:sort select="@name"/>
402
                    </xsl:apply-templates>
403
                </table>
404
            </xsl:if>
405
            <xsl:call-template name="pageFooter"/>
406
        </BODY>
407
    </HTML>
408
</xsl:template>
409

    
410

    
411
<!--
412
    transform string like a.b.c to ../../../
413
    @param path the path to transform into a descending directory path
414
-->
415
<xsl:template name="path">
416
    <xsl:param name="path"/>
417
    <xsl:if test="contains($path,'.')">
418
        <xsl:text>../</xsl:text>
419
        <xsl:call-template name="path">
420
            <xsl:with-param name="path"><xsl:value-of select="substring-after($path,'.')"/></xsl:with-param>
421
        </xsl:call-template>
422
    </xsl:if>
423
    <xsl:if test="not(contains($path,'.')) and not($path = '')">
424
        <xsl:text>../</xsl:text>
425
    </xsl:if>
426
</xsl:template>
427

    
428

    
429
<!-- create the link to the stylesheet based on the package name -->
430
<xsl:template name="create.stylesheet.link">
431
    <xsl:param name="package.name"/>
432
    <LINK REL ="stylesheet" TYPE="text/css" TITLE="Style"><xsl:attribute name="href"><xsl:if test="not($package.name = 'unnamed package')"><xsl:call-template name="path"><xsl:with-param name="path" select="$package.name"/></xsl:call-template></xsl:if>stylesheet.css</xsl:attribute></LINK>
433
</xsl:template>
434

    
435
<!-- Page HEADER -->
436
<xsl:template name="pageHeader">
437

    
438
  <!-- jakarta logo -->
439
  <table border="0" cellpadding="0" cellspacing="0" width="100%">
440
  <tr>
441
    <td class="bannercell" rowspan="2">
442
      <a href="http://jakarta.apache.org/">
443
      <img src="http://jakarta.apache.org/images/jakarta-logo.gif" alt="http://jakarta.apache.org" align="left" border="0"/>
444
      </a>
445
    </td>
446
        <td style="text-align:right"><h2>Source Code Audit</h2></td>
447
        </tr>
448
        <tr>
449
        <td style="text-align:right">Designed for use with <a href='http://www.webgain.com/products/quality_analyzer/'>Webgain QA/Metamata Audit</a> and <a href='http://jakarta.apache.org'>Ant</a>.</td>
450
        </tr>
451
  </table>
452
    <hr size="1"/>
453
</xsl:template>
454

    
455
<!-- Page HEADER -->
456
<xsl:template name="pageFooter">
457
</xsl:template>
458

    
459

    
460
<!-- class header -->
461
<xsl:template name="class.audit.header">
462
    <tr>
463
        <th width="80%">Name</th>
464
        <th>Violations</th>
465
    </tr>
466
</xsl:template>
467

    
468
<!-- method header -->
469
<xsl:template name="violation.audit.header">
470
    <tr>
471
        <th>Line</th>
472
        <th>Message</th>
473
    </tr>
474
</xsl:template>
475

    
476

    
477
<!-- class information -->
478
<xsl:template match="class" mode="print.audit">
479
    <tr>
480
    <xsl:call-template name="alternate-row"/>
481
        <td><a href="{@name}.html"><xsl:value-of select="@name"/></a></td>
482
        <td><xsl:apply-templates select="@violations"/></td>
483
    </tr>
484
</xsl:template>
485

    
486
<xsl:template match="violation" mode="print.audit">
487
    <tr>
488
    <xsl:call-template name="alternate-row"/>
489
        <td><xsl:value-of select="@line"/></td>
490
        <td><xsl:apply-templates select="@message"/></td>
491
    </tr>
492
</xsl:template>
493

    
494
<!-- alternated row style -->
495
<xsl:template name="alternate-row">
496
<xsl:attribute name="class">
497
  <xsl:if test="position() mod 2 = 1">a</xsl:if>
498
  <xsl:if test="position() mod 2 = 0">b</xsl:if>
499
</xsl:attribute>
500
</xsl:template>
501

    
502
</xsl:stylesheet>
503