乐者为王

Do one thing, and do it well.

修复CheckStyle报告中Summary部分文件数目错误问题

在使用CheckStyle时用了它提供的checkstyle-frames.xsl作为样式文件,不过checkstyle-frames.xsl生成报告时有些问题,主要是统计数据有点问题,Summary中报告的文件数目比真实的多,所以对xsl文件的summary模板作了小小的一些修改,解决了这个问题,且添加了一个统计有错误的文件个数的功能。

原来的xsl内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<xsl:template match="checkstyle" mode="summary">
    <h3>Summary</h3>
    <xsl:variable name="fileCount" select="count(file)"/>
    <xsl:variable name="errorCount" select="count(file/error)"/>
    <table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
        <tr>
            <th>Files</th>
            <th>Errors</th>
        </tr>
        <tr>
            <xsl:call-template name="alternated-row"/>
            <td><xsl:value-of select="$fileCount"/></td>
            <td><xsl:value-of select="$errorCount"/></td>
        </tr>
    </table>
</xsl:template>

修改后的内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<xsl:template match="checkstyle" mode="summary">
    <h3>Summary</h3>
    <xsl:variable name="fileCount">
        <xsl:value-of select="count(file[not(./@name = preceding-sibling::file/@name)])" />
    </xsl:variable>
    <xsl:variable name="fileErrorCount" select="count(file[count(error) > 0])" />
    <xsl:variable name="errorCount" select="count(file/error)" />
    <table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
        <tr>
            <th>Total Files</th>
            <th>Files With Errors</th>
            <th>Errors</th>
        </tr>
        <tr>
            <xsl:call-template name="alternated-row" />
            <td><xsl:value-of select="$fileCount" /></td>
            <td><xsl:value-of select="$fileErrorCount" /></td>
            <td><xsl:value-of select="$errorCount" /></td>
        </tr>
    </table>
</xsl:template>
  • following-sibling 按文档顺序选择文档中此后出现的当前节点的所有兄弟节点。
  • preceding-silbling 按与文档顺序相反的方向选择文档中此前出现的当前节点的所有兄弟节点。
  • following 除当前节点的所有后代节点外,按顺序选择文档中当前节点之后出现的所有节点,不包括属性节点或名称空间节点。
  • preceding 按与文档方向顺序相反的方向选择文档中在当前节点之前出现的所有节点。

Comments