OSDN Git Service

git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/filelock/trunk@21 c6214a2a-ec3a...
[filelock/repo.git] / filelock / src / build / lib / checkstyle / checkstyle-author.xsl
1 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">\r
2     <xsl:output method="html" indent="yes"/>\r
3     <xsl:decimal-format decimal-separator="." grouping-separator=","/>\r
4     <!-- \r
5     Checkstyle XML Style Sheet by Daniel Grenner \r
6     <daniel DOT grenner AT enea DOT se> \r
7     This stylesheet groups the errors by author name, if used  in combination\r
8     with the WriteTag check:\r
9 \r
10         <module name="WriteTag">\r
11             <property name="tag" value="@author"/>\r
12             <property name="tagFormat" value="\S"/>\r
13             <property name="severity" value="ignore"/>\r
14         </module>\r
15 \r
16     The output contains both error and warning messages.\r
17     Files without errors or warnings are not included.\r
18     This stylesheet is based on checkstyle-noframes.xsl.\r
19     -->\r
20 \r
21     <xsl:key name="keyAuthorID" match="//file/error[contains(@message,'@author')]" use="@message" />\r
22     <xsl:key name="keySeverityID" match="//file/error" use="@severity" />\r
23     <xsl:template match="checkstyle">\r
24         <html>\r
25             <head>\r
26                 <style type="text/css">\r
27     .bannercell {\r
28       border: 0px;\r
29       padding: 0px;\r
30     }\r
31     body {\r
32       margin-left: 10;\r
33       margin-right: 10;\r
34       font:normal 68% verdana,arial,helvetica;\r
35       background-color:#FFFFFF;\r
36       color:#000000;\r
37     }\r
38     .a td {\r
39       background: #efefef;\r
40     }\r
41     .b td {\r
42       background: #fff;\r
43     }\r
44     th, td {\r
45       text-align: left;\r
46       vertical-align: top;\r
47     }\r
48     th {\r
49       font-weight:bold;\r
50       background: #ccc;\r
51       color: black;\r
52     }\r
53     table, th, td {\r
54       font-size:100%;\r
55       border: none\r
56     }\r
57     table.log tr td, tr th {\r
58 \r
59     }\r
60     h2 {\r
61       font-weight:bold;\r
62       font-size:140%;\r
63       margin-bottom: 5;\r
64     }\r
65     h3 {\r
66       font-size:100%;\r
67       font-weight:bold;\r
68       background: #525D76;\r
69       color: white;\r
70       text-decoration: none;\r
71       padding: 5px;\r
72       margin-right: 2px;\r
73       margin-left: 2px;\r
74       margin-bottom: 0;\r
75     }\r
76         </style>\r
77             </head>\r
78             <body>\r
79                 <a name="#top"/>\r
80                 <!-- jakarta logo -->\r
81                 <table border="0" cellpadding="0" cellspacing="0" width="100%">\r
82                     <tr>\r
83                         <td class="bannercell" rowspan="2">\r
84                             <!--a href="http://jakarta.apache.org/">\r
85           <img src="http://jakarta.apache.org/images/jakarta-logo.gif" alt="http://jakarta.apache.org" align="left" border="0"/>\r
86           </a-->\r
87                         </td>\r
88                         <td class="text-align:right">\r
89                             <h2>CheckStyle Audit</h2>\r
90                         </td>\r
91                     </tr>\r
92                     <tr>\r
93                         <td class="text-align:right">Designed for use with <a href="http://checkstyle.sourceforge.net/">CheckStyle</a> and <a href="http://jakarta.apache.org">Ant</a>.</td>\r
94                     </tr>\r
95                 </table>\r
96                 <hr size="1"/>\r
97 \r
98                 <!-- Summary part -->\r
99                 <xsl:apply-templates select="." mode="summary"/>\r
100                 <hr size="1" width="100%" align="left"/>\r
101 \r
102                 <!-- Author List part -->\r
103                 <xsl:apply-templates select="." mode="authorlist"/>\r
104                 <hr size="1" width="100%" align="left"/>\r
105 \r
106                 <!-- For each package create its part -->\r
107                 <xsl:for-each select="file">\r
108                     <xsl:sort select="./error[contains(@message,'@author=')]/@message"/>\r
109                     <xsl:apply-templates select="."/>\r
110                     <p/>\r
111                     <p/>\r
112                 </xsl:for-each>\r
113                 <hr size="1" width="100%" align="left"/>\r
114             </body>\r
115         </html>\r
116     </xsl:template>\r
117     <xsl:template match="checkstyle" mode="summary">\r
118         <h3>Summary</h3>\r
119         <xsl:variable name="fileCount" select="count(file)"/>\r
120         <xsl:variable name="errorCount" select="count(key('keySeverityID', 'error'))"/>\r
121         <xsl:variable name="warningCount" select="count(key('keySeverityID', 'warning'))"/>\r
122         <table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">\r
123             <tr>\r
124                 <th>Files</th>\r
125                 <th>Errors</th>\r
126                 <th>Warnings</th>\r
127             </tr>\r
128             <tr>\r
129                 <xsl:call-template name="alternated-row"/>\r
130                 <td>\r
131                     <xsl:value-of select="$fileCount"/>\r
132                 </td>\r
133                 <td>\r
134                     <xsl:value-of select="$errorCount"/>\r
135                 </td>\r
136                 <td>\r
137                     <xsl:value-of select="$warningCount"/>\r
138                 </td>\r
139             </tr>\r
140         </table>\r
141     </xsl:template>\r
142     <xsl:template match="checkstyle" mode="authorlist">\r
143         <h3>Authors</h3>\r
144 \r
145         <table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">\r
146             <tr>\r
147                 <th>Name</th>\r
148                 <th>Errors</th>\r
149                 <th>Warnings</th>\r
150             </tr>\r
151 \r
152         <!-- Process each Author -->\r
153         <xsl:for-each select="file/error[generate-id(.) = generate-id(key('keyAuthorID', @message)[1])]">\r
154             <xsl:sort select="@message" />\r
155 \r
156                 <xsl:variable name="authorFull" select="@message"/>\r
157                 <xsl:variable name="author" select="substring-after($authorFull,'@author=')"/>\r
158                 <xsl:variable name="errors" select="count(key('keyAuthorID', @message)/../error[@severity='error'])"/>\r
159                 <xsl:variable name="warnings" select="count(key('keyAuthorID', @message)/../error[@severity='warning'])"/>\r
160                 <xsl:if test = "not ($author='' or ($errors + $warnings = 0))">\r
161                     <tr>\r
162                     <xsl:call-template name="alternated-row"/>\r
163                     <td>\r
164                         <a href="#{$author}">\r
165                             <xsl:value-of select="$author"/>\r
166                         </a>\r
167                     </td>\r
168                         <td><xsl:value-of select="$errors"/></td>\r
169                         <td><xsl:value-of select="$warnings"/></td>\r
170                     </tr>\r
171                 </xsl:if>\r
172         </xsl:for-each>\r
173 \r
174     </table>\r
175     </xsl:template>\r
176 \r
177     <xsl:template match="file">\r
178         <xsl:variable name="errorCount" select="count(error[@severity='error']) + count(error[@severity='warning'])"/>\r
179         <xsl:if test="not ($errorCount=0)">\r
180 \r
181             <xsl:variable name="author" select="substring-after(./error[contains(@message,'@author')]/@message,'@author=')"/>\r
182 \r
183             <a name="#{$author}"/>\r
184             <h3>File <xsl:value-of select="@name"/>\r
185                 <br/>\r
186             Author <xsl:value-of select="$author"/>\r
187             </h3>\r
188             <table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">\r
189                 <tr>\r
190                     <th>Error Description</th>\r
191                     <th>Line</th>\r
192                 </tr>\r
193                 <xsl:for-each select="error[not(@severity='info')]">\r
194                 <xsl:sort select="@line" data-type="number"/>\r
195                     <tr>\r
196                         <xsl:call-template name="alternated-row"/>\r
197                         <td>\r
198                             <xsl:value-of select="@message"/>\r
199                         </td>\r
200                         <td>\r
201                             <xsl:value-of select="@line"/>\r
202                         </td>\r
203                     </tr>\r
204                 </xsl:for-each>\r
205             </table>\r
206             <a href="#top">Back to top</a>\r
207         </xsl:if>\r
208     </xsl:template>\r
209 \r
210 \r
211 <xsl:template name="basename">\r
212   <xsl:param name="path"/>\r
213   <xsl:choose>\r
214      <xsl:when test="contains($path, '\')">\r
215         <xsl:call-template name="basename">\r
216            <xsl:with-param name="path">substring-after($path, '\')</xsl:with-param>\r
217         </xsl:call-template>\r
218      </xsl:when>\r
219      <xsl:otherwise>\r
220         <xsl:value-of select="$path"/>\r
221      </xsl:otherwise>\r
222   </xsl:choose>\r
223 </xsl:template>\r
224 \r
225 \r
226     <xsl:template name="alternated-row">\r
227         <xsl:attribute name="class"><xsl:if test="position() mod 2 = 1">a</xsl:if><xsl:if test="position() mod 2 = 0">b</xsl:if></xsl:attribute>\r
228     </xsl:template>\r
229 \r
230 </xsl:stylesheet>\r