- Added technical background documentation on the web site (Contributed by Siegfried Goeschl)

- Addeed JavaNCSS aggregators (Contributed by Siegfried Goeschl)

git-svn-id: https://svn.apache.org/repos/asf/maven/maven-1/plugins/trunk@125594 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
vmassol committed 2005-01-19 08:04:50 +00:00
1 parent 6042ef5151
commit a17770ed8d
16 files changed
+470 -10

No files matched your search

+35 -1
View File
@@ -1,5 +1,5 @@
# -------------------------------------------------------------------
# Copyright 2001-2004 The Apache Software Foundation.
# Copyright 2001-2005 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.
@@ -252,3 +252,37 @@ maven.dashboard.aggregator.scmchangedcommit.label = SCM commits
maven.dashboard.aggregator.scmchangedcommit.goal = maven-changelog-plugin:report
maven.dashboard.aggregator.scmchangedcommit.description = Total number of scm commit.
# JavaNCSS: total number of packages
maven.dashboard.aggregator.javancsspackagestotal.script = ${maven.dashboard.aggregators.dir}/javancsspackagestotal.jelly
maven.dashboard.aggregator.javancsspackagestotal.artifact = ${maven.build.dir}/javancss-raw-report.xml
maven.dashboard.aggregator.javancsspackagestotal.label = JavaNCSS Packages Total
maven.dashboard.aggregator.javancsspackagestotal.goal = maven-javancss-plugin:report
maven.dashboard.aggregator.javancsspackagestotal.description = Total number of JavaNCSS packages
# JavaNCSS: total number of classes
maven.dashboard.aggregator.javancssclassestotal.script = ${maven.dashboard.aggregators.dir}/javancssclassestotal.jelly
maven.dashboard.aggregator.javancssclassestotal.artifact = ${maven.build.dir}/javancss-raw-report.xml
maven.dashboard.aggregator.javancssclassestotal.label = JavaNCSS Classes Total
maven.dashboard.aggregator.javancssclassestotal.goal = maven-javancss-plugin:report
maven.dashboard.aggregator.javancssclassestotal.description = Total number of JavaNCSS classes
# JavaNCSS: total number of functions
maven.dashboard.aggregator.javancssfunctionstotal.script = ${maven.dashboard.aggregators.dir}/javancssfunctionstotal.jelly
maven.dashboard.aggregator.javancssfunctionstotal.artifact = ${maven.build.dir}/javancss-raw-report.xml
maven.dashboard.aggregator.javancssfunctionstotal.label = JavaNCSS Functions Total
maven.dashboard.aggregator.javancssfunctionstotal.goal = maven-javancss-plugin:report
maven.dashboard.aggregator.javancssfunctionstotal.description = Total number of JavaNCSS functions
# JavaNCSS: total number of non-commented source statements
maven.dashboard.aggregator.javancssncsstotal.script = ${maven.dashboard.aggregators.dir}/javancssncsstotal.jelly
maven.dashboard.aggregator.javancssncsstotal.artifact = ${maven.build.dir}/javancss-raw-report.xml
maven.dashboard.aggregator.javancssncsstotal.label = JavaNCSS NCSS Total
maven.dashboard.aggregator.javancssncsstotal.goal = maven-javancss-plugin:report
maven.dashboard.aggregator.javancssncsstotal.description = Total number of JavaNCSS non-nommented source statements
# JavaNCSS: total number of javadocs
maven.dashboard.aggregator.javancssjavadocstotal.script = ${maven.dashboard.aggregators.dir}/javancssjavadocstotal.jelly
maven.dashboard.aggregator.javancssjavadocstotal.artifact = ${maven.build.dir}/javancss-raw-report.xml
maven.dashboard.aggregator.javancssjavadocstotal.label = JavaNCSS JavaDocs Total
maven.dashboard.aggregator.javancssjavadocstotal.goal = maven-javancss-plugin:report
maven.dashboard.aggregator.javancssjavadocstotal.description = Total number of JavaNCSS JavaDocs
+6 -1
View File
@@ -2,7 +2,7 @@
<!--
/*
* Copyright 2001-2004 The Apache Software Foundation.
* Copyright 2001-2005 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.
@@ -112,6 +112,11 @@
<email>pkernevez@octo.com</email>
<organization>OCTO Technology</organization>
</contributor>
<contributor>
<name>Siegfried Goeschl</name>
<email>sgoeschl@apache.org</email>
<organization>IT20one GmbH</organization>
</contributor>
</contributors>
<dependencies/>
</project>
@@ -0,0 +1,45 @@
<?xml version="1.0"?>
<!--
/*
* Copyright 2005 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.
*/
-->
<!--
========================================================================
JavaNCSS aggregator. Extracts total number of classes from
JavaNCSS raw file.
========================================================================
-->
<j:jelly xmlns:j="jelly:core" xmlns:x="jelly:xml" xmlns:u="jelly:util">
<!-- Extract LOC -->
<u:file var="artifactAsFile"
name="${maven.dashboard.aggregator.javancssclassestotal.artifact}"/>
<j:choose>
<j:when test="${artifactAsFile.exists()}">
<x:parse var="doc" xml="${artifactAsFile}"/>
<x:expr select="sum($doc/javancss/packages/total/classes)"/>
</j:when>
<j:otherwise>
<j:expr value="-"/>
</j:otherwise>
</j:choose>
</j:jelly>
@@ -0,0 +1,45 @@
<?xml version="1.0"?>
<!--
/*
* Copyright 2005 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.
*/
-->
<!--
========================================================================
JavaNCSS aggregator. Extracts total number of funtions from
JavaNCSS raw file.
========================================================================
-->
<j:jelly xmlns:j="jelly:core" xmlns:x="jelly:xml" xmlns:u="jelly:util">
<!-- Extract LOC -->
<u:file var="artifactAsFile"
name="${maven.dashboard.aggregator.javancssfunctionstotal.artifact}"/>
<j:choose>
<j:when test="${artifactAsFile.exists()}">
<x:parse var="doc" xml="${artifactAsFile}"/>
<x:expr select="sum($doc/javancss/packages/total/functions)"/>
</j:when>
<j:otherwise>
<j:expr value="-"/>
</j:otherwise>
</j:choose>
</j:jelly>
@@ -0,0 +1,45 @@
<?xml version="1.0"?>
<!--
/*
* Copyright 2005 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.
*/
-->
<!--
========================================================================
JavaNCSS aggregator. Extracts total number of packages from
JavaNCSS raw file.
========================================================================
-->
<j:jelly xmlns:j="jelly:core" xmlns:x="jelly:xml" xmlns:u="jelly:util">
<!-- Extract LOC -->
<u:file var="artifactAsFile"
name="${maven.dashboard.aggregator.javancsspackagestotal.artifact}"/>
<j:choose>
<j:when test="${artifactAsFile.exists()}">
<x:parse var="doc" xml="${artifactAsFile}"/>
<x:expr select="sum($doc/javancss/packages/total/javadocs)"/>
</j:when>
<j:otherwise>
<j:expr value="-"/>
</j:otherwise>
</j:choose>
</j:jelly>
@@ -0,0 +1,45 @@
<?xml version="1.0"?>
<!--
/*
* Copyright 2005 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.
*/
-->
<!--
========================================================================
JavaNCSS aggregator. Extracts total number of NCSS from
JavaNCSS raw file.
========================================================================
-->
<j:jelly xmlns:j="jelly:core" xmlns:x="jelly:xml" xmlns:u="jelly:util">
<!-- Extract LOC -->
<u:file var="artifactAsFile"
name="${maven.dashboard.aggregator.javancssncsstotal.artifact}"/>
<j:choose>
<j:when test="${artifactAsFile.exists()}">
<x:parse var="doc" xml="${artifactAsFile}"/>
<x:expr select="sum($doc/javancss/packages/total/ncss)"/>
</j:when>
<j:otherwise>
<j:expr value="-"/>
</j:otherwise>
</j:choose>
</j:jelly>
@@ -0,0 +1,45 @@
<?xml version="1.0"?>
<!--
/*
* Copyright 2005 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.
*/
-->
<!--
========================================================================
JavaNCSS aggregator. Extracts total number of packages from
JavaNCSS raw file.
========================================================================
-->
<j:jelly xmlns:j="jelly:core" xmlns:x="jelly:xml" xmlns:u="jelly:util">
<!-- Extract LOC -->
<u:file var="artifactAsFile"
name="${maven.dashboard.aggregator.javancsspackagestotal.artifact}"/>
<j:choose>
<j:when test="${artifactAsFile.exists()}">
<x:parse var="doc" xml="${artifactAsFile}"/>
<x:expr select="count($doc/javancss/packages/package)"/>
</j:when>
<j:otherwise>
<j:expr value="-"/>
</j:otherwise>
</j:choose>
</j:jelly>
+2 -2
View File
@@ -55,8 +55,8 @@
<x:set var="countTitleColumn" select="count($doc//body/section/table/tr[1]/th)"/>
<x:set var="countContentColumn" select="count($doc//body/section/table/tr[2]/td)"/>
<!-- One column for the project name and one for the 23 aggregators -->
<assert:assertEquals expected="24" value="${countTitleColumn.intValue().toString()}"/>
<assert:assertEquals expected="24" value="${countContentColumn.intValue().toString()}"/>
<assert:assertEquals expected="29" value="${countTitleColumn.intValue().toString()}"/>
<assert:assertEquals expected="29" value="${countContentColumn.intValue().toString()}"/>
<!-- TasklistClass aggregator test -->
<x:set var="title" select="string($doc//body/section/table/tr[1]/th[20])"/>
+1 -1
View File
@@ -40,7 +40,7 @@ maven.dashboard.runreactor = false
# Define what dashboard aggregators will be run. This property is inherited
# by the subprojects and thus they don't need to define it again.
maven.dashboard.aggregators = csall,cserrors,cswarnings,csfiles,clovertpc,cloverloc,cloverncloc,junittests,junitpassrate,junitfailures,juniterrors,simiantdl,pmdfiles,pmdviolations,fbfiles,fbviolations,jcoveragelipc,jcoverageloc,tasklistclass,tasklistmethod,tasklist,scmchangedfiles,scmchangedcommit
maven.dashboard.aggregators = csall,cserrors,cswarnings,csfiles,clovertpc,cloverloc,cloverncloc,junittests,junitpassrate,junitfailures,juniterrors,simiantdl,pmdfiles,pmdviolations,fbfiles,fbviolations,jcoveragelipc,jcoverageloc,tasklistclass,tasklistmethod,tasklist,scmchangedfiles,scmchangedcommit,javancssclassestotal,javancssfunctionstotal,javancssncsstotal,javancsspackagestotal,javancssjavadocstotal
# Make sure that an XML report is generated whenever Clover is run. Also
# inherited by the subprojects.
+7
View File
@@ -52,6 +52,13 @@
<version>0.8.4</version>
<type>plugin</type>
</dependency>
<!-- We need to be sure the JavaNCSS plugin is downloaded for the tests -->
<dependency>
<groupId>maven-plugins</groupId>
<artifactId>maven-javancss-plugin</artifactId>
<version>1.3</version>
<type>plugin</type>
</dependency>
</dependencies>
<build>
<sourceDirectory>src/java</sourceDirectory>
@@ -41,5 +41,6 @@
<report>maven-simian-plugin</report>
<report>maven-jcoverage-plugin</report>
<report>maven-tasklist-plugin</report>
<report>maven-javancss-plugin</report>
</reports>
</project>
+37 -2
View File
@@ -2,7 +2,7 @@
<!--
/*
* Copyright 2001-2004 The Apache Software Foundation.
* Copyright 2001-2005 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.
@@ -195,11 +195,46 @@
</tr>
<tr>
<td>scmchangedcommit</td>
<td>SCM commits</td>
<td>JavaNCSS Packages Total</td>
<td>
Total number of scm commit.
</td>
</tr>
<tr>
<td>javancsspackagestotal</td>
<td>JavaNCSS</td>
<td>
Total number of JavaNCSS packages.
</td>
</tr>
<tr>
<td>javancssclassestotal</td>
<td>JavaNCSS</td>
<td>
Total number of JavaNCSS classes.
</td>
</tr>
<tr>
<td>javancssfunctionstotal</td>
<td>JavaNCSS</td>
<td>
Total number of JavaNCSS functions.
</td>
</tr>
<tr>
<td>javancssncsstotal</td>
<td>JavaNCSS</td>
<td>
Total number of JavaNCSS non-nommented source statements.
</td>
</tr>
<tr>
<td>javancssjavadocstotal</td>
<td>JavaNCSS</td>
<td>
Total number of JavaNCSS JavaDocs.
</td>
</tr>
</table>
</section>
</body>
+11 -1
View File
@@ -2,7 +2,7 @@
<!--
/*
* Copyright 2001-2004 The Apache Software Foundation.
* Copyright 2001-2005 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.
@@ -25,6 +25,16 @@
</properties>
<body>
<release version="1.7-SNAPSHOT" date="in SVN">
<action dev="vmassol" type="add" due-to="Siegfried Goeschl">
Added aggregators for JavaNCSS.
</action>
<action dev="vmassol" type="add" due-to="Siegfried Goeschl">
Added technical background information on the website.
</action>
<action dev="vmassol" type="update" due-to="Siegfried Goeschl">
Updated the FAQ with an entry for solving the issue when the Clover
aggregators report no data.
</action>
<action dev="vmassol" type="update">
Added a FAQ on the website.
</action>
+21 -1
View File
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
/*
* Copyright 2004 The Apache Software Foundation.
* Copyright 2004-2005 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.
@@ -45,5 +45,25 @@ maven.dashboard.excludes=**/target/**/project.xml]]></source>
</answer>
</faq>
<faq id="clover-project-data">
<question>
Why is there no Clover report data?
</question>
<answer>
<p>
The Dashboard report exists and shows data for all reports
apart from Clover. This indicates that no 'clover.xml'
was found for your subprojects.
</p>
<p>
If the Dashboard plugin creates the reports on its own it
will set the 'maven.clover.report.xml' to enforce the
creation of 'clover.xml'. In the case that already generated
reports shall be used you have to set the property manually
to enforce the creation od 'clover.xml'.
</p>
</answer>
</faq>
</part>
</faqs>
+2 -1
View File
@@ -2,7 +2,7 @@
<!--
/*
* Copyright 2001-2004 The Apache Software Foundation.
* Copyright 2001-2005 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.
@@ -32,6 +32,7 @@
<item name="Aggregators" href="/aggregators.html"/>
<item name="Authoring" href="/authoring.html"/>
<item name="FAQ" href="/faq.html"/>
<item name="Technical" href="/technical.html"/>
</menu>
</body>
</project>
+122
View File
@@ -0,0 +1,122 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
/*
* Copyright 2005 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.
*/
-->
<document>
<properties>
<title>Maven Dashboard Technical Background</title>
<author email="sgoeschl@apache.org">Siegfried Goeschl</author>
</properties>
<body>
<section name = "Technical Background">
<p>
The Dashboard plugin aggregates report data from multiple Maven
reports over multiple projects using the reactor. To
understand the work of the plugin better we have to look at
the following topics
<ul>
<li>How to create the report data aggregate for a single project?</li>
<li>How are the report data aggregate for the master project?</li>
</ul>
</p>
</section>
<section name = "Creating report data for a single project">
<p>
The aggregation runs over the existing Maven reports but how to
get them?! Either the Dashboard plugin is told to collect data
from existing reports (but you have to make sure that all reports
exists) or it runs the required plugins itself (which
hurts the build time)
</p>
<p>
This behaviour is controlled by
<source>
maven.dashboard.rungoals = [true|false]
</source>
</p>
<p>
If this property is set to "true" the Dashboard plugin looks at
the value of 'maven.dashboard.aggregators' to determine which
plugins to run automatically. When running those plugins the
configuration of the started plugins are modified dynamically,
e.g. for the Clover plugin the XML report generation is enabled.
</p>
</section>
<section name = "Aggregating data for the master project">
<p>
The aggregation for the master project is a two-step process
triggered by the reactor
<ul>
<li>Aggregate the report data for a single project</li>
<li>Aggregate the aggregated data over all projects</li>
</ul>
</p>
<subsection name="Aggregate the report data for a single project">
<p>
The result of the aggregation is a file 'dashboard-single.xml'
which could look like the following example collecting data of
JUnit, Clover, PMD, CVS and Checkstyle reports
<source><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<dashboard-single>
<aggregator name="junitpassrate">100 %</aggregator>
<aggregator name="clovertpc">54%</aggregator>
<aggregator name="cloverloc">2844</aggregator>
<aggregator name="pmdviolations">0</aggregator>
<aggregator name="scmchangedfiles">5</aggregator>
<aggregator name="cserrors">27</aggregator>
</dashboard-single>
]]></source>
</p>
</subsection>
<subsection name="Aggregate the aggregated data over all projects">
<p>
It is now time to collect the aggregated data for all
subprojects which results into a 'dashboard-data.xml'.
This file is then transformed to the Dashoard HTML
report.
<source><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<dashboard>
<project name="it20one-service-framework">
<aggregator name="junitpassrate">100 %</aggregator>
<aggregator name="clovertpc">54%</aggregator>
<aggregator name="cloverloc">2844</aggregator>
<aggregator name="pmdviolations">0</aggregator>
<aggregator name="scmchangedfiles">5</aggregator>
<aggregator name="cserrors">27</aggregator>
</project>
...
<project name="it20one-digistamp-service">
<aggregator name="junitpassrate">-</aggregator>
<aggregator name="clovertpc">-</aggregator>
<aggregator name="cloverloc">-</aggregator>
<aggregator name="pmdviolations">7</aggregator>
<aggregator name="scmchangedfiles">2</aggregator>
<aggregator name="cserrors">121</aggregator>
</project>
</dashboard>
]]></source>
</p>
</subsection>
</section>
</body>
</document>