example of an ant build file and stylesheet for generation of an

HTML error report with links to source code
This commit is contained in:
Rick Giles 2004-06-11 09:00:19 +00:00
parent cdf603dd48
commit 784f0bda44
4 changed files with 272 additions and 0 deletions

View File

@ -0,0 +1,70 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<project name="style" default="checkstyle.style" basedir=".">
<property name="checkstyle-all.jar" value="C:/javautil/checkstyle-3.4/checkstyle-all-3.4.jar" />
<property name="java2html.jar" value="C:/javautil/java2html/java2html.jar" />
<property name="src.dir" value="T:\2004\eclipse\workspace\checkstyle\src\checkstyle\com\puppycrawl\tools\checkstyle\checks" />
<property name="check.config" value="T:/2004/eclipse/workspace/checkstyle/docs/sun_checks.xml" />
<property name="dest.dir" value="target/cs-errors"/>
<property name="html.dir" value="src_html"/>
<!-- -->
<!-- Cleanup targets -->
<!-- -->
<target name="clean" description="Cleans any directories and generated files">
<delete dir="target" />
</target>
<!-- -->
<!-- Create syntax-highlighted HTML files from Java source files. -->
<!-- Requires java2html, http://www.java2html.de/ -->
<!-- -->
<target name="java.to.html"
description="Creates HTML files with syntax highlighting from Java source files">
<taskdef name="java2html"
classname="de.java2html.anttasks.Java2HtmlTask"
classpath="${java2html.jar}"
/>
<java2html srcdir="${src.dir}"
destdir="target/${html.dir}"
includes="**/*.java"
outputFormat="html"
tabs="4"
style="eclipse"
showLineNumbers="true"
addLineAnchors="true"
showFileName="true"
includeDocumentHeader="true"
includeDocumentFooter="true"
/>
</target>
<taskdef resource="checkstyletask.properties"
classpath="${checkstyle-all.jar}"/>
<!-- -->
<!-- Run checkstyle and generate error report with links to source code -->
<!-- -->
<target name="checkstyle.style"
depends="java.to.html"
description="Runs checkstyle and generates an error report with links to source code">
<mkdir dir="target"/>
<checkstyle failonviolation="false" config="${check.config}">
<fileset dir="${src.dir}"
includes="**/*.java,**/*.properties"
excludes="**/Generated*.java,**/gui/*,,**/transmogrify/*"/>
<formatter type="xml" toFile="target/cs_errors.xml"/>
</checkstyle>
<mkdir dir="target/cs-errors"/>
<style basedir="target"
destdir="target/cs-errors"
includes="cs_errors.xml"
style="checkstyle-noframes.xsl">
<param name="src.dir" expression="${src.dir}"/>
<param name="html.dir" expression="../${html.dir}"/>
</style>
</target>
</project>

View File

@ -0,0 +1,190 @@
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" indent="yes"/>
<xsl:decimal-format decimal-separator="." grouping-separator="," />
<!-- Checkstyle XML Style Sheet by Stephane Bailliez <sbailliez@apache.org> -->
<!-- Links errors to lines in HTML version of source code. -->
<!-- Part of the Checkstyle distribution found at http://checkstyle.sourceforge.net -->
<!-- Usage (generates checkstyle_report.html): -->
<!-- <checkstyle failonviolation="false" config="${check.config}"> -->
<!-- <fileset dir="${src.dir}" includes="**/*.java"/> -->
<!-- <formatter type="xml" toFile="${doc.dir}/checkstyle_report.xml"/> -->
<!-- </checkstyle> -->
<!-- <style basedir="${doc.dir}" destdir="${doc.dir}" -->
<!-- includes="checkstyle_report.xml" -->
<!-- style="${doc.dir}/checkstyle-noframes.xsl"> -->
<!-- <param name="src.dir" expression="${src.dir}"/> -->
<!-- <param name="html.dir" expression="${html.dir}"/> -->
<!-- </style> -->
<!-- source directory name for stripping off link href attribute value -->
<xsl:param name="src.dir"/>
<!-- directory containing syntax-highlighted HTML files for java source files -->
<xsl:param name="html.dir"/>
<xsl:template match="checkstyle">
<html>
<head>
<style type="text/css">
.bannercell {
border: 0px;
padding: 0px;
}
body {
margin-left: 10;
margin-right: 10;
font:normal 80% arial,helvetica,sanserif;
background-color:#FFFFFF;
color:#000000;
}
.a td {
background: #efefef;
}
.b td {
background: #fff;
}
th, td {
text-align: left;
vertical-align: top;
}
th {
font-weight:bold;
background: #ccc;
color: black;
}
table, th, td {
font-size:100%;
border: none
}
table.log tr td, tr th {
}
h2 {
font-weight:bold;
font-size:140%;
margin-bottom: 5;
}
h3 {
font-size:100%;
font-weight:bold;
background: #525D76;
color: white;
text-decoration: none;
padding: 5px;
margin-right: 2px;
margin-left: 2px;
margin-bottom: 0;
}
</style>
</head>
<body>
<a name="top"></a>
<!-- jakarta logo -->
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td class="bannercell" rowspan="2">
<!--a href="http://jakarta.apache.org/">
<img src="http://jakarta.apache.org/images/jakarta-logo.gif" alt="http://jakarta.apache.org" align="left" border="0"/>
</a-->
</td>
<td class="text-align:right"><h2>CheckStyle Audit</h2></td>
</tr>
<tr>
<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>
</tr>
</table>
<hr size="1"/>
<!-- Summary part -->
<xsl:apply-templates select="." mode="summary"/>
<hr size="1" width="100%" align="left"/>
<!-- Package List part -->
<xsl:apply-templates select="." mode="filelist"/>
<hr size="1" width="100%" align="left"/>
<!-- For each package create its part -->
<xsl:for-each select="file">
<xsl:sort select="@name"/>
<xsl:apply-templates select="."/>
<p/>
<p/>
</xsl:for-each>
<hr size="1" width="100%" align="left"/>
</body>
</html>
</xsl:template>
<xsl:template match="checkstyle" mode="filelist">
<h3>Files</h3>
<table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
<tr>
<th>Name</th>
<th>Errors</th>
</tr>
<xsl:for-each select="file">
<xsl:sort select="@name"/>
<xsl:variable name="errorCount" select="count(error)"/>
<tr>
<xsl:call-template name="alternated-row"/>
<td><a href="#f-{@name}"><xsl:value-of select="@name"/></a></td>
<td><xsl:value-of select="$errorCount"/></td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
<xsl:template match="file">
<a name="f-{@name}"></a>
<h3>File <xsl:value-of select="@name"/></h3>
<table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
<tr>
<th>Error Description</th>
<th>Line</th>
</tr>
<xsl:for-each select="error">
<tr>
<xsl:call-template name="alternated-row"/>
<td><xsl:value-of select="@message"/></td>
<td><a>
<xsl:attribute name="href"><xsl:value-of select="$html.dir"/>/<xsl:value-of select="substring-after(../@name, $src.dir)"/>.html#<xsl:value-of select="@line"/></xsl:attribute>
<xsl:value-of select="@line"/></a></td>
</tr>
</xsl:for-each>
</table>
<a href="#top">Back to top</a>
</xsl:template>
<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>
<xsl:template name="alternated-row">
<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>
</xsl:template>
</xsl:stylesheet>

View File

@ -0,0 +1,6 @@
Example of an ant build file and stylesheet for generation of an HTML error
report with links to source code, as discussed on sourceforge.net:
checkstyle-user,
http://sourceforge.net/mailarchive/forum.php?thread_id=4891991&forum_id=8139.
Requires: java2html, http://www.java2html.de/

View File

@ -81,6 +81,12 @@
for Checkstyle, and how to support XInclude processing
(contrib/examples/XInclude, request 905169).</li>
<li class="body">Added example of an ant build file and stylesheet for generation of
an HTML error report with links to source code.
(contrib/examples/linkErrors2Source, discussed on
<a href="http://sourceforge.net/mailarchive/forum.php?thread_id=4891991&forum_id=8139">sourceforge.net:
checkstyle-user</a>).</li>
</ul>
<p class="body">