Could you post the pathc into Jira :
http://jira.codehaus.org/secure/BrowseProject.jspa?id=10358

We apply it when we will have some time.

Thanks
Emmanuel

----- Original Message ----- 
From: <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Sunday, December 28, 2003 5:38 PM
Subject: [PATCH] maven-pmd-plugin - add CPD report


> Hi,
>
> I have added the CPD (copy paste detection) report to the existing PMD
> plugin. I believe this was the approach preferred previously on the
> list. For more on CPD please take a look at:
>
>    http://pmd.sourceforge.net/cpd.html
>
>
> Two properties have been added:
>
>    # enable/disable CPD
>    maven.pmd.cpd.enable = false
>
>    # minimum length of token sequences considered equal
>    maven.pmd.cpd.minimumtokencount = 100
>
>
> The attached patch was made against maven-plugins head and works for
> me with rc1. Please feel free to commit this with appropriate
> modifications.
>
>
> Regards
>
> Morten
>


----------------------------------------------------------------------------
----


> Index: plugin.jelly
> ===================================================================
> retrieving revision 1.10
> diff -u -r1.10 plugin.jelly
> --- plugin.jelly 20 Nov 2003 15:35:16 -0000 1.10
> +++ plugin.jelly 28 Dec 2003 16:34:46 -0000
> @@ -19,6 +19,11 @@
>          pluginName="pmd"
>          description="Verification of coding rules."
>          link="pmd-report"/>
> +      <doc:registerReport
> +        name="CPD Report"
> +        pluginName=""
> +        description="Detection of copy-paste code."
> +        link="cpd-report"/>
>      </j:if>
>    </goal>
>
> @@ -30,6 +35,7 @@
>    <goal name="maven-pmd-plugin:deregister">
>      <j:if test="${sourcesPresent}">
>        <doc:deregisterReport name="PMD Report"/>
> +      <doc:deregisterReport name="CPD Report"/>
>      </j:if>
>    </goal>
>
> @@ -118,6 +124,63 @@
>        prettyPrint="true"
>      />
>
> +    <!-- Generate CPD report if it is enabled -->
> +    <j:set var="enable" value="${maven.pmd.cpd.enable}"/>
> +
> +    <j:if test="${enable == 'true'}">
> +      <attainGoal name="pmd:cpd-report"/>
> +    </j:if>
>    </goal>
> -
> +
> +  <!--
> +
========================================================================
> +       Generate the CPD report.
> +
========================================================================
> +  -->
> +  <goal name="pmd:cpd-report"
> +    description="Generate duplicate source code report with CPD">
> +
> +    <!-- Define a CPD task from the PMD jar -->
> +    <taskdef name="cpd"
> +      classpath="${plugin.getDependencyPath('pmd:pmd')}"
> +      classname="net.sourceforge.pmd.cpd.CPDTask"/>
> +
> +    <!-- Run the CPD task  -->
> +    <echo>Running the CPD task with minimumTokenCount =
${maven.pmd.cpd.minimumtokencount} ...</echo>
> +
> +    <cpd minimumTokenCount="${maven.pmd.cpd.minimumtokencount}"
> +      outputFile="${maven.build.dir}/cpd-raw-report.txt">
> +      <!-- cut and paste from pmd:report -->
> +      <fileset dir="${pom.build.sourceDirectory}"
> +        includes="${maven.pmd.includes}"
> +        excludes="${maven.pmd.excludes}">
> +
> +        <!-- FIXME: This is a bad cut and paste -->
> +        <!-- handle source modifications -->
> +        <j:forEach var="sm" items="${pom.build.sourceModifications}">
> +          <available property="classPresent"
classname="${sm.className}"/>
> +          <j:if test="${classPresent != 'true'}">
> +            <j:forEach var="exclude" items="${sm.excludes}">
> +              <exclude name="${exclude}"/>
> +            </j:forEach>
> +            <j:forEach var="include" items="${sm.includes}">
> +              <include name="${include}"/>
> +            </j:forEach>
> +          </j:if>
> +        </j:forEach>
> +      </fileset>
> +    </cpd>
> +
> +    <!-- Convert raw text report into XDOC -->
> +
> +    <j:set var="genDocs" value="${maven.gen.docs}" />
> +    <doc:text-xdoc
> +      title="CPD Report"
> +      section="CPD Report"
> +      inputFile="${maven.build.dir}/cpd-raw-report.txt"
> +      output="${genDocs}/cpd-report.xml"
> +    />
> +
> +  </goal>
> +
>  </project>
> Index: plugin.properties
> ===================================================================
> retrieving revision 1.4
> diff -u -r1.4 plugin.properties
> --- plugin.properties 22 Jul 2003 16:13:27 -0000 1.4
> +++ plugin.properties 28 Dec 2003 16:34:46 -0000
> @@ -15,3 +15,11 @@
>
>  maven.pmd.includes = **/*.java
>  maven.pmd.excludes =
> +
> +# enable/disable CPD
> +
> +maven.pmd.cpd.enable = false
> +
> +# minimum length of token sequences considered equal
> +
> +maven.pmd.cpd.minimumtokencount = 100
> Index: xdocs/properties.xml
> ===================================================================
> retrieving revision 1.2
> diff -u -r1.2 properties.xml
> --- xdocs/properties.xml 22 Jul 2003 16:13:26 -0000 1.2
> +++ xdocs/properties.xml 28 Dec 2003 16:34:47 -0000
> @@ -54,6 +54,21 @@
>              exclude any files.
>            </td>
>          </tr>
> +        <tr>
> +          <td>maven.pmd.cpd.enable</td>
> +          <td>Yes</td>
> +          <td>
> +            Enable/disable the CPD report. Defaults to "false".
> +          </td>
> +        </tr>
> +        <tr>
> +          <td>maven.pmd.cpd.minimumtokencount</td>
> +          <td>Yes</td>
> +          <td>
> +            Specifies the minimal number required to consider two
sequences of
> +            tokens identical. Defaults to "100".
> +          </td>
> +        </tr>
>        </table>
>      </section>
>    </body>
>
>


----------------------------------------------------------------------------
----


> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to