Generate reports filtered by severity
git-svn-id: https://svn.apache.org/repos/asf/maven/maven-1/plugins/trunk@189706 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
@@ -27,7 +27,9 @@
|
||||
xmlns:j="jelly:core"
|
||||
xmlns:ant="jelly:ant"
|
||||
xmlns:util="jelly:util"
|
||||
xmlns:doc="doc">
|
||||
xmlns:doc="doc"
|
||||
xmlns:define="jelly:define"
|
||||
xmlns:checkstyle="checkstyle">
|
||||
|
||||
<!--
|
||||
========================================================================
|
||||
@@ -194,6 +196,11 @@
|
||||
outputMode="xml"
|
||||
prettyPrint="true"/>
|
||||
|
||||
<!-- Generate filtered pages for each severity level -->
|
||||
<checkstyle:report-filtered severity="error"/>
|
||||
<checkstyle:report-filtered severity="warning"/>
|
||||
<checkstyle:report-filtered severity="info"/>
|
||||
|
||||
<!-- Generate a RSS feed of the checktyle errors -->
|
||||
<doc:jsl
|
||||
input="${maven.build.dir}/checkstyle-raw-report.xml"
|
||||
@@ -235,4 +242,25 @@
|
||||
</j:if>
|
||||
</goal>
|
||||
|
||||
|
||||
<!-- Generate a report filtering errors by severity -->
|
||||
|
||||
<define:taglib uri="checkstyle">
|
||||
|
||||
<define:tag name="report-filtered">
|
||||
<!-- @severity: severity for which to generate the report -->
|
||||
|
||||
<echo>Generating report for severity ${severity}...</echo>
|
||||
|
||||
<doc:jsl
|
||||
input="${maven.build.dir}/checkstyle-raw-report.xml"
|
||||
output="checkstyle-report-${severity}.xml"
|
||||
stylesheet="${plugin.resources}/checkstyle_severity_filter.jsl"
|
||||
encoding="${maven.docs.outputencoding}"
|
||||
outputMode="xml"
|
||||
prettyPrint="true"/>
|
||||
</define:tag>
|
||||
|
||||
</define:taglib>
|
||||
|
||||
</project>
|
||||
|
||||
@@ -51,6 +51,16 @@
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section name="Errors filtered by severity">
|
||||
<p>
|
||||
<ul>
|
||||
<li><a href="checkstyle-report-error.html">Error</a></li>
|
||||
<li><a href="checkstyle-report-warning.html">Warning</a></li>
|
||||
<li><a href="checkstyle-report-info.html">Info</a></li>
|
||||
</ul>
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section name="Summary">
|
||||
<j:set var="fileCount"><x:expr select="count(file)"/></j:set>
|
||||
<j:set var="infoCount"><x:expr select="count(file/error[@severity='info'])"/></j:set>
|
||||
|
||||
177
checkstyle/src/plugin-resources/checkstyle_severity_filter.jsl
Normal file
177
checkstyle/src/plugin-resources/checkstyle_severity_filter.jsl
Normal file
@@ -0,0 +1,177 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<!--
|
||||
* ========================================================================
|
||||
*
|
||||
* Copyright 2004 The Apache Software Foundation.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
* ========================================================================
|
||||
-->
|
||||
|
||||
<jsl:stylesheet
|
||||
select="$doc"
|
||||
xmlns:j="jelly:core"
|
||||
xmlns:jsl="jelly:jsl"
|
||||
xmlns:util="jelly:util"
|
||||
xmlns:x="jelly:xml"
|
||||
xmlns:doc="doc"
|
||||
xmlns="dummy" trim="true">
|
||||
|
||||
<!-- This needs to be instantiated here to be available in the template matches -->
|
||||
<j:useBean var="mavenTool" class="org.apache.maven.util.MavenTool"/>
|
||||
<j:useBean var="htmlescape" class="org.apache.velocity.anakia.Escape"/>
|
||||
<j:useBean var="fileutil" class="org.apache.velocity.texen.util.FileUtil"/>
|
||||
<j:useBean var="pathtool" class="org.apache.maven.util.DVSLPathTool"/>
|
||||
|
||||
<jsl:template match="checkstyle">
|
||||
<document>
|
||||
|
||||
<properties>
|
||||
<title>Checkstyle errors in severity ${severity}</title>
|
||||
</properties>
|
||||
|
||||
|
||||
<!-- TODO find a better way to do this -->
|
||||
<j:choose>
|
||||
<j:when test="${severity.equalsIgnoreCase('error')}">
|
||||
<x:set var="severity" select="'error'"/>
|
||||
</j:when>
|
||||
<j:when test="${severity.equalsIgnoreCase('warning')}">
|
||||
<x:set var="severity" select="'warning'"/>
|
||||
</j:when>
|
||||
<j:when test="${severity.equalsIgnoreCase('info')}">
|
||||
<x:set var="severity" select="'info'"/>
|
||||
</j:when>
|
||||
<j:otherwise>
|
||||
</j:otherwise>
|
||||
</j:choose>
|
||||
|
||||
|
||||
<body>
|
||||
<section name="Checkstyle Errors">
|
||||
<p>
|
||||
The following document contains the results of
|
||||
<a href="http://checkstyle.sourceforge.net/">Checkstyle</a>
|
||||
<a href="checkstyle.rss"><img src="images/rss.png"/></a>
|
||||
for severity ${severity}.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section name="Summary">
|
||||
<j:set var="fileCount"><x:expr select="count(file)"/></j:set>
|
||||
<j:set var="errorCount"><x:expr select="count(file/error[@severity=$severity])"/></j:set>
|
||||
<table summary="Report summary">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Files</th>
|
||||
<th style="width:75px">Errors</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><doc:formatAsNumber string="${fileCount}" pattern="0"/></td>
|
||||
<td><doc:formatAsNumber string="${errorCount}" pattern="0"/></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</section>
|
||||
|
||||
<section name="Files">
|
||||
<table summary="Files">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Files</th>
|
||||
<th style="width:30px">Errors</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<j:set var="fullSrcDir" value="${pom.build.sourceDirectory}"/>
|
||||
<j:set var="srcDir" value="${fileutil.file(fullSrcDir).getCanonicalPath()}"/>
|
||||
<j:set var="srcDirLength" value="${srcDir.length() + 1}"/>
|
||||
<x:set var="files" select="file[./error[@severity=$severity]]" sort="@name"/>
|
||||
<!-- x:forEach is busted -->
|
||||
<j:forEach var="file" items="${files}">
|
||||
<!-- Type coercion doesn't work worth a fuck in jexl. -->
|
||||
<j:set var="name" value="${file.attribute('name').getValue()}"/>
|
||||
<j:set var="name" value="${name.substring(mavenTool.toInteger(srcDirLength.toString()))}"/>
|
||||
<util:replace var="name" value="${name}" oldChar="\\" newChar="/"/>
|
||||
<!--- +1 is for the trailing slash above -->
|
||||
<j:set var="errorCount"><x:expr select="count($file/error[@severity=$severity])"/></j:set>
|
||||
|
||||
<j:if test="${errorCount != 0}">
|
||||
<tr>
|
||||
<td>
|
||||
<a href="#${name}">${name}</a>
|
||||
</td>
|
||||
<td><doc:formatAsNumber string="${errorCount}" pattern="0"/></td>
|
||||
</tr>
|
||||
</j:if>
|
||||
</j:forEach>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<j:forEach var="file" items="${files}">
|
||||
<x:set var="errorCount" select="count($file/error[@severity=$severity])"/>
|
||||
<j:if test="${errorCount != 0}">
|
||||
<j:set var="name" value="${file.attribute('name').getValue()}"/>
|
||||
<j:set var="name" value="${name.substring(mavenTool.toInteger(srcDirLength.toString()))}"/>
|
||||
<util:replace var="name" value="${name}" oldChar="\\" newChar="/"/>
|
||||
|
||||
<subsection name="${name}">
|
||||
<table summary="Error details for ${name}">
|
||||
<thead>
|
||||
<tr>
|
||||
<th colspan="2">Error</th>
|
||||
<th style="width:20px">Line</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<x:set var="errors" select="$file/error[@severity=$severity]"/>
|
||||
<j:forEach var="error" items="${errors}">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="width:20px">
|
||||
<img src="images/icon_${severity}_sml.gif" width="15" height="15" alt="Error" />
|
||||
</td>
|
||||
<td>
|
||||
<j:set var="errorMessage" value="${error.attribute('message').getValue()}"/>
|
||||
${htmlescape.getText(errorMessage)}
|
||||
</td>
|
||||
<td>
|
||||
<j:set var="line" value="${error.attribute('line').getValue()}"/>
|
||||
<j:set var="lastIndex" value="${name.lastIndexOf('.java')}"/>
|
||||
<j:choose>
|
||||
<j:when test="${lastIndex > 0}">
|
||||
<j:set var="index" value="${mavenTool.toInteger(lastIndex.toString())}"/>
|
||||
<j:set var="nameWithoutJavaExtension" value="${name.substring(0, index)}"/>
|
||||
<util:replace var="nameWithoutJavaExtension" value="${nameWithoutJavaExtension}" oldChar="\\" newChar="/"/>
|
||||
<a href="xref/${nameWithoutJavaExtension}.html#${line}">${line}</a>
|
||||
</j:when>
|
||||
<j:otherwise>
|
||||
${line}
|
||||
</j:otherwise>
|
||||
</j:choose>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</j:forEach>
|
||||
</table>
|
||||
</subsection>
|
||||
</j:if>
|
||||
</j:forEach>
|
||||
</section>
|
||||
</body>
|
||||
</document>
|
||||
</jsl:template>
|
||||
</jsl:stylesheet>
|
||||
@@ -26,6 +26,7 @@
|
||||
</properties>
|
||||
<body>
|
||||
<release version="3.0-SNAPSHOT" date="in SVN">
|
||||
<action dev="carlos" type="add">Generate reports filtered by severity</action>
|
||||
<action dev="carlos" type="update">Support for Java5</action>
|
||||
<action dev="carlos" type="update">Upgraded to checkstyle 4.0</action>
|
||||
<action dev="carlos" type="fix" issue="MPCHECKSTYLE-29">Fixed MemberName rule in Turbine checkstyle rules</action>
|
||||
|
||||
Reference in New Issue
Block a user