maven-plugins/simian/plugin.jelly
2003-10-08 16:41:59 +00:00

178 lines
5.8 KiB
XML

<?xml version="1.0"?>
<!--
! Maven plugin for Simian
!
! Author: Aslak Hellesoy (aslak@thoughtworks.com)
-->
<project
xmlns:j="jelly:core"
xmlns:define="jelly:define"
xmlns:doc="doc"
xmlns:ant="jelly:ant"
xmlns:simian="simian">
<define:taglib uri="simian">
<define:jellybean
name="simianLog"
className="org.apache.maven.simian.SimianLog"
method="process"
/>
</define:taglib>
<goal name="maven-simian-plugin"
description="Generate Simian (Code Similarity Analyzer) report."
prereqs="maven-simian-plugin:report"/>
<goal name="maven-simian-plugin:register">
<j:if test="${sourcesPresent}">
<doc:registerReport
name="Simian Report"
pluginName="maven-simian-plugin"
link="simian-report"
description="Simian (Code Similarity Analyzer) report."/>
</j:if>
</goal>
<goal name="maven-simian-plugin:deregister">
<doc:deregisterReport name="Simian"/>
</goal>
<goal name="maven-simian-plugin:analyze">
<ant:taskdef name="simian" classname="org.apache.maven.simian.FileSimianTask">
<ant:classpath>
<ant:pathelement location="${plugin.dir}"/>
<ant:pathelement location="${plugin.getDependencyPath('redhill:simian')}"/>
</ant:classpath>
</ant:taskdef>
<ant:simian output="${maven.build.dir}/generated-xdocs/simian.log"
lineCount="${maven.simian.linecount}"
failOnDuplication="${maven.simian.failonduplication}">
<ant:fileset dir="${pom.build.sourceDirectory}">
<ant:include name="**/*.java"/>
<!-- FIXME: This is a bad cut and paste -->
<!-- handle source modifications -->
<j:forEach var="sm" items="${pom.build.sourceModifications}">
<ant:available property="classPresent" classname="${sm.className}"/>
<j:if test="${classPresent != 'true'}">
<j:forEach var="exclude" items="${sm.excludes}">
<ant:exclude name="${exclude}"/>
</j:forEach>
<j:forEach var="include" items="${sm.includes}">
<ant:include name="${include}"/>
</j:forEach>
</j:if>
</j:forEach>
</ant:fileset>
<j:set var="includeTests" value="${maven.simian.includetests}"/>
<j:if test="${includeTests == 'true'}">
<j:if test="${unitTestSourcesPresent == 'true'}">
<ant:fileset dir="${pom.build.unitTestSourceDirectory}" includes="**/*.java"/>
</j:if>
</j:if>
<!-- debut ajout momo -->
<j:set var="ignoreStrings" value="${maven.simian.ignorestrings}"/>
<j:if test="${ignoreStrings == 'true'}">
<ant:setProperty name="ignoreStrings" value="${ignoreStrings}" />
</j:if>
<j:set var="ignoreStringCase" value="${maven.simian.ignorestringcase}"/>
<j:if test="${ignoreStringCase == 'true'}">
<ant:setProperty name="ignoreStringCase" value="${ignoreStringCase}" />
</j:if>
<j:set var="ignoreNumbers" value="${maven.simian.ignorenumbers}"/>
<j:if test="${ignoreNumbers == 'true'}">
<ant:setProperty name="ignoreNumbers" value="${ignoreNumbers}" />
</j:if>
<j:set var="ignoreSubtypeNames" value="${maven.simian.ignoresubtypenames}"/>
<j:if test="${ignoreSubtypeNames == 'true'}">
<ant:setProperty name="ignoreSubtypeNames" value="${ignoreSubtypeNames}" />
</j:if>
<j:set var="ignoreModifiers" value="${maven.simian.ignoremodifiers}"/>
<j:if test="${ignoreModifiers == 'true'}">
<ant:setProperty name="ignoreModifiers" value="${ignoreModifiers}" />
</j:if>
<!-- fin ajout momo -->
</ant:simian>
</goal>
<goal name="maven-simian-plugin:report" prereqs="maven-simian-plugin:analyze">
<simian:simianLog
logFile="${maven.build.dir}/generated-xdocs/simian.log"
jellyContext="${context}"
sourceDirectory="${pom.build.sourceDirectory}"
unitTestSourceDirectory="${pom.build.unitTestSourceDirectory}"
/>
<j:set var="simLog" value="${context.getVariable('simianLog')}"/>
<j:file name="${maven.build.dir}/generated-xdocs/simian-report.xml" prettyPrint="true">
<j:whitespace xmlns="dummy">
<document>
<properties>
<title>Simian Report</title>
</properties>
<body>
<section name="Summary">
<p>${simLog.copyright1}</p>
<p>${simLog.copyright2}</p>
<table>
<tr>
<td>Similarity threshold (lines)</td>
<td>${maven.simian.linecount}</td>
</tr>
<tr>
<td>Total number of duplicate lines</td>
<td>${simLog.totalDuplicateLineCount}</td>
</tr>
<tr>
<td>Total number of duplicate blocks</td>
<td>${simLog.blockCount}</td>
</tr>
<tr>
<td>Total number of files with duplicates</td>
<td>${simLog.fileWithDuplicateCount}</td>
</tr>
<tr>
<td>Total number of processed lines</td>
<td>${simLog.loc}</td>
</tr>
<tr>
<td>Total number of processed files</td>
<td>${simLog.fileParseCount}</td>
</tr>
<tr>
<td>Scan time</td>
<td>${simLog.time}</td>
</tr>
</table>
</section>
<section name="Duplications">
<j:forEach var="duplication" items="${simLog.duplications}">
<subsection name="Duplication: ${duplication.lineCount} lines">
<j:forEach var="duplicationArea" items="${duplication.duplicationAreas}">
<j:set var="className" value="${duplicationArea.className}"/>
<a href="${duplicationArea.pathToClass}.html#${duplicationArea.startLine}">${duplicationArea.className}(${duplicationArea.startLine}-${duplicationArea.endLine})</a><br/>
</j:forEach>
</subsection>
</j:forEach>
</section>
</body>
</document>
</j:whitespace>
</j:file>
</goal>
</project>